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

  1. 博客
  2. 文章

liam zheng
9 April 2020

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


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所撰写。


查看更多内容

使用 MAAS 部署 VMware 虚拟机管理程序

多数现代数据中心本身均为异构架构。VMware 环境常与容器平台、数据库及其他裸机业务负载共存,多年运行于同一套硬件之上。服务器一次性采购,但会随业务需求变化调整承载业务。 然而,ESXi(VMware 虚拟机管理程序)的配置通常由独立流程负责。主机通过 VMware 工具、自定义脚本或专为将部署 ESXi...

Canonical Managed Kubeflow AI 运维平台现已登陆 Microsoft Azure Marketplace

Ubuntu 发行商 Canonical 近日宣布,其 Managed Kubeflow 服务已在 Microsoft Azure Marketplace 正式上线,实现全面商用(GA)。该解决方案允许 AI 团队在自有云租户环境内获得一个完全托管、可直接投入生产的 MLOps 平台。 上游 Kubeflow...

全新工具 Workshop 上线:一条命令即可在 Ubuntu 中启动沙箱开发环境

开发者如今可在智能体 AI 等前沿工作流程中,获得环境统一、可复现的开发体验 Canonical 正式发布 Workshop,该解决方案可通过单条命令快速启动开发环境。只需配置一次,此开发环境即可在多台设备上复现使用。这意味着各类开发设备与部署流水线可保持统一工作流程,并可大幅减少管理依赖关系所花费的时间。...

Canonical 技术案例 – 彻底解决 12 年老旧代码中的 Linux 性能漏洞

部分支持案例处理起来十分简单。另一些案例则要深入老旧遗留代码,一处逻辑缺陷就能悄无声息让常规指令引发严重性能故障。本系列将介绍 Canonical 技术支持与持续工程团队如何协作,排查、修复并向上游提交仅靠常规故障排查无法解决的疑难问题。在第二篇帖子中,libnss-db 中一处存在 12 年之久的漏洞导致 getent...