谢谢您的订阅!
当新的内容发布后您将开始接收邮件。您也可以点击邮件内的链接随时取消订阅。关闭Close

裸机云快速部署利器Ubuntu MAAS:单机安装及测试系列教程第一篇

by liam zheng on 9 April 2020

Ubuntu MAAS (Metal as a Service)可将你的物理服务器转化成云资源,实现物理服务器的自助申请,即取即用, 远程访问。MAAS提供API, CLI及WEB图形管理介面,方便地实现物理服器的操作系统自动部署,网卡绑定,VLAN,网络IP地圵管理,磁盘及文件系统高级配置(soft raid, lvm, bcache)等。

1. 测试目标及环境要求

MAAS不仅内置Ubuntu, CentOS映像, 也有相应工具支持RHEL, Windows, ESXI的映像制作。在Ubutnu的Charmed OpenStack, Charmed Kubernetes, 大数据, AI and ML等通过Juju部署及管理的解决方案中,如果涉及物理裸机,则MAAS为必需及基础组成部份。MAAS在物理服务器环境中的安装及测试通常需要一台机器当作MAAS服务器, 另外一台或多台服务器当作被管理机,不仅需要单独的网段用于DHCP及PXE,MAAS还需要通过BMC/ipmi的电源管理实现自动开关电源。MAAS在Charmed OpenStack中的典型网络构架如下:

如果在没有相应物理服务器及网络资源的情况下,如何在单台物理服务器或个人电脑上来安装及测试MAAS,为这个blog的目标。单机MAAS测试需要如下环境:

  • 1台物理服务器或个人电脑(可以是桌面电脑,笔记本电脑)或能支持KVM虚拟化的虚拟机。最少配置为2 core, 4G内存,24G可用空间;如果需要进一步测试Charmed Openstack或Charmed kurberntes, 则通常需要能支持3-5台虚拟机,则配置至少为16G内存,100G可用空间。
  • 个人电脑或服务器支持Ubuntu 18.04.4 Server或Desktop;可查看是否有相应Ubuntu认证(https://certification.ubuntu.com/)。
  • Internet访问,直接或通过proxy; proxy时的额外设置及方法请参考扩展及附录的3.3节。

2. MAAS安装测试过程及方法

以下为单机安装及测试Ubuntu MAAS过程及方法

  • 安装Ubuntu Server或Ubuntu Desktop
  • 启用lxd容器虚拟机及安装MAAS服务器
  • 配署MAAS KVM POD及虚拟机自动供给
  • OS部署及机器管理

以下为本文测试环境的主机名及网络IP分配

2.1 安装Ubuntu Server或Ubuntu桌面

安装Ubuntu通常需要下载iso, 用iso制作DVD-ROM或可启动U盘, 根据你现有环境的不同下载制作方法差别很大,比较方便的是你已有Linux环境也会使用终端命令。在现有的Linux环境下,以下方法下载及制作相应的启动U盘:

注意:在你的环境中U盘设备不一定为/dev/sdc,可以通过sudo fdisk -l从列出的磁盘分区及大小上判断,另外现有U盘内容会被全部覆盖。

$ wget -nd -c   http://releases.ubuntu.com/18.04.4/ubuntu-18.04.4-desktop-amd64.iso   
$ sudo dd if=ubuntu-18.04.4-desktop-amd64.iso of=/dev/sdc bs=1M 
$ wget -nd -c http://cdimage.ubuntu.com/releases/18.04.4/release/ubuntu-18.04.4-server-amd64.iso
$ sudo dd if=/ubuntu-18.04.4-server-amd64.iso of=/dev/sdc bs=1M  

如果需要在Windows或Mac OS环境下制作DVD-ROM或启动U盘, 请参考如下网页中的指导https://ubuntu.com/tutorials?topic=desktop

如果是服务器,通常可以通过BMC管理启动远程控制台来直接加载iso到虚拟光驱来启动安装,具体参考服务器厂家文档及指导。

一亘启动了Ubuntu Desktop/Server的安装程序,其过程及设置都相当简单及直接,如果需要详细指导及说明可参考

系统安装完成及重启之后,如果你能够登录,打开命令行终端,也能sudo切换到root权限,这个机器能访问internet, 则可以继续下面MAAS的安装及测试步骤。

2.2 启用LXD容器虚拟机及安装MAAS服务器

Ubuntu LXD是基于容器技术的操作系统虚拟化技术,提供了和虚拟机一样的用户使用体验,包含完整的系统启动程序,系统日志,网络及远程ssh登录。也俱有容器的密度及速度优势,没有自已的内核而是共享及使用主机内核。另外Ubuntu已提供了各种常用的预制映像,创建LXD容器机时直接从相应映像仓库下载。

MAAS通常及推荐直接安装及运行在主机Ubuntu Server操作系统上, 但对于Ubuntu桌面环境, 由于网络通常使用更为动态及智能的管理方法,所以在LXD虚拟机中安装及测试最为合适。另外选用LXD可以省去KVM配置及虚机安装或导入过程,一亘MAAS工作之后,你就可以使用MAAS自动编排KVM虚拟及自动部署OS。

2.2.1 LXD初始化

LXD初始化让你配置LXD服务及LXD容器所使用存储,网络,IP地址等。如下默认配置适于大多数情况,例子中命今行或输出之后的#…为解释及说明,它们不是命令输入或命令运行的输出。

ubuntu@test1:~$ sudo lxd init    #test1为测试KVM虚拟机,为MAAS自动部署; 它对应于你测试的服务器或个人电脑;
Would you like to use LXD clustering? (yes/no) [default=no]: 
Do you want to configure a new storage pool? (yes/no) [default=yes]: 
Name of the new storage pool [default=default]: 
Name of the storage backend to use (btrfs, dir, lvm) [default=btrfs]: 
Create a new BTRFS pool? (yes/no) [default=yes]: 
Would you like to use an existing block device? (yes/no) [default=no]: 
Size in GB of the new loop device (1GB minimum) [default=15GB]: 
Would you like to connect to a MAAS server? (yes/no) [default=no]: 
Would you like to create a new local network bridge? (yes/no) [default=yes]: 
What should the new bridge be called? [default=lxdbr0]: 
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: 192.168.10.1/24  
Would you like LXD to NAT IPv4 traffic on your bridge? [default=yes]: 
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: none
Would you like LXD to be available over the network? (yes/no) [default=no]: 
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]  
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]: 
ubuntu@test1:~$ 

注意: 红色加亮部份为你输入及注意的部份,以下相同。

2.2.2 创建LXD容器机并安装MAAS

ubuntu@test1:~$ lxc launch ubuntu:18.04 maas-server  
Creating maas-server
Starting maas-server
ubuntu@test1:~$ lxc list
+-------------+---------+----------------------+------+------------+-----------+
|    NAME     |  STATE  |         IPV4         | IPV6 |    TYPE    | SNAPSHOTS |
+-------------+---------+----------------------+------+------------+-----------+
| maas-server | RUNNING | 192.168.10.61 (eth0) |      | PERSISTENT | 0         |
+-------------+---------+----------------------+------+------------+-----------+
ubuntu@test1:~$ lxc exec maas-server bash
root@maas-server:~# add-apt-repository -yu ppa:maas/2.7 #2.7是当前最新版本;也提供及推荐snap包安装,但PPA
                                                        #方式可利用下载比较快的地区源
Get:1 http://ppa.launchpad.net/maas/2.7/ubuntu bionic InRelease [15.9 kB]
...  #...表示省略一行或多行输出                                                                                                                                    
Hit:7 http://cn.archive.ubuntu.com/ubuntu bionic-security InRelease                                                                                                                                        
Fetched 21.9 kB in 9s (2565 B/s)                                                                                                                                                                           
Reading package lists... Done
root@maas-server:~# apt install maas   #安装MAAS服务,包括regiond, rackd; 
...                                    #MAAS也支持群集或多个rackd服务以支持多个网段及大规模节点管理
Applying sites.0002_alter_domain_unique... OK
Setting up maas (2.7.0-8232-g.6e1dba4ab-0ubuntu1~18.04.1) ...
root@maas-server:~# exit

2.2.3 LXD网络及MAAS IP配置

MAAS通常使用自带的DHCP服务来实现PXE网络启动,所以需要禁用LXD服务中的DHCP服务。同时配置maas-server为静态IP。

ubuntu@test1:~$ lxc exec maas-server bash
root@maas-server:~# vi /etc/netplan/50-cloud-init.yaml
root@maas-server:~# cat /etc/netplan/50-cloud-init.yaml 
# This file is generated from information provided by
# the datasource.  Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    version: 2
    ethernets:
        eth0:
            dhcp4: false
            addresses: [192.168.10.10/24]
            gateway4: 192.168.10.1
            nameservers:
               addresses: [192.168.10.1]
               search: [maas]
root@maas-server:~# exit 
ubuntu@test1:~$ lxc network edit  lxdbr0
ubuntu@test1:~$ lxc network show  lxdbr0
config:
  ipv4.address: 192.168.10.1/24
  ipv4.dhcp: "false"
  ipv4.nat: "true"
  ipv6.address: none
description: ""
name: lxdbr0
type: bridge
used_by:
- /1.0/containers/maas-server
managed: true
status: Created
locations:
- none
ubuntu@test1:~$

2.2.4 设置iptables端口转发访问MAAS管理介面

设置iptables端口转发,以访问MAAS web管理介面,如果使用的是Ubuntu桌面测试,则不需要这步,因为本机浏览器可直接从本地192.168.10.1这个地址访问192.168.10.10MAAS服务器。 如果是Ubuntu Server环境,则网络上的其它桌面电脑能常不能直接访问到MAAS IP(路由原因),则通过端口转发功能来访问MAAS是最为便利的。

ubuntu@test1:~$ sudo vi /etc/rc.local
ubuntu@test1:~$ cat /etc/rc.local 
#!/bin/bash
iptables -t nat -A PREROUTING --dst 172.24.201.82 -p tcp --dport 5240 -j DNAT --to-destination 192.168.10.10:5240
exit 0
ubuntu@test1:~$ sudo chmod 755 /etc/rc.local 
ubuntu@test1:~$ sudo systemctl enable rc-local
Removed /etc/systemd/system/multi-user.target.wants/rc-local.service.
Created symlink /etc/systemd/system/multi-user.target.wants/rc-local.service → /lib/systemd/system/rc-local.service.
ubuntu@test1:~$ sudo systemctl start rc-local
ubuntu@test1:~$ sudo iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            172.24.201.82        tcp dpt:5240 to:192.168.10.10:5240
..
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  192.168.10.0/24     !192.168.10.0/24      /* generated for LXD network lxdbr0 */
ubuntu@test1:~$ 

2.2.5 MAAS管理帐号

以下方法在maas-server容器中创建MAAS管理帐户:

root@maas-server:~# maas-region createadmin 
Username: root
Password: 
Again: 
Email: root@maas-server.maas         
Import SSH keys [] (lp:user-id or gh:user-id): 
root@maas-server:~#

2.2.7 MAAS web管理介面登录及初始配置

浏览器访问MAAS web管理介面:

完成上述操作会将会看到如下截图:

下一篇我们将继续介绍MAAS管理界面登陆及初始化配置相关内容。如果您有任何关于MAAS相关的问题,欢迎与我们联系

*本教程由Canonical 云架构师Zhanglei Mao所撰写。

订阅博客文章

订阅您感兴趣的主题

在提交此表格的同时,我确认已阅读和同意的隐私声明隐私政策。

查看更多内容

NIS2 合规综合指南:第 1 部 — 了解 NIS2 及其范围

欧盟 NIS2 指令呼吁加强整个欧盟的网络安全,目前已在所有成员国生效。在这个由三部分组成的博客系列中,我将解释 NIS2 是什么,并帮助您了解它是否适用于贵公司,以及如何才能符合 NIS2。 在第一部分中,我将介绍 NIS2 是什么以及其与其前身 NIS 的区别和适用性,帮助您理解并判断它是否与您的公司相关。 NIS2简介 欧盟指令 2022/2555 或《网络和信息系统指令》(以下通常称为 NIS2 或欧盟 NIS2)是一项新的欧盟法规,适用于所有欧盟成员国,其目标是实现高水平的网络安全。该法规更新了 2016 年颁布的《网络和信息系统指令》(NIS 或 NIS1),并授权成员国对在欧盟地区提供关键服务的实体采用并严格执行更严格的网络安全要求。除非您的公司被视为小型/ […]

Ubuntu 全面支持 Azure Cobalt 100 虚拟机

Ubuntu 和 Ubuntu Pro 支持 Microsoft 的 Azure Cobalt 100 虚拟机(VM),由其首个内部设计的 64 位 Arm 处理器提供支持。凭借 Ubuntu 广泛的 Arm 兼容性,用户可以放心地使用这些虚拟机部署他们的工作负载。 全面的 Arm 软件包支持 Ubuntu 通过编译和测试该架构 Ubuntu 存档中超过 95% 的软件包,确保采用这些新虚拟机的用户获得无缝体验。这种广泛的兼容性使开发人员和企业能够运行他们喜欢的工具和应用程序,而无需进行任何妥协。 为多样化的工作负载做好准备 Azure Cobalt 100 虚拟机非常适合各种要求苛刻的工作负载,包括: 此外,这些虚拟机在支持 Anbox Cloud 部署方面表现出色,为 […]

什么是 5G Edge 和多接入边缘计算?

简介 5G 边缘通过显著增强网络性能、让计算能力更贴近用户、大幅减少延迟、实现更快更高效的服务,正在彻底改变电信行业。这一进步对于不同领域的各种应用至关重要,包括智能城市、自动驾驶汽车、医疗保健和工业自动化。 在实践中,5G 边缘指的是在网络边缘部署小型分布式数据中心和处理单元,更接近最终用户和生成数据的设备。这些边缘数据中心不仅承载一些关键的 5G 网络功能,还充当通往包括互联网在内的其他网络的网关。通过在本地处理数据处理和路由,它们能够为在地域上彼此接近的用户和设备提供响应更快、效率更高的网络服务。 另一方面,多接入边缘计算(MEC)是一种补充技术,将云计算能力引入网络边缘。MEC 允许在这些边缘位置直接部署应用和服务,从而在生成数据时快速处理数据。这减少了数据返回中 […]