- 1. 先决条件
- 2. 网络配置
- 3. 修改SELinux配置
- 4. 安装并启动NTP
- 5. 添加CloudStack软件包源
- 6. 配置NFS共享点
- 7. 安装管理服务
- 8. 配置并安装KVM
- 9. CloudStack网页配置
1. 先决条件
1.1. 启用虚拟化
如果不开启虚拟化,将无法在CentOS中启用kvm,具体表现为执行下面的命令没有任何输出:
lsmod | grep kvm
如果开启了虚拟化,则会输出:
如何开启?在虚拟机设置中选定如下设置:
1.2. 网络适配器选择NAT模式
虚拟机设置请参考我另一篇Hadoop 3.3.1 折腾记录,下面主要说CentOS中的配置。
2. 网络配置
2.1. 设置静态IP
我们之后会禁用NetworManager
服务,所以先在有线设置
里面设置。
这里的地址取决于你的虚拟网络编辑器
,参照1.2小节。
我这里VMnet8的网关是192.168.71.2
,所以我可以填192.168.71.3
`192.168.71.127`任意一个。`192.168.71.128`192.168.71.254
是DHCP服务器的地址池,当然如果关了也能填。IPv6
记得选disable
!
注意:不要和其他虚拟机的IP地址重复。
应用之后记得手动关开一下有线网络。
可以尝试打开一些网页测试是否能联网,我是直接ping的百度:
ping baidu.com
能联网就没问题了。
这一小节的设置之后会修改位于/etc/sysconfig/network-scripts/
目录下的网络配置文件,具体的我们下面再说。
2.2. 添加网桥
首先获取root
权限,执行下面的命令并输入root
账户密码即可:
su
定位到网络配置脚本目录下:
cd /etc/sysconfig/network-scripts/
创建网桥配置文件:
vim ifcfg-cloudbr0
键入小写字母i
进入插入模式
,添加如下内容:
DEVICE=cloudbr0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPV6INIT=no
IPV6_AUTOCONF=no
DELAY=5
IPADDR=192.168.71.3 # 填你刚才设置的IP地址
GATEWAY=192.168.71.2 # 填你的网关
NETMASK=255.255.255.0
DNS1=8.8.8.8
DNS2=8.8.4.4
STP=yes
USERCTL=no
NM_CONTROLLED=no
按Esc
键退出插入模式
,键入冒号:
,输入小写字母wq
,回车,即可保存并退出
。
2.3. 手动修改网络配置文件
查看网络配置脚本目录下的配置文件:
ls
可以看到我们刚才创建的网桥配置文件和一个有线网络配置文件。
这个有线网络配置文件的名字可能会不一样,具体要查看有线设置
里的名称:
打开ifcfg-ens33
:
vim ifcfg-ens33
修改下面几项:
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
BRIDGE=cloudbr0 # 这一行要自己加上去
注意:如果是按照我的流程来做的,应该都是一样的,只需要添加最后一行就行。
好,接下来我们需要禁用掉有线设置管理器,也就是说看不到有线设置界面了。
为什么?因为我们修改的网络配置,加了网桥,只能通过network服务手动管理,但是有线设置管理器的NetworkManager服务和network服务冲突,所以不关的话会导致下面这样的错误:
禁用NetworkManager
服务并启用network
服务:
systemctl disable NetworkManager; systemctl stop NetworkManager
systemctl enable network
重启:
reboot
2.4. 修改hostname
查看当前的hostname
,一般是localhost
:
hostname --fqdn
修改hosts
文件(root权限):
vim /etc/hosts
在尾部添加如下内容(刚才设置的静态IP):
192.168.71.3 srvr1.cloud.priv
重启network
服务:
systemctl restart network
再次查看当前的hostname
,不出意外就是srvr1.cloud.priv
:
hostname --fqdn
3. 修改SELinux配置
3.1. 临时设置为宽容模式
setenforce 0
3.2. 永久设置为宽容模式
打开其配置文件:
vim /etc/selinux/config
修改成如下的样子(把enforcing
改为permissive
):
4. 安装并启动NTP
安装NTP:
yum -y install ntp
启用并开启NTP服务:
systemctl enable ntpd
systemctl start ntpd
5. 添加CloudStack软件包源
创建配置文件:
vim /etc/yum.repos.d/cloudstack.repo
添加下面的内容:
[cloudstack]
name=cloudstack
baseurl=http://download.cloudstack.org/centos/$releasever/4.15/
enabled=1
gpgcheck=0
注意:有些教程用的是4.14
版本,所以大家的界面会有些不同。
6. 配置NFS共享点
确保nfs-utils
已安装:
yum -y install nfs-utils
修改nfs配置文件(没错一开始就是空的):
vim /etc/exports
添加下面内容:
/export/secondary *(rw,async,no_root_squash,no_subtree_check)
/export/primary *(rw,async,no_root_squash,no_subtree_check)
诶?这两个目录我们都没有啊,下面就要创建这两个目录:
mkdir -p /export/primary
mkdir /export/secondary
注意:参数-p
是确保每一级目录没有就创建,而不报No such file or directory
。
CentOS 7.x默认使用的是NFSv4,而NFSv4需要确保其配置的domain与我们的domain(cloud.priv)要匹配,所以需要配置/etc/idmapd.conf
文件:
vim /etc/idmapd.conf
取消注释并修改下面的一项:
Domain = cloud.priv
然后我们需要修改/etc/sysconfig/nfs
文件:
vim /etc/sysconfig/nfs
将下面的这些项取消注释(第4行需要添加):
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
RQUOTAD_PORT=875
STATD_PORT=662
STATD_OUTGOING_PORT=2020
关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
启动相关服务:
systemctl enable rpcbind
systemctl enable nfs
systemctl start rpcbind
systemctl start nfs
7. 安装管理服务
由于CentOS7不再提供MySQL
的二进制程序,所以需要手动下载社区包并安装:
建议在你的下载文件夹中打开终端,获取root权限,再执行下面的指令:
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
安装mysql-server
:
yum -y install mysql-server
修改/etc/my.cnf
文件:
vim /etc/my.cnf
添加下面的内容到[mysqld]
下面:
innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=350
log-bin=mysql-bin
binlog-format = 'ROW'
启用并开启MySQL
服务:
systemctl enable mysqld
systemctl start mysqld
安装MySQL Connector
(Python版):
yum -y install mysql-connector-python
安装CloudStack
管理服务:
yum -y install cloudstack-management
注意:这一步有人快有人慢,慢慢等吧~
查看可用的Java
版本:
alternatives --config java
确保java-11
前面有+
号(表示已选中),不是的话就输入2
回车:
初始化数据库:
cloudstack-setup-databases cloud:password@localhost --deploy-as=root
初始化服务:
cloudstack-setup-management
下载并解压安装系统VM模板:
/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt \
-m /export/secondary \
-u https://download.cloudstack.org/systemvm/4.15/systemvmtemplate-4.15.1-kvm.qcow2.bz2 \
-h kvm \
-F
8. 配置并安装KVM
安装依赖库:
yum -y install epel-release
yum -y install cloudstack-agent
8.1. 配置QEMU VNC
打开配置文件:
vim /etc/libvirt/qemu.conf
将下面这行取消注释(有没有双引号都一样):
vnc_listen=0.0.0.0
8.2. 配置Libvirt
打开配置文件:
vim /etc/libvirt/libvirtd.conf
将下面的几项取消注释或修改:
listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
mdns_adv = 0
auth_tcp = "none"
打开配置文件:
vim /etc/sysconfig/libvirtd
将下面这行取消注释:
LIBVIRTD_ARGS="--listen"
重启libvirt
服务:
systemctl restart libvirtd
再次查看kvm
服务有没有启动:
lsmod | grep kvm
9. CloudStack网页配置
9.1. 登录图形界面
打开浏览器,访问http://localhost:8080/client
,进入CloudStack管理界面。
注意:其实输入localhost:8080
就够了。
初始用户名:admin
初始密码:password
域:留空,不要填
9.2. 资源域Zone设置
点击Continue with installation
:
此时,它会要求你更改密码。
9.2.1. 资源域类型
资源域类型
选高级
,不要
勾选安全组
,然后点击下一步
:
9.2.2. 资源域详细信息
名称:Zone1
IPv4 DNS 1:8.8.8.8
IPv4 DNS 2:8.8.4.4
内部 DNS 1:8.8.8.8
内部 DNS 2:8.8.4.4
虚拟机管理服务:KVM
其他项不需要管,填完直接下一步
。
9.2.3. 物理网络
不需要修改,直接下一步
。
注意:没看到下一步
的建议往下划一划……
9.2.4. 公共流量
网关:192.168.71.2
(填你自己的IP)
网络掩码:255.255.255.0
VLAN/VNI:留空
起始 IP:192.168.71.11
结束 IP:192.168.71.20
点击添加
,点击下一步
。
9.2.5. 提供点
提供点名称:Pod1
预留的系统网关:192.168.71.2
预留的系统网络掩码:255.255.255.0
起始预留系统 IP:192.168.71.21
结束预留系统 IP:192.168.71.30
9.2.6. 来宾流量
VLAN/VNI 范围:100
-200
9.2.7. 群集
群集名称:Cluster1
9.2.8. 主机
主机名称:192.168.71.3
用户名:root
密码:这里填你的root
密码
标签不要填,留空。
9.2.9. 主存储
名称:Primary1
范围:群集
协议:nfs
服务器:192.168.71.3
路径:/export/primary
存储标签不要填,留空。
9.2.10. 二级存储
提供程序:NFS
名称:Secondary1
服务器:192.168.71.3
路径:/export/secondary
9.3. 启动资源域
注意:点击启动资源域
之后,如果你有哪边填的有问题,它会给你指出来让你去改。
9.3.1. 故障排除
当它执行到正在添加主机
这一步时,会需要数分钟。
但是,我们这边几个宿舍都在第一次到达这步时卡了十几分钟甚至几十分钟还没好,还有人是直接报unable to add the host
。
后来,经过我们的一些测试,有下面两个解决方法:
方法 1:直接刷新网页,再次进入CloudStack
控制板,这时候它会显示一个没有配置完成的Zone1
的概况,也就是像这样:
然后点击基础架构
,再点击资源域
,然后按照上面的步骤再添加一个Zone2
就行。
注意:添加完Zone2
之后别忘了在控制板那边切换成Zone2
,或者在资源域
在那边把Zone2
移到Zone1
上面。
方法 2:关掉网页,再次初始化cloudstack
:
cloudstack-setup-databases cloud:password@localhost --deploy-as=root
cloudstack-setup-management
然后再按照这一节最开始配置资源域就行了。
注意:期间可能会有SELinux警报
,不用去管。