参考文档
https://blog.csdn.net/u012124304/article/details/80960504#Mysql_37
cloudstack的rpm包下载地址
http://download.cloudstack.org/centos/
环境部署规划,
虚拟化:esxi 6.7
操作系统版本:centos 6.9
cloudstack版本:4.9.3.0
python版本:2.6
主机名 | IP地址 | 配置 | 用途 |
node1 | 172.16.103.2 | 16vcpu,32Gb内存,16G精简配置硬盘 | cloudstack控制节点,安装数据库,和控制节点的web控制台,同时也作为计算节点存在 |
node2 | 172.16.103.3 | 4vcpu,4G内存,16G精简配置,300G精简配置硬盘,100G精简配置 | 模拟存储节点,安装nfs包,对外提供nfs的存储服务,16G用于安装操作系统,300G用于主存储,100G用户二级存储 |
node3 | 172.16.103.4 | 16vcpu,32Gb内存,16G精简配置硬盘 | 纯的计算节点,为cloudstack提供计算资源 |
1,配置ntp服务器和数据库服务器
关闭selinux和防火墙,重启
vi /etc/selinux/config
chkconfig iptables off
修改hosts
vi /etc/hosts
172.16.103.2 node1
172.16.103.3 node2
172.16.103.4 node3
安装ntp服务
yum install ntp -y
service ntpd start
chkconfig ntpd on
安装mysql
yum -y install mysql mysql-server
service mysqld start
chkconfig --add mysqld
chkconfig mysqld on
修改mysql中root用户的密码为root
mysql
mysql> use mysql;
mysql> set password for root@localhost = password('root');
2,安装管理端和服务端的rpm包
cloudstack主要的包
cloudstack-agent-4.9.3.0-1.el6.x86_64.rpm #agent包。添加计算节点的时候,计算节点上需要安装的包
cloudstack-common-4.9.3.0-1.el6.x86_64.rpm #common包,应该是主程序包
cloudstack-management-4.9.3.0-1.el6.x86_64.rpm #管理端的包
cloudstack-usage-4.9.3.0-1.el6.x86_64.rpm #计费用量包,本次项目不安装
mysql-connector-python-2.1.3-1.el6.x86_64.rpm #cloudstack安装所需要的mysql的python连接器,需要自行去mysql官网下载对应系统版本的即可
libvirt-java-javadoc-0.4.9-1.el6.noarch.rpm #安装libvirt所需要的依赖包,需要自行上网下载,通过rpm -ivh 安装,必要是可以强制安装,加上--force --nodeps参数
libvirt-lock-sanlock-0.10.2-62.el6.x86_64.rpm #安装libvirt所需要的依赖包,需要自行上网下载,通过rpm -ivh 安装,必要是可以强制安装,加上--force --nodeps参数
sanlock-2.8-3.el6.x86_64.rpm #安装libvirt所需要的依赖包,需要自行上网下载,通过rpm -ivh 安装,必要是可以强制安装,加上--force --nodeps参数
sanlock-lib-2.8-3.el6.x86_64.rpm #安装libvirt所需要的依赖包,需要自行上网下载,通过rpm -ivh 安装,必要是可以强制安装,加上--force --nodeps参数
augeas-1.0.0-10.el6.x86_64.rpm #安装libvirt所需要的依赖包,需要自行上网下载,通过rpm -ivh 安装,必要是可以强制安装,加上--force --nodeps参数
jakarta-commons-daemon-jsvc-1.0.1-8.9.el6.x86_64 #添加计算节点的需要安装的依赖包
systemvm64template-4.10-4.10.0.0-kvm.qcow2.bz2 #系统vm文件
将以上rpm包上传到/root目录下,然后使用yum localinstall 安装
先安装mysql的python连接器包
rpm -ivh mysql-connector-python-2.1.3-1.el6.x86_64.rpm
使用yum localinstall 安装cloudstack包
yum localinstall cloudstack-management-4.9.3.0-1.el6.x86_64.rpm cloudstack-common-4.9.3.0-1.el6.x86_64.rpm -y
初始化数据库
cloudstack-setup-databases cloud:cloud@localhost --deploy-as=root:root
参数解析:
cloud:cloud@localhost :其中cloud:cloud是cloudstack在mysql数据库中创建的账户和密码,localhost是mysql数据库的地址,因为我们装在本机上,所以是localhost,如果mysql数据库在另外一台机器上,则需改为该机器的IP或域名
–deploy-as=root:root :这个参数的值root:root填的是数据库的root用户名和密码
执行这个命令会在MySql数据库上创建一个cloud的用户,并使用这个用户创建一个cloud数据库。出现以下信息则表明cluodstack的数据库初始化成功:
时间比较久,耐心等待。
初始化cloudstack管理服务器
cloudstack-setup-management
使用浏览器访问,地址为[host_ipaddress]:8080/client,默认的用户名和密码为admin/password,首次登陆和首次使用最好走一遍下面的向导
3,配置该主机为计算节点。
配置为计算节点需要安装cloudstack-agent包和cloudstack-common包,而在这之前还需要安装libvirt和qemu,cloudstack对KVM虚拟化层的操作实际上都是libvirt和qemu来完成的,安装libvirt和qemu需要安装相关的依赖包,需要的依赖包如下
libvirt-java-javadoc-0.4.9-1.el6.noarch.rpm
libvirt-lock-sanlock-0.10.2-62.el6.x86_64.rpm
sanlock-2.8-3.el6.x86_64.rpm
sanlock-lib-2.8-3.el6.x86_64.rpm
augeas-1.0.0-10.el6.x86_64.rpm
这5个包在centos的系统安装镜像里面没有,需要自行上网搜索下载,下面安装这几个rpm包
rpm -ivh libvirt-java-javadoc-0.4.9-1.el6.noarch.rpm
rpm -ivh sanlock-lib-2.8-3.el6.x86_64.rpm
rpm -ivh sanlock-2.8-3.el6.x86_64.rpm
rpm -ivh augeas-1.0.0-10.el6.x86_64.rpm --force --nodeps
安装libvirt和qemu
yum install libvirt* qemu* -y
安装cloudstack-agent包和cloudstack-common包,同时安装cloudstack-usage包,如果是其他纯计算节点,可以不安装cloudstack-usage包,在安装这些包之前还需要安装一个依赖包,这个依赖包可能在centos的系统镜像里面也没有
rpm -ivh jakarta-commons-daemon-jsvc-1.0.1-8.9.el6.x86_64.rpm
yum localinstall cloudstack-common-4.9.3.0-1.el6.x86_64.rpm cloudstack-agent-4.9.3.0-1.el6.x86_64.rpm
启动相关服务
service cloudstack-agent start
查看服务器状态
service cloudstack-agent status
发现服务器为cloudstack-agent dead but subsys locked状态,修复该错误,开启宿主机的虚拟化支持,在vmware workstation设编辑虚拟机设置选择CPU,勾选虚拟化引擎
修改配置文件
vi /etc/cloudstack/agent/agent.properties
private.network.device=eth0
public.network.device=eth0
这里主要修改的网桥设备,如果使用本地网卡作为网桥的话就写ifconfig看到的本地网卡的名字即可
重新启动服务
service cloudstack-agent restart
查看服务状态
service cloudstack-agent status
4,配置存储节点
关闭该节点的selinux和iptables,挂载系统镜像,安装nfs包
yum install nfs-utils rpcbind -y
设置开机启动
chkconfig nfs on
chkconfig rpcbind on
建立data目录
mkdir -p /data
mkdir primary
mkdir secondary
添加两块磁盘,将磁盘分区格式化之后挂载到/data/primary和/data/secondary 目录,并写入fstab文件,实现开机自动挂载
编辑nfs的配置文件
vi /etc/exports
/data/primary *(rw,sync)
/data/secondary *(rw,sync)
/data/primary为把该目录共享出去,*代表所有网络的主机可以连接该共享,(rw,sync) rw为权限,可读可写,sync代表数据同步写入NFS服务器端的硬盘中。也可以用async,async是大数据时使用,是先写到缓存区,再写到磁盘里。
设置权限
chown -R nfsnobody:nfsnobody /data
重启相关服务
service rpcbind restart
service nfs restart
查看nfs共享的目录
5,创建系统vm
在管理节点上创建被挂载的二级存储目录/data/secondary,然后将上面nfs服务器的secondary目录挂载的此目录。
mkdir -p /data/secondary
mount -t nfs 172.16.103.3:/data/secondary /data/secondary/
同时写入fstab文件,实现开机自动挂载
vi /etc/fstab
172.16.103.3:/data/secondary /data/secondary ext4 defaults 0 0
上传系统vm文件到/data/secondary目录
解压缩系统vm文件
bunzip2 systemvm64template-4.10-4.10.0.0-kvm.qcow2.bz2
安装系统vm
/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /data/secondary/ -f /data/secondary/systemvm64template-4.10-4.10.0.0-kvm.qcow2 -h kvm -F
6,图形化操作
注意看系统的vm是状态,
如果代理状态不是up的话,可以尝试重启一下资源域
如果是在esxi虚拟化下做此实验的话,需要在esxi虚拟化平台中启动混杂模式,具体操作是网络,选择节点桥接的网络,启用混杂模式,然后重启cloudstack的资源域即可。
7,添加一个计算节点
计算节点安装好操作系统,挂载系统镜像为yum源,关闭selinux和iptables,注意在vmware workstation设编辑虚拟机设置选择CPU,勾选虚拟化引擎
编辑hosts文件
vi /etc/hosts
172.16.103.4 node3
上传相关的程序包和依赖包到/root目录
augeas-1.0.0-10.el6.x86_64.rpm
cloudstack-agent-4.9.3.0-1.el6.x86_64.rpm
cloudstack-common-4.9.3.0-1.el6.x86_64.rpm
jakarta-commons-daemon-jsvc-1.0.1-8.9.el6.x86_64.rpm
libvirt-java-javadoc-0.4.9-1.el6.noarch.rpm
sanlock-2.8-3.el6.x86_64.rpm
sanlock-lib-2.8-3.el6.x86_64.rpm
安装安装libvirt和qemu的依赖包
rpm -ivh sanlock-lib-2.8-3.el6.x86_64.rpm
rpm -ivh sanlock-2.8-3.el6.x86_64.rpm
rpm -ivh augeas-1.0.0-10.el6.x86_64.rpm --force --nodeps
安装libvirt和qemu,cloudstack对KVM虚拟化层的操作实际上都是libvirt和qemu来完成的
yum install libvirt* qemu*
安装cloudstack-agent包和cloudstack-common包的依赖包
yum install java-gcj-compat
rpm -ivh jakarta-commons-daemon-jsvc-1.0.1-8.9.el6.x86_64.rpm
安装cloudstack-agent包和cloudstack-common包
yum localinstall cloudstack-agent-4.9.3.0-1.el6.x86_64.rpm cloudstack-common-4.9.3.0-1.el6.x86_64.rpm
编辑cloudstack-agent的配置文件
vi /etc/cloudstack/agent/agent.properties
private.network.device=eth0
public.network.device=eth0
这里主要修改的网桥设备,如果使用本地网卡作为网桥的话就写ifconfig看到的本地网卡的名字即可
开启cloudstack-agent服务
service cloudstack-agent start
查看cloudstack-agent服务的运行状态
service cloudstack-agent status
图形化操作,添加计算节点
8,默认情况下的cloudstack控制台上主存储中显示的容量为可分配的容量,由于虚拟化平台有一个存储超配的概念,所以默认情况下这里显示的是可分配的容量,默认情况下可分配的容量是实际容量的2倍(下图中显示的容量为实际容量,是本人修改做全局配置之后的容量),为了能够显示实际容量需要在全局配置中更改相关的参数,需要更改的参数为storage.overprovisioning.factor(默认这个值为2)修为该1即可,修改之后要重启cloudstack控制台的服务。
9,添加iso镜像
由于是内网环境,需要在nfs上搭建一个httpd服务,用于发布系统发iso镜像包,目前版本无法支持在web端自由上传iso镜像,所以需要搭建模拟环境
安装httpd服务
yum install httpd -y
编辑httpd.conf配置文件,将默认的html目录更改为主存储的目录
cd /etc/httpd/conf
备份默认的配置文件
mv httpd.conf httpd.conf.bak
将原配置文件中的内容去掉注释行导入到新配置文件
cat httpd.conf.bak |grep -v '#' > httpd.conf
vi httpd.conf
DocumentRoot "/data/primary" #此处修改为主存储挂载的目录
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/data/primary"> #此处修改为主存储挂载的目录
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
重启http服务
service httpd restart
将win2008的系统镜像和centos7.3的系统镜像上传至/data/primary目录并且将win的镜像名字修改为win08r2.iso,centos系统镜像名字修改为centos1611every.iso
创建index.html文件,写入上面的系统镜像的下载地址
vi /data/primary/index.html
http://172.16.103.3/win08r2.iso
<p>
http://172.16.103.3/centos1611every.iso
</p>
在cloudstack平台添加iso
添加之后查看状态一直处于Connection refused状态,百度得知需要修改全局配置中
secstorage.allowed.internal.sites的配置,默认情况下,不允许连接任何地址,需要将这里配置成我们的httpd的网络地址,注意,经过我的多次测试,这里不能写IP地址,写了IP地址后重启了控制台依然还会出现connection refused的情况,所以所需要的填写的一个网络,例如我们的httpd服务在172.16.103.2,那么这里就需要填写172.16.103.0/24
填写完毕之后,重启控制台机器,重启不能够使用restart参数,需要在控制节点(node1)上执行以下操作
service cloudstack-management stop
service cloudstack-management start
执行完start命令之后要确保8080端口打开之后才可以访问控制台
netstat -nutpl |grep 8080
配置了以上全局配置之后可以看到镜像处于downloaded状态了
10,模板制作
首先使用上面的ISO镜像安装好操作系统,然后将安装好的系统进行优化,最后制作成系统模板。
centos模板制作
安装好的centos系统需要执行的操作,首先是网络配置
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=dhcp
仅保留上面的配置项,其他项均删除
删除udev绑定
rm -f /etc/udev/rules.d/70-persistent-net.rules
删除历史命令
history -c
其实还可以执行更多的优化操作例如,删除日志,安装一些需要的软件之类的。
然后关机,等待cloudstack控制台上centos实例的状态为stopped状态之后在创建模板如下图
创建模板
点击实例名
点击查看卷
点击卷名名称
点击创建模板
输入自定义的名称和说明,选择对应的操作系统,勾选公用,点击确定即可创建模板,模板创建成功之后即可使用模板快速创建虚拟机。
windows主机创建模板的流程根上述大致相同,都是首先执行一些系统优化的操作,不同之处在于有些低版本的windows系统可能需要额外添加一些支持虚拟化的驱动(主要是磁盘的驱动),例如virtio-win.iso之类的,最后执行windows封装命令即可。系统封装的具体操作如下
在C:WindowsSystem32Sysprep目录下,运行sysprep.exe,选择进入系统全新体验,关机,点确定即可。
制作模板的过程根上述制作centos模板的过程类似,都是选择卷,制作模板,需要注意的是执行关机之后也要得到cloudstack控制上对应实例的状态处于stopped之后再执行制作模板的操作