|
|
(35 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
− | 关键技术点:
| + | 其他功能 |
− | 1、制作livecd
| + | 1、使用远程桌面软件直接连接虚拟机 |
− | 介绍:livecd是redhat体系提供的一种镜像格式,制作的iso可以直接启动,当然也可以安装到硬盘上。现在centos、fedora每个版本发布的repo都包含了已编译出的livecd iso。例如CentOS-6.4-x86_64-LiveCD.iso。也可以到其官方网站下载
| + | (1)设置虚拟机远程连接协议 |
− | 步骤:
| + | 模板页面->选择模板编辑->图像下拉框选择连接方式,vnc协议或者spice协议 |
− | (1)执行以下命令,安装redhat openstack rdo的yum文件。注意根据需要安装的openstack版本选择合适的rpm包
| + | (2)登录服务器,使用virsh dumpxml 虚拟机id查看远程连接的ip地址和端口 |
− | yum install -y http://rdo.fedorapeople.org/openstack/openstack-grizzly/rdo-release-grizzly-2.noarch.rpm
| + | (3)使用远程桌面软件,输入虚拟机的远程协议ip地址和端口,即可远程连接虚拟机 |
− | (2)制作ks文件:可以在互联网上找一个标准的centos的ks文件作为模板,然后进行修改,将openstack的rpm包信息添加到ks文件中,则出iso时会自动安装openstack的rpm包
| + | 远程桌面软件地址请参见xxx |
− | (3)安装livecd-tools rpm包
| |
− | (4)执行以下命令出iso
| |
− | livecd-creator --config=centos-livecd-minimal.ks --fslabel=openstack-LiveCD -d --shell
| |
− | 困难:
| |
− | 实际操作过程中,碰到的最大困难是一开始找了个裁剪了的centos ks文件,结果制作的包含openstack的iso,安装后因为缺一些rpm包,出现各种莫名奇妙问题。最后解决办法是先制作一个非裁剪的centos os,然后在openstack可以正常运行前提下,再做系统裁剪瘦身
| |
− | 相关参考:
| |
− | 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
| |
| | | |
− | 2、写作脚本,将livcd安装到OS中,流程及所用到系统命令如下:
| |
− | # 找到livecd中文件系统所挂载的设备,例如ext3fs.img挂载到了/dev/loop3上
| |
− | losetup -a |grep ext3fs.img
| |
− | # 将img拷贝到目的磁盘分区中,例如/dev/vda1
| |
− | cat /dev/loop3 /dev/vda1
| |
− | # 安装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
| |
− | 到此,重启服务器就可以从硬盘启动了
| |
− | 相关参考:
| |
− | http://www.syslinux.org/wiki/index.php/EXTLINUX
| |
− | http://molinux.blog.51cto.com/2536040/548247
| |
| | | |
− | 3、配置pxe服务器,通过pxe方式批量安装openstack节点
| + | D:\git\kimchi-openstack\kimchi-openstack\src\kimchi\osinfo.py:43 |
− | 介绍:在网上看到有许多相关的集成部署工具,例如xcat、cobbler,其支持的功能大同小异。本次考虑使用cobbler。
| + | 'modern_update': dict(common_spec, disk_bus='scsi', |
− | 步骤:
| + | nic_model='virtio', |
− | 1、cobbler网上资料较多,参考网上资料即可完成cobbler的基本搭建
| + | sound_model='ich6') |
− | 2、将livecd iso部署到cobbler中作为repo
| + | |
− | 注:livce本身是不支持pxe加载的,为支持此功能,需先使用livecd-iso-to-pxeboot工具,将iso生成vmlinuz和initrd0.img文件,然后将这两个文件部署到cobbler中。
| + | if distro in modern_version_bases[arch]: |
− | 核心思想是将livced中的内存文件系统制作成ramdisk文件,就可以通过pxe流程引导启动到内存文件系统了
| + | if LooseVersion(version) >= LooseVersion( |
− | 相关命令如下:
| + | modern_version_bases[arch][distro]): |
− | iso="openstack"
| + | if arch == 'x86': |
− | livecd-iso-to-pxeboot $iso.iso
| + | params.update(template_specs[arch]['modern_update']) |
− | cobbler distro add --name=$iso --kernel=/var/www/html/iso/$iso/tftpboot/vmlinuz0 --initrd=/var/www/html/iso/$iso/tftpboot/initrd0.img
| + | else: |
− | cobbler distro edit --name=$iso --kopts='root=live:/'$iso.iso' rootfstype=auto rootflags=ro !text !lang !ksdevice installserverip='$serverIp
| + | params.update(template_specs[arch]['modern']) |
− | cobbler profile add --name=$iso --distro=$iso
| + | else: |
− | 到此,就可以通过pxe加载openstack的livced iso中。加载完毕后,可以手工执行以上介绍“将livcd安装到OS中”脚本将系统安装到硬盘中。也可以在制作iso时写入系统自启动命令自动执行安装脚本
| + | params.update(template_specs[arch]['old']) |
− | 3、cobbler默认pxe引导方式是tftp,tftp是不可靠协议,而现在制作的ramdisk文件有200多MB,如果并发安装多个主机,很可能出现引导慢或者断连的情况。在网上遍历一把,发现可以用ipxe来替代pxe。ipxe的核心理念是用http协议代替tftp协议来下载vmlinuz和initrd0.img
| + | |
− | 这里遇到很多问题,记录如下:
| + | 'window': '0'}, |
− | (1)cobbler是否支持gpxe,经网上搜索,collber已经支持gpxe,对应配置项如下:
| |
− | sed -i "s/^enable_gpxe:.*/enable_gpxe: 1/g" /etc/cobbler/settings
| |
− | (1)pxe安装虚拟机正常,但是安装服务器则一直进入不到http下载vmlinuz和initrd0.img的流程。
| |
− | 结果:定位发现服务器的网卡不支持gpxe
| |
− | (2)有的网卡能支持gpxe、有的不支持,怎样的配置能够自动判断支持情况并选择用gpxe还是pxe呢
| |
− | 结果:可以在cat /etc/dhcp/dhcpd.conf 写if...else进行逻辑判断,如果是ipxe/gpxe则返回http形式的vmlinuz和initrd0.img路径,否则返回undionly.kpxe这个pxe引导文件
| |
− | 例子如下:
| |
− | host generic_735135b1-d72f-47f2-9f1d-13c63e75dc9c {
| |
− | 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";
| |
− | }
| |
− | next-server 186.100.8.248;
| |
− | }
| |
− | 如果是ipxe、gxe则调用collber的脚本,产生http下载vmlinuz和initrd0.img的配置信息,例子如下:
| |
− | #!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
| |
− | 相关参考:
| |
− | http://www.ibm.com/developerworks/cn/linux/l-cobbler/
| |
其他功能
1、使用远程桌面软件直接连接虚拟机
(1)设置虚拟机远程连接协议
模板页面->选择模板编辑->图像下拉框选择连接方式,vnc协议或者spice协议
(2)登录服务器,使用virsh dumpxml 虚拟机id查看远程连接的ip地址和端口
(3)使用远程桌面软件,输入虚拟机的远程协议ip地址和端口,即可远程连接虚拟机
远程桌面软件地址请参见xxx