新的单位使用了cloudstack作为云平台的基础架构,老规矩,通过动手搭建一个实验环境熟悉一下cloudstack的基本的组件。
找到官网的官方安装手册,网址如下:
http://docs.cloudstack.apache.org/en/4.11.2.0/quickinstallationguide/qig.html
可以看到cloudstack的版本更新应该是挺慢的,截止到现在(2019年3月)的最新版本是4.11.2.0 ,使用的基础OS是Centos6.8 ,首先下载Centos6.8 ,网址如下:
http://mirrors.kernel.org/centos/6/isos/x86_64/
根据要求,下载的是minimal 版本。
首先不要着急动手,先通读一遍上面的安装手册,基本的思路还是首先安装基本的OS,然后进行selinux、ntp、nfs等基础配置,配置Cloudstack的安装源开始安装Cloudstack组件,安装mariadb数据库,下载管理镜像,然后开始配置Cloudstack 。总体感觉安装部署方面应该比Openstack要简单一些,因为Cloudstack的相关组件是直接通过下载标准模板镜像,通过虚拟机完成的,我个人感觉这种方式是很好的,类似于Openstack的Kolla ,容器化安装,简化了安装,并提高了整个系统的灵活性。
开始的时候使用自己的工作笔记本,使用VMWare workstation14 ,虚拟机配置4C,4G内存,1个网卡,1块200G的硬盘,但是装完之后发现启动卡住不动了,算了,还是使用PVE来弄,同样的虚拟机配置,配置4C,4G内存,1个网卡,1块200G的硬盘 。
安装过程不赘述,详见上面那个官网的安装手册,记录一下碰到的坑和需要注意的地方。
1、官网里面最新版本是4.11 ,对应的操作系统版本是centos6.8 ,文章里面对应的centos下载链接是centos6.10 ;
2、安装到 cloudstack-management 这条命令的时候,报错找不到一个安装包的位置:
# yum -y install cloudstack-managementhttp://download.cloudstack.org/centos/6/4.11/repodata/c696ac24f6d36ebf0ea76e44d12f519601521b6cc659d225f472a9e4fbd3c820-filelists.sqlite.bz2: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
Trying other mirror.
/etc/yum.repos.d/cloudstack.repo 中的baseurl改为:
baseurl=http://download.cloudstack.org/centos/6/4.12/
3、安装cloudstack-management 的时候,速度很慢,使用了自己搭建的上网代理。
4、主机名需要设置长主机名,注意修改 /etc/sysconfig/network 以及 /etc/hosts 文件中的主机名为长主机名,否则 在执行 cloudstack-setup-management 命令的时候会报错。
5、由于要使用到kvm模块,pve虚拟机需要设置支持cpu虚拟化,设置方法如下:(如果不是使用proxmoxVE,这一块可以略过)
物理机pve上执行:root@pve:~# qm showcmd 110
/usr/bin/kvm -id 110 -name pve-1 -chardev 'socket,id=qmp,path=/var/run/qemu-server/111.qmp,server,nowait' -mon 'chardev=qmp,mode=control' -pidfile /var/run/qemu-server/111.pid -daemonize -smbios 'type=1,uuid=d9eb0729-f0ee-4176-836d-308b70d13754' -smp '3,sockets=1,cores=3,maxcpus=3' -nodefaults -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' -vga std -vnc unix:/var/run/qemu-server/111.vnc,x509,password -cpu kvm64,+lahf_lm,+sep,+kvm_pv_unhalt,+kvm_pv_eoi,enforce -m 12000 -device 'pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e' -device 'pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f' -device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' -device 'usb-tablet,id=tablet,bus=uhci.0,port=1' -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3' -iscsi 'initiator-name=iqn.1993-08.org.debian:01:b48afece2d1' -drive 'file=/var/lib/vz/template/iso/proxmox-ve_5.2-1.iso,if=none,id=drive-ide2,media=cdrom,aio=threads' -device 'ide-cd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=200' -device 'virtio-scsi-pci,id=scsihw0,bus=pci.0,addr=0x5' -drive 'file=/dev/pvevg2/vm-111-disk-7,if=none,id=drive-scsi0,format=raw,cache=none,aio=native,detect-zeroes=on' -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,bootindex=100' -drive 'file=/dev/pvevg2/vm-111-disk-2,if=none,id=drive-scsi1,format=raw,cache=none,aio=native,detect-zeroes=on' -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=1,drive=drive-scsi1,id=scsi1' -drive 'file=/dev/pvevg2/vm-111-disk-3,if=none,id=drive-scsi2,format=raw,cache=none,aio=native,detect-zeroes=on' -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=2,drive=drive-scsi2,id=scsi2' -drive 'file=/dev/pvevg2/vm-111-disk-6,if=none,id=drive-scsi3,format=raw,cache=none,aio=native,detect-zeroes=on' -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=3,drive=drive-scsi3,id=scsi3' -netdev 'type=tap,id=net0,ifname=tap111i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown,vhost=on' -device 'virtio-net-pci,mac=76:60:17:9D:6A:FF,netdev=net0,bus=pci.0,addr=0x12,id=net0,bootindex=300' -netdev 'type=tap,id=net1,ifname=tap111i1,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown,vhost=on' -device 'virtio-net-pci,mac=6A:93:EB:0E:A8:84,netdev=net1,bus=pci.0,addr=0x13,id=net1,bootindex=301'
找到“-cpu kvm64,+lahf_lm,+sep,+kvm_pv_unhalt,+kvm_pv_eoi,enforce”这部分,在enforce前面加“+vmx,”参数如下:
-cpu kvm64,+lahf_lm,+sep,+kvm_pv_unhalt,+kvm_pv_eoi,+vmx,enforce
将修改后的命令保存到一个脚本110.sh ,并且 chmod +x 110.sh
执行:qm stop 110 停止虚拟机后,再执行上面修改后的命令 ./110.sh 。
虚拟机启动后,ssh进入,执行 grep vmx /proc/cpuinfo 查看是不是有输出,如下:
root@pve-1:~# grep vmx /proc/cpuinfo flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc nopl xtopology cpuid pni vmx cx16 x2apic hypervisor lahf_lm cpuid_fault pti tpr_shadow vnmi flexpriority ept vpid
flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc nopl xtopology cpuid pni vmx cx16 x2apic hypervisor lahf_lm cpuid_fault pti tpr_shadow vnmi flexpriority ept vpid
flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc nopl xtopology cpuid pni vmx cx16 x2apic hypervisor lahf_lm cpuid_fault pti tpr_shadow vnmi flexpriority ept vpid
表示已经支持虚拟嵌套。
安装完cloudstack-management 和 cloudstack-agent ,并且设置完kvm 之后,开始配置cloudstack:
使用账号admin ,密码 password 登录,登录进去之后会提示修改这个密码,比如改为 cloudstack ,之后根据提示分别设置zone、pod、cluster、host的信息,之后,系统会自动开始进行初始化操作,如下:
可以看到,初始化过程中要生成的2个虚拟机都没有成功,估计是和下载的模板版本不匹配导致,官网安装步骤里面下载的模板还是4.6版本,安装的是4.12版本,重新下载最新的4.11.1.2版本的模板:
/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /export/secondary -u http://download.cloudstack.org/systemvm/4.11/systemvmtemplate-4.11.2-kvm.qcow2.bz2 -h kvm -F
注:上面下载的模板存放在/export/secondary 目录下。
通过web界面将二级存储删除重建,关闭防火墙,同时重新启动 cloudstack-management 服务 。之后,等待系统重建console proxy VM 和Secondary Storage VM 两个系统虚拟机 。之后正常,如下:
创建虚拟机:
控制台:
4c 4G内存资源用完了:
关闭,重新分配了8核CPU 8G内存 ,再重启,资源没那么紧张了。
总结:
整个安装过程比预想的还简单,概念清晰,感觉比openstack更友好。虚拟机的使用和管理也要比openstack要方便,存储管理很灵活,网络管理还没来得及测试。总之,整体比openstack要好用,但是好像还没看到相关PAAS层的东西,比如类似openstack的大数据组件sahara、对象存储组件swift、文件系统manila等,也正常,cloudstack官网本身也说是提供IAAS层的。
但如果纯粹作为iaas层虚拟来使用的话,感觉还是不如proxmoxVE好用。对于各个虚拟化的纳管来说,可能相对于proxmoxVE更强一些,比如对于同时有VMWare虚拟化、kvm虚拟化以及xen虚拟机的环境来说,cloudstack可以同时进行纳管,这一块还没有经过实际测试,使用起来不知道是不是方便 。
多一个选择总是好的,都是好东西,看不同的场景,可以有不同的选择。