概述
关于如何安装部署openstack,各个大小公司纷纷推出自己的方案和产品,例如fuel、trippleO、RDO、devstack等等。试用了RDO等工具后,也萌生了实现一个自研工具的想法(顺便弥补这一块知识的空白),现将思路及过程记录如下。
需求
1、支持灵活的安装部署方式(单台host或者批量host)和多种安装介质(物理机或者虚拟机)
2、安装部署过程用户体验好
(1)安装工时短
(2)并发安装服务器数量多
(3)用户参与环节尽量少
3、兼容性好
(1)可以支持业界主流服务器
(2)跨vlan部署
总体思路
步骤 | 备选方案 | 技术点 |
制作安装源 | 备选1:标准cd/dvd形式linux系统iso文件+RPM包形式openstack源(例如centos.iso+yum openstack源) 备选2:livced形式iso,openstack已安装到iso中 本方案选择备选2,操作系统采用centos 6.5,openstack采用H版本 |
1、openstack rpm包制作:复用rdo h版本openstack的spec文件,制作openstack的rpm包 2、制作livecd:livecd-tools开源工具、kickstart文件定制(操作系统裁剪) |
iso安装 | livecd的安装不能使用anaconda安装工具,需要自行写作脚本程序(shell或python等),脚本大致流程如下: (1)执行安装脚本,入参为目的安装磁盘(例如/dev/sda) (2)安装脚本完成清理磁盘工作,物理卷(pv)、卷组(vg)、逻辑卷(lv)、磁盘分区等 (3)安装脚本完成创建分区的工作(例如创建两个分区/dev/sda1、/dev/sda2,磁盘分区选择mbr类型,/dev/sda1设置为boot类型分区) (4)安装脚本找到根文件系统文件所绑定的loop设备(例如/dev/loop3),将其内容复制到/dev/sda1 (5)安装脚本生成启动引导程序(例如extlinux),确保后续系统可以从硬盘启动 (6)安装脚本完成其他工作,例如设置root账户密码,将剩余磁盘空间生成vg等 |
1、脚本实现参考ovirt-node开源软件代码 2、系统引导相关知识 (1)启动引导程序,grub、extlinux (2)磁盘分区格式,mbr、gpt、EFI 3、磁盘相关工具,parted、fdisk、blkid、pvcreate等 |
pxe安装 | pxe服务器搭建 备选1:使用tftp、dhcp等自行搭建pxe服务器 备选2:选择一个业界成熟的具备pxe能力的安装配置工具 本方案选择cobbler开源工具
制作的livcecd能够支持pxe流程 备选1:使用livecd-iso-to-pxe工具将iso封装成vmlinuz和initrd.img(200多MB)两个文件,可以通过标准pxe流程引导 备选2:制作一个mini镜像(50MB以内)用于pxe引导,mini镜像中植入安装脚本,安装脚本启动后,再将真正的镜像文件下载到光盘镜像环境并安装 本方案当前已实现备选1,后续会尝试备选2
pxe能支持大规模批量部署,可靠性好 1、使用以上“制作的livcecd能够支持pxe流程”备选1时,initrd.img大概200-300MB,pxe使用tftp协议不可靠,故需要使用gpxe 2、使用以上“制作的livcecd能够支持pxe流程”备选2时,需要下载镜像到本地,可以引入p2p技术,加速下载过程
pxe能够跨vlan部署服务器 交换机配置dhcp中继、dhcp服务配置为不同vlan服务器分配对应网段ip |
1、cobbler的配置和使用 2、mini镜像的运行机制 3、gpxe机制及配置 4、p2p功能(bittorrent开源软件)的引入 5、交换机dhcp配置
|
配置 | 本方案需求是解决第一次openstack节点的配置问题,使用业界成熟的配置工具即可,例如puppet、salt等 | salt开源软件 |
关键技术点
1、制作livecd
介绍:
livecd是redhat体系提供的一种镜像格式,制作的iso可以直接启动,当然也可以安装到硬盘上。现在centos、fedora每个版本发布的repo都包含了已编译出的livecd iso。例如CentOS-6.4-x86_64-LiveCD.iso。也可以到其官方网站下载
步骤:
(1)执行以下命令,安装redhat openstack Grizlly的yum文件
yum install -y http://rdo.fedorapeople.org/openstack/openstack-grizzly/rdo-release-grizzly-2.noarch.rpm
(2)制作ks文件:可以在互联网上找一个标准的centos的ks文件作为模板,然后进行修改,将openstack的rpm包信息添加到ks文件中,则出iso时会自动安装openstack的rpm包