高校如何利用MAAS裸金属服务器实现统一管理
高校信息化硬件服务器环境,经过多年的分批次建设,硬件设备的品牌种类繁杂,往往难以对裸技术服务器进行统一管理。
基础环境的维护人员需要快速将各类硬件厂商的服务器转化为Linux、Windows、VMware等服务系统提供给上层业务系统。
IT基础环境的维护人员需要关注的主要问题有:
1
裸机电源的管理
对于设备的硬件管理层面,首先需要考虑的是服务器电源管理,在服务器硬件底层一般提供了BMC(Baseboard Management Controller,基板管理控制器)的管理,用户可以通过IPMI(Intelligent Platform Management Interface,智能平台管理接口)协议对服务器进行远程开关机及设备硬件信息的查看检测等操作。
IPMI作为一种开放标准的硬件管理接口规范,该标准由Intel、HP、NEC、Dell和超微等公司制定,是管理基于x86架构的企业系统中所使用的外围设备采用的一种工业标准,用户可以利用IPMI监视服务器的物理健康特征,如温度、电压、风扇工作状态、电源状态等。基于IPMI接口标准,服务器厂商同时提供了接入操作系统的带外运维通道,实现系统乃至业务应用的远程调试。
在实际的生产环境中,各个批次购买的服务器品牌厂商不尽相同,而各个厂商针对自身的BMC又提供了各家自有的特定管理类软件,这就造成了无法进行集中化统一管理。而一些商业性的软件受制于商业版权问题,往往很难提供一整套覆盖所有厂商的管理系统。
2
系统快速自动化部署
比较快捷的小规模应用场景中,用户可以使用PXE(Preboot eXecution Environment,预启动执行环境)系统进行安装部署,这需要我们自动配置部署PXE环境,DHCP环境,并且由于没有专门的管理系统使得使用上有一定的局限性。针对大规模的异地,易购环境使用,是没有办法进行全局统一管理的。
商业软件在这一方面一般提供了较完备的管理功能,超级云管理套件,但此类大多是针对厂商各自硬件方面的管理,一般无法支持第三方的设备管理或易用性极差。
3
高性能及高可用性
通过网络快速部署操作系统时,往往需要较高的网络带宽,否则难以批量部署操作系统。而基础环境建设过程中往往又产生了较多的异地基础环境,一些商业产品,大多数关注于集中统一环境下的系统部署,无法或者很难做到分布式管理。
基础环境管理系统的高可用支撑着上层业务系统快速部署的可能性,所以对系统的可用性有着较高需求。
图1 底层物理环境支撑上层操作系统
综上,服务器基础环境需要一款高性能、高可用的支持分布式部署,有着统一管理入口的应用系统。MAAS(Metal As A Service,裸机即服务)是一款开源的裸金属服务器管理软件,一款开源的分布式裸机管理系统,它支持市面上多数厂商的BMC,用户也可以自行开发和自定义各种硬件设备信息。
MAAS系统简介
MAAS系统整体分为两层架构,一层是regiond,即区域控制器,还有一层是rackd,即机架控制器。小规模部署时,可以把regiond和rackd部署在同一个服务器上,大规模部署中,可分布式部署。
图2 MAAS整体架构
1
regiond 区域控制器
regiond作为系统的核心中枢,使用PostgreSQL数据库来记录存储整个系统的业务数据信息。
对于用户层面提供Web操作界面及可用运维人员自行开发的应用程序接口。
向下,为rackd提供多种接口,可存储维护rackd的各种业务信息,rackd在进行各类操作时,所需要的数据通过regiond获取并缓存,既保证了系统的高可用性,也保证了系统的易用性。
2
rackd 机架控制器
机架控制器(rackd)为一个或者多个机架提供高带宽服务。rackd本身是无状态的,不存储任何状态信息,所有状态信息都存放在regiond数据库上,rackd和regiond通过API进行数据交换。
图3 rackd信息
rackd为一个机架或者一个物理专网里的机器提供DHCP,IPMI,PXE,TFTP和其他本地服务,这样的设计既方便了系统的扩展,又提升了物理主机的部署速度。
MAAS高可用架构
MAAS是关键任务服务,提供HPC和云基础架构所依赖的基础架构协调。
在数据库级别实现区域控制器的高可用性。当rackd发生故障时,区域控制器将自动切换服务器的rackd服务,以确保对网段的服务具有高可用性。
服务器的信息数据不存储在rackd中,rackd只作为命令、数据转发节点,不参与数据通信。如图4所示,一个服务器可以用多个rackd联到regiond,一个rackd可以为一个或者多个机架提供服务。
图4 rackd高可用部署
高带宽活动(如初始操作系统安装)由分布式网关处理,也使得大规模并行部署成为可能。
自定义操作系统镜像
在MAAS系统安装部署完成后,就可以看到系统默认自带的一些Linux镜像。
图5 MAAS自带的Ubuntu镜像
例如HPE和DELL这类服务器,使用VMware发布的默认的镜像是无法正确安装的,这就需要除了默认镜像外,也支持用户自定义导入镜像。
用户自定义镜像非常方便,以制作ESXi的镜像为例,官方的仓库里已经提供了用户自定义打包CentOS及ESXi的脚本。
图6 自行导入的VMwareESXi镜像
https://github.com/canonical/packer-maas
用户创建需要在Linux环境下进行,创建镜像之前首先需要打开系统的NBD(Network Block Device,网络块设备)内核模块。NBD内核模块可以将一个远程主机的磁盘空间当作一个块设备来使用,就像一块硬盘一样。使用它可以很方便地将另一台服务器的硬盘空间增加到本地服务器上,进行操作。NBD与NFS有所不同,NFS只是提供一个挂载点供客户端使用,客户端无法改变这个挂载点的分区格式。而NBD提供的是一个块设备,客户端可以把这个块设备格式化成各种类型的分区,即可以在rackd上对即将需要部署的机器硬盘进行分区等操作。
sudo modprobe nbd
下载官方自带的打包脚本,选择需要打包的种类及版本。
cd /path/to/packer-maas/vmware-esxi
然后就可以通过使用下列的脚本进行制作了。注意:由于packer程序不同版本所定义的脚本参数不一致,这里不可以使用最新版本的packer进行打包,可以选择1.5.x版本的pakcer。经测试,这个版本的packer可以进行正常的打包。
sudo packer build ?var'vmware_esxi_iso_path=/path/to/VMware-VMvisor-Installer-6.7.0-8169922.x86_64.iso' vmware-esxi.json
导入镜像。Web上没有主动导入ISO镜像的操作界面,但是可以通过命令行进行导入镜像,导入的时候,首先需要登录到系统中,这个时候需要用户的APIKEY。
maas login admin http://10.0.1.1:5240/MAAS
登录之后,可以用下面的命令行将之前创建的硬盘镜像导入到MAAS系统里面。
maas admin boot-resources create name='esxi/6.7' title='VMwareESXi6.7' architecture='amd64/generic' filetype='ddgz' content@=vmware-esxi.dd.gz
此时,在系统的镜像页面,就可以看到用户刚才自定义的镜像环境了。由于这个操作是在regiond服务器上进行的,需要regiond将镜像同步到各个rackd上,服务器才可以使用这个镜像进行操作系统的部署。
裸机管理
对于MAAS管理的每台机器,根据其所处的状态,可以分为新增,检测,准备部署,部署,完成等若干状态。
对于MAAS管理器的每台机器,首先是新加,对于新加的一台服务器,如果MAAS可以检测到其BMC参数,则将自动检测使得可在MAAS网络上进行PXE引导的新计算机。
图7 BMC信息选择
在增加服务器时,比较重要的是就是填写对应的BMC信息。如图7所示,MAAS支持市面上大多数服务器的BMC信息,在BMC确认无误后,可以进行测试操作,这一步可详细列出服务器的处理器、内存、磁盘,网卡和加速器(如GPU)等信息,这些信息会存放在regiond的数据库当中,清单可用作机器选择的约束,针对不同的服务器设置运行用户自定义的脚本。
服务器的网络管理界面,用户还可以对服务器的每个网卡进行管理编辑,以便在安装系统部署后,自动完成网络配置。
图8 节点处于不同的状态
成果获取到服务器的各项信息后,服务器会转为“就绪”状态,此时,就可以根据BMC等信息进行的电源控制,以确保MAAS可以启动或停止机器,MAAS通过PXE安装从服务器所在的rackd来获取镜像部署。
用户点击选择部署某个操作系统之后,MAAS会通过BMC重新启动计算机并从头开始安装完整的服务器操作系统,包括配置网络接口,磁盘分区,无需任何手动干预。
图9 MAAS系统部署完成
当需要对正在运行的系统重新部署时,可以通过释放操作,将其释放回共享容量池,选择释放的同时可以对服务器硬盘数据进行完整的擦除操作。
MAAS是一款开源并且长期稳定更新的裸金属服务器管理系统,通过Linux的包管理系统可以安装2.7版本,源码已经更新到2.9版本。原生的高可用架构加上开源赋予其强大的可扩展性,使得它在基础环境部署中有着较高的适用性,希望通过本文的介绍能给更多的基础环境维护人员带来更加便利的操作。
作者:刘小锋、谭振华、王叶会、张晋恺(东北大学计算机科学与工程学院)