目录
基本介绍
部署准备
开始部署
1.查看并修改虚拟机网络
2.创建manager节点
2.配置manage节点
2.克隆为agent节点
3.配置NFS服务
4.安装MySQL服务
5.设置网络桥接
6.安装CloudStack
(1)网络源
(2)本地源
7.配置CloudStack
8.创建资源域
9.注册ISO,添加实例,创建模板
可能遇到的问题
本文旨在介绍如何在本机虚拟机里部署一套CloudStack环境的测试流程,包括一台管理节点(manager)和一台计算节点(agent)。其中,manager节点会搭建作为二级存储的NFS服务,agent会搭建用于镜像下载的nginx服务器。
本文使用KVM创建虚拟机,通过libvirtd管理虚拟机。
最后一个部分,是常见的问题与解决方案,会持续更新一段时间,有问题可以自行去寻找。
软件安装:
VMWare Workstation,XShell
资源下载:
CentOS-7-x86_64-Minimal-1810.iso //系统镜像
cloudstack-common-4.13.1.0-1.el7.x86_64.rpm
cloudstack-management-4.13.1.0-1.el7.x86_64
cloudstack-agent-4.13.1.0-1.el7.x86_64.rpm
systemvmtemplate-4.11.3-kvm.qcow2.bz2
本文所用所有资源的百度云分享链接:https://pan.baidu.com/s/1AiuZUF5JvudgIgFjc_8j4Q 提取码:oy3h
首先,打开Wmware Workstation,选择菜单栏“编辑”->虚拟网络编辑器,查看VMnet8的子网地址。
每台机器VMnet8被分配的子网地址都不相同,但在每个网段中,本机都默认为1,网关都默认为2。
以本机“192.168.100.0”网段为例,在该网段中,默认本机的IP地址为“192.168.100.1”,默认网关的IP地址为“192.168.100.2”。
而若是“192.168.67.0”网段,则默认本机的IP地址为“192.168.67.1”,默认网关的IP地址为“192.168.67.2”。
请注意并修改后续操作中IP地址,以保证在VMnet8的网段中。
若想更改网段,可以点击右下角“更改设置”,以管理员权限打开虚拟网络编辑器,修改左下角子网IP。
默认DHCP分配IP范围为128-254,可以点击“DHCP设置”调整,本文调整如下。开放地址范围为192.168.100.100-192.168.100.254。
综上,本机虚拟网络相关的信息如下:
地址范围:192.168.100.100-192.168.100.254 网关:192.168.100.2 子网掩码:255.255.255.0本文先创建manager节点虚拟机,安装必要的软件后,会克隆该虚拟机作为agent节点,再分别部署各自节点。
本文manager节点IP设置为192.168.100.100,agent节点IP设置为192.168.100.101。可自行修改为其他,但注意必须在DHCP范围内。
在VmWare Station 中新建虚拟机,在新建向导中依次选择“典型”、“稍后安装操作系统”、“Linux”、“CentOS 7 64位”。
命名该虚拟机为Manager,避免混淆。
磁盘容量为默认20G足可,在最后一步中点击“自定义硬件”,按下图配置。
Manager节点推荐内存为2G,
处理器内核2颗,开启“虚拟化Intel VT-x/EPT 或AMD-V/RVI”,
CD驱动器加载CentOS的iso镜像,并确定已勾选启动时连接,
再删除多余的声卡和打印机硬件,
点击“关闭”并点击“完成”。
再次编辑该虚拟机设置,点击左下角添加,添加硬盘。
添加新硬盘一路点“下一步”,最后完成新硬盘添加。
启动虚拟机,开始镜像安装。点击虚拟屏幕,按上下键选择“Install CentOs 7”,进入可视化安装界面。
第一步,选择中文。
选择“中文”点击“继续”,等待依赖检索完成,依次配置“安装位置”、“网络和主机名”。
配置“安装目标位置” 配置“网络和主机名”选择“IPv4 设置”,选择“手动”分配,点击"Add”,
添加静态IP地址“192.168.100.100”,子网掩码“255.255.255.0”,网关“192.168.100.2”。
请根据自己VMnet8的实际网段与自己设定的manager节点静态IP进行修改。
在下方DNS服务器输入阿里DNS服务器223.5.5.5。
如下图所示。点击“保存”和“完成”。
配置“ens33”点击“开始安装”。
安装中
在安装时,设置ROOT密码,本文设置为12345。若密码过于简单,点击两次完成也可以完成设置。
安装完成后,重启。
打开XShell,新建会话。
点击“用户身份验证”,输入root和ROOT密码。
保存并连接,验证主机密钥,选择“接受并保存”。
在XShell中完成以下配置。
(1)设置IP映射
设置后可以直接通过Hostname,访问到对应节点。
复制一下指令到XShell会话框中,按回车执行。
vi /etc/hosts在该文件新的一行中插入以下内容:
192.168.100.100 manager 192.168.100.101 agent小提示
按I键进入INSERT模式。
按ESC键,输入“:wq”保存并退出,输入“:q!"不保存退出。
按ESC键,按两下D删除光标所在行。
(2)关闭防火墙
systemctl disable firewalld systemctl stop firewalld然后设置selinux为permissive模式
修改config文件
vi /etc/selinux/config找到selinx并改成
SELINUX=permissive重启生效
reboot查看selinux
getenforce(3)时区设置(非必要)
timedatectl set-timezone Asia/Shanghai查看时区
timedatectl(4)安装EPEL
yum -y install epel*重建本地仓库缓存
yum clean all && yum makecache安装VIM,用以编辑文件。
yum -y install vim安装lrzsz,用以向虚拟机发送文件。
yum -y install lrzsz(5)安装时间同步模块
yum -y install chrony修改配置文件
vim /etc/chrony.conf将服务器修改为阿里云的时间同步服务器
找到以下四行
server 0.centos.pool.ntp.org iburst server 1.centos.pool.ntp.org iburst server 2.centos.pool.ntp.org iburst server 3.centos.pool.ntp.org iburst修改为
server ntp1.aliyun.com iburst server ntp2.aliyun.com iburst server ntp3.aliyun.com iburst server ntp4.aliyun.com iburst重启chronyd服务
systemctl restart chronyd(5)安装NFS服务
yum -y install nfs-utils编辑配置文件
vim /etc/sysconfig/nfs取消如下项的注释。其中,RQUOTAD_PORT需要手动添加。
LOCKD_TCPPORT=32803 LOCKD_UDPPORT=32769 MOUNTD_PORT=892 RQUOTAD_PORT=875 STATD_PORT=662 STATD_OUTGOING_PORT=2020启动服务并设置开机启动。
systemctl enable rpcbind systemctl start rpcbind systemctl enable nfs systemctl start nfs查看新增硬盘
fdisk -l 新增磁盘/dev/sdb格式化硬盘,建立ext4文件系统,“Process anyway?”选择“y”。
mkfs.ext4 /dev/sdb至此,两节点的通用配置已完成。
关闭manager节点,在库中,右键manager节点,选择“管理”->“克隆”,进入克隆虚拟机向导。
依次选择“克隆当前状态”、“创建完整克隆”,命名为“agent”,然后点击完成。
由于克隆后agent节点IP与manager冲突,建议先在虚拟机内部修改完静态IP地址后,再通过XShell配置。
开启agent虚拟机,输入账户root,密码12345。
修改host名
vim /etc/hostname修改manager为agent
修改IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33将IPADDR修改为192.168.100.101,修改后如下。
重启虚拟机
reboot在XShell中,创建新会话,名称为“agent”,主机为192.168.100.101,账号为root,密码为12345。
在XShell的会话中完成后续配置。
前面已经配置过文件,此步骤只需设置共享目录。请注意各个操作与其操作节点,避免混淆。
创建挂载点
mkdir -p /export/secondary硬盘挂载
echo "/dev/sdb /export/secondary ext4 defaults 0 0" >> /etc/fstab快速挂载
mount -a查看挂载
df -h结果如下
设置共享目录
vim /etc/exports添加
/export/secondary *(rw,async,no_root_squash,no_subtree_check)重新导入共享目录配置
exportfs -a创建挂载点
mkdir -p /export/primary硬盘挂载
echo "/dev/sdb /export/primary ext4 defaults 0 0" >> /etc/fstab快速挂载
mount -a设置共享目录
vim /etc/exports添加
/export/primary *(rw,async,no_root_squash,no_subtree_check)重新导入共享目录配置
exportfs -amanager 节点查看 agent的共享目录
showmount -e agentagent 节点查看 manager 的共享目录
showmount -e manager编辑 mariadb 配置文件
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' bind-address = 0.0.0.0启动mariadb 并设置为开机启动
systemctl enable mariadb systemctl start mariadb执行数据库初始化安全操作
mysql_secure_installation初始未设置密码按回车跳过,选择设置密码,设置为12345,移除匿名用户,不屏蔽远程登录等,其他按回车选择默认。
赋予 root 远程登录权限
请注意并修改下方操作中的密码为自己设置的密码
mysql -uroot -p12345 -e "GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY '12345' WITH GRANT OPTION";编辑网卡桥接文件 cloudbr
vim /etc/sysconfig/network-scripts/ifcfg-cloudbr0修改后内容如下。静态IP根据自己实际情况修改。
TYPE=Bridge BOOTPROTO=none DEVICE=cloudbr0 ONBOOT=yes IPADDR=192.168.100.101 NETMASK=255.255.255.0 GATEWAY=192.168.100.2 DNS1=223.5.5.5 STP=yes设置网卡文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33修改后如下
TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="none" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens33" UUID="ad4d6e67-ae59-4a3c-9270-7045700517cd" DEVICE="ens33" ONBOOT="yes" BRIDGE=cloudbr0重新启动网络服务
systemctl restart network查看 网桥 和路由
brctl show route -n至此,基本环境安装已经完成,建议拍摄快照,以免后期配置错误,功亏一篑。
配置网络源文件,两台节点配置相同
vi /etc/yum.repos.d/cloudstack.repo添加
[cloudstack] name=cloudstack baseurl=http://cloudstack.apt-get.eu/centos7/4.13/ enabled=1 gpgcheck=0官方下载地址:
http://cloudstack.apt-get.eu/centos7/4.13/cloudstack-management-4.13.1.0-1.el7.x86_64.rpmhttp://cloudstack.apt-get.eu/centos7/4.13/cloudstack-agent-4.13.1.0-1.el7.x86_64.rpmhttp://cloudstack.apt-get.eu/centos7/4.13/cloudstack-common-4.13.1.0-1.el7.x86_64.rpm
或
本文提供的百度云里下载。
本文使用lrzsz进行文件发送,若遇问题,也可以使用WinSCP等其他软件发送。
将cloudstack-common和cloudstack-management两个rpm文件,分别拖入XShell会话框,发送给虚拟机。
发送中执行下述指令进行本地安装。
yum -y install cloudstack-common-4.13.1.0-1.el7.x86_64.rpm cloudstack-management-4.13.1.0-1.el7.x86_64.rpm安装过程或以后使用过程中,有任何问题,可以通过日志查看。
tail -f /var/log/cloudstack/management/management-server.log初始化数据库,创建新用户cloud。
最后,root:12345为root账号及root密码,密码不同请修改。
cloudstack-setup-databases cloud:123456@localhost --deploy-as=root:12345启动management
cloudstack-setup-management将cloudstack-common和cloudstack-agent两个rpm文件,分别拖入XShell会话框,发送给虚拟机。
执行下述指令进行本地安装。
yum -y install cloudstack-common-4.13.1.0-1.el7.x86_64.rpm cloudstack-agent-4.13.1.0-1.el7.x86_64.rpm在二级存储中安装KVM模板。以下两种方式二选一。
官方地址:
http://cloudstack.apt-get.eu/systemvm/4.11/systemvmtemplate-4.11.3-kvm.qcow2.bz2
或
本文提供的百度云里下载。
同上述过程,拖入会话即可。
注意:当前文件夹是否为root,不是请先“cd /root”,或者修改下述代码中路径。
/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt \ -m /export/secondary \ -f /root/systemvmtemplate-4.11.3-kvm.qcow2.bz2 \ -h kvm –F编辑QEMU VNC配置文件
vim /etc/libvirt/qemu.conf取消注释
vnc_listen="0.0.0.0"配置/etc/libvirt/libvirtd.conf文件
vim /etc/libvirt/libvirtd.conf取消注释或添加
listen_tls = 0 listen_tcp = 1 tcp_port = "16509" auth_tcp = "none" mdns_adv = 0小提示
可以按下ESC,使用“/+搜索词”,如“/listen”进行搜索。
配置/etc/sysconfig/libvirtd文件
vim /etc/sysconfig/libvirtd取消注释
LIBVIRTD_ARGS="--listen"重启libvirtd 并设置为开机自启
systemctl restart libvirtd systemctl enable libvirtd请注意,这一步配置错导致libvirt服务启动失败,会导致后续创建资源域时无法添加主机,解决方法看文章最后的QA。
默认访问端口为manager节点IP的8080端口。
打开浏览器,访问http://192.168.199.100:8080/client/。
默认账号为admin,默认密码为password,选择语言为“简体中文”,登陆。
初次登陆选择左下角“我以前使用过”。
选择左下角“全局设置”,搜索并修改以下设置。
host 192.168.100.100 //host地址,即管理节点IP地址 cpu.overprovisioning.factor 2.0 //CPU超配 mem.overprovisioning.factor 2.0 //内存超配,即2GB变4GB secstorage.allowed.internal.sites 0.0.0.0/0 //从该网段下载ISO或模板,后期搭建ngix服务器可修改 management.network.cidr 192.168.100.0/24 //管理网段,可不修改,但会有警报信息在manager节点中,重启cloudsatck-management服务
systemctl restart cloudstack-management重启时间较长,请耐心等候,可以观察日志文件,了解启动进程。
tail -f /var/log/cloudstack/management/management-server.log重新登录,选择左下角“基础架构”,选择“资源域”,点击工具栏“+ 添加资源域”。
配置如下即可。
请注意,“添加主机”这一步,是添加计算节点作为集群的默认主机,而不是管理节点。
点击“启动资源域”,等待创建完成,然后启动即可。
如下,等待系统VM创建成功后,开始后续步骤。
创建一个NGINX 服务器当作镜像下载站。
安装 nginx 软件
yum -y install nginx编辑 nginx 配置文件
vim /etc/nginx/nginx.conf在access_log /var/log/nginx/access.log main一行后加上
autoindex on;# 显示目录 autoindex_exact_size on;# 显示文件大小 autoindex_localtime on;# 显示文件时间清空 /usr/share/nginx/html 目录
小心谨慎
cd /usr/share/nginx/html rm -rf *将准备好的ISO镜像放进去,本文使用的是虚拟机的镜像,直接拖入会话框,传送至/usr/share/nginx/html目录。
重启nginx 服务,设置为开机启动
systemctl enable nginx systemctl start nginx可通过浏览器直接访问agent节点IP地址查看。
选择左侧“模板”->选择视图“ISO”,点击工具栏“注册ISO”。
依次填写所有信息,URL可以从192.168.100.101网页中复制链接。
点击“确定”,点击该ISO,点击“资源域”,查看状态。
安装完成后,如下所示。
依次选择左边“实例”->工具栏“添加实例”。
选择ISO创建。
选择刚刚注册的ISO。
计算方案选择Medium,分配内存为1GB,可在“服务方案”中修改。
其余一律默认即可,最后填写信息。
启动VM,等待VM创建并运行。
选择该虚拟机快速查看->查看控制台。
在弹出的控制台网页中,安装ISO即可。
安装过程同虚拟机大致一样,不同的是网络只需打开即可,不需要设置静态IP和主机名。
安装完成后,重启。
至此,一台可以用于生产的实例已经部署完成,后续可以安装其他生产环境,本文仅做测试,安装系统即可。
接下来是,将安装有生产环境的示例创建模板,用以创建更多实例。
关闭实例。“快速查看”->停止。
等待停止后,点击“查看卷”。
选择“快速查看”->“创建模板”。
填写信息后,创建即可。
以后添加实例时,选择该模板即可创建一模一样的实例。
Q:安装软件时一直切换镜像,最后也不下载,这是怎么回事?
A:有两种可能
1.没有配置DNS服务器。
没有配置网桥的话,配置网络
vi /etc/sysconfig/network-scripts/ifcfg-ens33添加DNS服务器
DNS1=223.5.5.5配置网桥了的话,在网桥文件里添加DNS。
vi /etc/sysconfig/network-scripts/ifcfg-cloudbr02.网关配置错误
本文使用的VMnet8网段为192.168.100.0-192.168.100.254网段,其中192.168.100.2为虚拟网关地址,每个人的网段号不同,请根据自己的网段查看网关是否正确。
查看配置文件,注意其中GATEWAY字段是否正确。
vi /etc/sysconfig/network-scripts/ifcfg-ens33
Q:管理节点重启后,CloudStack 的WEB UI上不去,这是怎么回事?
A:一般是Server还在启动中,稍等即可。
可以通过查看日志的方式排除问题。
tail -f /var/log/cloudstack/management/management-server.log
Q:系统VM创建失败,日志显示“can't create development for vm”,这是为什么?
A:这可能有两个原因造成:
1.agent节点硬件资源不足
本文建议的4GB内存加2核,再加上2倍超配,经多次试验完全能满足要求。
2.没有安装KVM模板
如果日志中报错“Not such file or directory”,然后指向/export/secondary里的template文件夹,那么就是这个原因,按照第6部中的“安装KVM模板”步骤完成即可。
Q:日志报数据库中列错误,怎么处理?
A:按照第6步中,初始化数据库的步骤,重新创建用户,安装management。
Q:资源域创建最后一步添加主机时报错,说“Unable to add the host”,查找management的日志,找到以下错误,怎么解决?
A:这是在agent节点配置libvirt时出现了问题,建议先检查自己在第六步配置libvirt时出现了什么问题。
有快照建议恢复到配置之前。
无快照,按照以下方法重新安装libvirt。
卸载libvirt及其依赖
yum remove libvirt*然后按照第六步中的过程重新安装。
Q:资源域创建最后一步添加主机时报错,说“Unable to add the host”,查找management的日志,错误是It's not a KVM enable machine,KVM模板也确认安装了,这是为什么?
A:这是因为你虚拟机的VT没开,在开启节点时选择开启“虚拟化Intel VT-x/EPT 或AMD-V/RVI”即可。
Q:资源域创建最后一步添加主机时报错,说“Unable to add the host”,使用“cat /var/log/cloudstack/management/management-server.log | grep cloudstack-setup-agent”,显示Excuting cmd:cloudstack-setup-agent -m localhost -z 2 -p 2 -c 2 -g XXXXXXXXXXXXXXXXX -a --pubNic=cloudbr0 --prvNic=cloudbr0 --guestNic=cloudbr0
A:是在配置CloudStack全局设置时,忘记设置host了,设置完后,显示“cloudstack-setup-agent -m+manager节点IP”即正确。