1. 背景:
近期由于项目和个人学习得需求,开始接触到Cloudstack,虽然云计算概念在大学刚毕业的时候就已经略有耳闻,但是由于工作原因,也一直没有了解,下班后想自己折腾下cloudstack,便开始在虚拟机上开始研究;
2. 软件准备
1. Workstation 12.0
2. Centos7.2(用于安装cloudstack)
3. Xenserver 6.5的iso镜像+Xenserver 6.5的补丁+Xencenter6.5
4. mysql 5.7社区版
3. 系统容量规划
1. cloudstack-management:内存1.5G,CPU2核,硬盘2个(20G+50G)
2. Xenserver:内存2G,CPU2核,硬盘2个(20G+50G)
PS:由于本人的笔记本最大只支持8G,所以这里得配置开起来都到90%了,建议有能力的都加高配置;
4实施安装
4.1 Centos7.2安装,操作系统的安装,这个就不在本文详细介绍;
4.2 使用workstation安装Xenserver 6.5
4.2.1 workstation创建两台虚拟机,配置如第3点规划,重要的是两台配置必须一样,然后必须开启虚拟化功能;
4.2.2 开始安装Xenserver 6.5,安装可以参考该链接,系统就安装在20G的硬盘即可
4.3 为Xenserver6.5打补丁
可以按照官网的打补丁方式,我这边直接将补丁文件上传到了xenserver,使用脚本进行安装 ./xs_patcher.sh
4.4 初始化本地硬盘,否则无法使用本地模式
查看硬盘
[root@xenserver-1 ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sdb
初始化硬盘(host-uuid使用xe host-list获得)
xe sr-create content-type=user device-config:device=/dev/<sdx> host-uuid=<62018586-4e8c-441b-ad6b-6217042d7dd5> name-label="Local Storage 2" shared=false type=lvm
进行上述操作,就可以将新建的硬盘进行sr的初始化;
初始化后,可以使用命令查询xe sr-list
[root@xenserver-1 ~]# xe sr-list
....
.....
uuid ( RO) : b543c967-d60c-d1b7-22b8-a34627fc87d5
name-label ( RW): Local Storage 2
name-description ( RW):
host ( RO): xenserver-1
type ( RO): lvm
content-type ( RO): user
在xencenter也是可以看到识别出来一个local storage 2
4.5 使用Xencenter加载Xenserver
PS:Xencenter是citrix的一款图形化管理Xenserver的软件,这样可以方便在图形化对Xenserver进行一些基本配置,而不用使用特性xe命令进行操作xenserver
4.2.5.1 添加两台Xenserver到同一个池中,第一台添加的Xenserver将作为Master
添加过程中,发现无法将Xenserver2添加进到pool,看Xencenter得报错,提示无法访问Xenserver2,登录任意一台Xenserver,互相ping对方,发现都是不通的;
通过抓包,发现一些怪异的地方
[root@xenserver-1 ~]# tcpdump -i eth0 host 10.0.0.254 and 10.0.0.253
tcpdump: WARNING: eth0: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
08:55:19.311911 IP 10.0.0.254 > 10.0.0.253: ICMP echo request, id 27419, seq 139, length 64
08:55:19.312621 IP 10.0.0.253 > 10.0.0.254: ICMP echo reply, id 27419, seq 139, length 64
08:55:20.312036 IP 10.0.0.254 > 10.0.0.253: ICMP echo request, id 27419, seq 140, length 64
[root@xenserver-1 ~]# tcpdump -i xenbr0 host 10.0.0.254 and 10.0.0.253
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on xenbr0, link-type EN10MB (Ethernet), capture size 65535 bytes
08:53:51.196126 IP 10.0.0.254 > 10.0.0.253: ICMP echo request, id 27419, seq 51, length 64
08:53:52.196654 IP 10.0.0.254 > 10.0.0.253: ICMP echo request, id 27419, seq 52, length 64
08:53:53.196030 IP 10.0.0.254 > 10.0.0.253: ICMP echo request, id 27419, seq 53, length 64
[root@xenserver-1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
4: xenbr0: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether 00:0c:29:4d:ad:2b brd ff:ff:ff:ff:ff:ff
inet 10.0.0.254/24 brd 10.0.0.255 scope global xenbr0
valid_lft forever preferred_lft forever
[root@xenserver-1 ~]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0C:29:4D:AD:2B
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4917 errors:0 dropped:0 overruns:0 frame:0
TX packets:2958 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3305879 (3.1 MiB) TX bytes:5085020 (4.8 MiB)
可以看到,安装好Xenserver后,会多了一个虚拟网卡xenbr0,并且将eth0的地址赋予了xenbr0;
可是抓包的时候,却发现ping包是发送到了两个网卡,但是回包却是用eth0(没有IP地址)网卡,而不是用Xenbr0;后来研究了好久,包括重启,重装等,都无法解决问题,最终在xenserver中启用emerged network重新配置网卡信息,重启后即可。。反正是挺奇怪的;
配置enter就会自动重启,重启完就可以互相ping通了,此时就能把两台xenserver添加到同一个pool内
4.6 添加网络标签,后期为了能在cloudstack中指定流量转发;
4.7 安装Cloudstack-management
PS:强烈建议按照官网的安装手册进行,不要按自己的想法理所当然去做,当然,我按照官网的也是不行,郁闷~~~,要修改的地方我会指出;
特别注意的地方:
1. MYSQL我是直接使用yum源安装,mysql官网有说明
2. yum install mysql-community-server我是安装了社区版,没有按照官网下载的是完整版,因为我安装完整版本的时候,启动mysql总是会报错,但是mysql日志却是空的。。折腾了好久,找不到解决方案就换成了社区版,直接start就可以了;
3. cloudstack文档里面的NFS配置文件/export *(rw,async,no_root_squash,no_subtree_check),我发现不能这么写,必须要写详细路径/export/secondary *(rw,async,no_root_squash,no_subtree_check)
4. cloudstack的防火墙建议关闭,否则nfs挂在很多问题
5. 我原计划并不是使用本地存储模式的,而是使用cloudstack-management同时作为主存储(/export/primary)和二级存储(/export/secondary),但是在cloudstack添加主存储无论如何也加不进去,后来放弃改成本地存储;
6. cloudstack-management初始化使用cloudstack-setup-management,如果是tomcat7的就必须要为
cloudstack-setup-management --tomcat7来初始化,然后在使用systemctl start cloudstack-management启动服务,但是我发现只要重启了cloudstack,http页面就一直无法显示,端口8080都监听了,必须要用cloudstack-setup-management --tomcat7再次初始化后,页面才可以打开;未解之谜;
4.8 http配置cloudstack
4.8.1 使用http://x.x.x.x:8080/client访问cloudstack的主界面,初始用户名admin和密码password
4.8.2 添加zone
选择高级网络
注意要选择本地模式
编辑流量标签,这里填xencenter修改后的标签
根据规划,配置公共网络、pod、guest网络
设置集群名称
添加host主机
设置二级存储,这里路径要写/export/secondary,不能加主机,cloudstack4.01版本是需要加地址的,当时按照4.01添加了主机地址,发现二级存储虚拟机无法启动个,看日志发现路径不对才发现这个问题
最后执行即可
等cloudstack执行完,检查dashboard和系统虚拟机状态(都为running),那么就说明没问题了;