openstack安装部署的一种实现方式

  • Post author:
  • Post category:IT
  • Post comments:0评论

概述

关于如何安装部署openstack,各个大小公司纷纷推出自己的方案和产品,例如fuel、trippleO、RDO、devstack等等。试用了RDO等工具后,也萌生了实现一个自研工具的想法(顺便弥补这一块知识的空白),现将思路及过程记录如下。

需求

1、支持灵活的安装部署方式(单台host或者批量host)和多种安装介质(物理机或者虚拟机)

2、安装部署过程用户体验好

(1)安装工时短

(2)并发安装服务器数量多

(3)用户参与环节尽量少

3、兼容性好

(1)可以支持业界主流服务器

(2)跨vlan部署

流程

1、 制作ISO

操作系统采用centos 6.5,openstack采用H版本,使用livecd-creator开源软件制作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包

(3)安装livecd-tools rpm包

(4)执行以下命令出iso

livecd-creator --config=centos-livecd-minimal.ks --fslabel=openstack-LiveCD -d --shell

2、制作将livecd安装到硬盘并支持从硬盘启动的脚本

livecd的安装不能使用anaconda安装工具,需要自行写作脚本程序(shell或python等),脚本大致流程如下:

(1)找到livecd中文件系统所挂载的设备,例如ext3fs.img挂载到了/dev/loop3上

losetup -a |grep ext3fs.img

(2)将img拷贝到目的磁盘分区中,例如/dev/vda1

cat /dev/loop3 /dev/vda1

(3)安装bootloader,用的是extlinux,这样下次就可以从硬盘启动了

cat /usr/share/syslinux/mbr.bin > dev/vda #写入mbr 

 blkid -o value -s UUID /dev/vda1 #生成分区的uuid 

 mkdir /mnt/tmp #生成临时目录 

 mount  /dev/vda1 /mnt/tmp #将根分区mount到临时目录 

 extlinux -i /mnt/tmp/boot/ #使用extlinux工具制作启动目录 

 extlinux --clear-once /mnt/tmp/boot/ 

 cp -rf /dev/.initramfs/live/isolinux/* /mnt/tmp/boot/ 

 mv /mnt/tmp/boot/isolinux.cfg /mnt/tmp/boot/extlinux.conf 

 sed -i 's/live:CDLABEL=.* /UUID=uuid /' /mnt/tmp/boot/extlinux.conf #uuid是上面生成的 

 sed -i 's/ ro / /' /mnt/tmp/boot/extlinux.conf 

 sed -i 's/ rd.live.image / /' /mnt/tmp/boot/extlinux.conf 

 umount /dev/vda1

3、 支持pxe批量安装

(1) pxe服务器搭建

关于集成pxe的部署工具,在开源社区有很多,例如xcat、cobbler,工具各有特点,本次考虑使用cobbler

(2) 制作的livcecd能够支持pxe流程

livecd本身是不支持pxe加载的,为支持此功能,需先使用livecd-iso-to-pxeboot工具,将iso生成vmlinuz和initrd0.img文件,然后将这两个文件部署到cobbler中。 其核心思想是将livced中的内存文件系统制作成ramdisk文件,就可以通过pxe流程引导启动到内存文件系统了。相关命令如下:

iso="openstack" #变量定义 

livecd-iso-to-pxeboot $iso.iso #生成vmlinuz和initrd0.img文件

#部署vmlinuz和initrd0.img文件

cobbler distro add --name=$iso --kernel=/var/www/html/iso/$iso/tftpboot/vmlinuz0 --initrd=/var/www/html/iso/$iso/tftpboot/initrd0.img 

cobbler distro edit --name=$iso --kopts='root=live:/'$iso.iso' rootfstype=auto rootflags=ro !text !lang !ksdevice installserverip='$serverIp

cobbler profile add --name=$iso --distro=$iso

(3) pxe能支持大规模批量部署,可靠性好

使用livecd-iso-to-pxe工具将iso封装成vmlinuz和initrd.img(200多MB)两个文件,使用pxe(tftp)流程大规模批量部署可能性能及可靠性存在问题。故配置使用gpxe,使用http协议替代tftp协议下载vmlinuz和initrd.img

步骤:

1、配置cobbler打开gpxe开关,配置项为enable_gpxe

2、重启服务器/虚拟机,观察是否会变更为进入gpxe加载流程

注意:部分网卡型号可能不支持gpxe特性,导致无法进入http下载vmlinuz和initrd0.img的流程。可通过配置DHCP服务,达到支持gpxe的服务器使用gpxe加载,否则使用pxe加载的效果

 /etc/dhcp/dhcpd.conf中配置举例如下。

           hardware ethernet 00:16:6D:AD:86:33;
             if exists user-class and option user-class = "iPXE" {
                   filename "http://186.100.8.248/cblr/svc/op/gpxe/system/735135b1-d72f-47f2-9f1d-13c63e75dc9c";
             } else if exists user-class and option user-class = "gPXE" {
                   filename "http://186.100.8.248/cblr/svc/op/gpxe/system/735135b1-d72f-47f2-9f1d-13c63e75dc9c";
             } else {
                  filename "undionly.kpxe";
             }
 访问http://186.100.8.248/cblr/svc/op/gpxe/system/735135b1-d72f-47f2-9f1d-13c63e75dc9c地址可发现cobbler产生的动态配置如下:

 !gpxe
 kernel http://186.100.8.248:80/cobbler/images/allinone/vmlinuz0 imgargs vmlinuz0 rootflags=ro root=live:/allinone.iso   installserverip=186.100.8.248 rootfstype=auto kssendmac ks=http://186.100.8.248/cblr/svc/op/ks/system/735135b1-d72f-47f2-9f1d-13c63e75dc9c initrd http://186.100.8.248:80/cobbler/images/allinone/initrd0.img boot

(4) pxe能够跨vlan部署服务器

交换机配置dhcp中继、dhcp服务配置为不同vlan服务器分配对应网段ip

4、 Openstack环境配置

使用业界成熟的配置工具即可,例如puppet、salt等 salt开源软件

相关参考:

https://fedoraproject.org/wiki/How_to_create_and_use_a_Live_CD/zh-cn

http://www.centos.org/docs/5/html/Installation_Guide-en-US/s1-kickstart2-file.html

http://jgershater.ulitzer.com/node/2701636?page=0,1

http://www.syslinux.org/wiki/index.php/EXTLINUX

http://molinux.blog.51cto.com/2536040/548247

http://www.ibm.com/developerworks/cn/linux/l-cobbler/

发表回复