参考文档

https://blog.csdn.net/u012124304/article/details/80960504#Mysql_37

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

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

16vcpu32Gb内存,16G精简配置硬盘

cloudstack控制节点,安装数据库,和控制节点的web控制台,同时也作为计算节点存在

node2

172.16.103.3

4vcpu,4G内存,16G精简配置,300G精简配置硬盘,100G精简配置

模拟存储节点,安装nfs包,对外提供nfs的存储服务,16G用于安装操作系统,300G用于主存储,100G用户二级存储

node3

172.16.103.4

16vcpu32Gb内存,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:cloudcloudstackmysql数据库中创建的账户和密码,localhostmysql数据库的地址,因为我们装在本机上,所以是localhost,如果mysql数据库在另外一台机器上,则需改为该机器的IP或域名

–deploy-as=root:root :这个参数的值root:root填的是数据库的root用户名和密码

   

执行这个命令会在MySql数据库上创建一个cloud的用户,并使用这个用户创建一个cloud数据库。出现以下信息则表明cluodstack的数据库初始化成功:

cloudstack部署 随笔 第1张

时间比较久,耐心等待。

初始化cloudstack管理服务器

cloudstack-setup-management

cloudstack部署 随笔 第2张

使用浏览器访问,地址为[host_ipaddress]:8080/client,默认的用户名和密码为admin/password,首次登陆和首次使用最好走一遍下面的向导

cloudstack部署 随笔 第3张

   

3,配置该主机为计算节点。

配置为计算节点需要安装cloudstack-agent包和cloudstack-common包,而在这之前还需要安装libvirtqemucloudstackKVM虚拟化层的操作实际上都是libvirtqemu来完成的,安装libvirtqemu需要安装相关的依赖包,需要的依赖包如下

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

安装libvirtqemu

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部署 随笔 第4张

发现服务器为cloudstack-agent dead but subsys locked状态,修复该错误,开启宿主机的虚拟化支持,在vmware workstation设编辑虚拟机设置选择CPU,勾选虚拟化引擎

cloudstack部署 随笔 第5张

修改配置文件

vi /etc/cloudstack/agent/agent.properties

private.network.device=eth0

public.network.device=eth0

这里主要修改的网桥设备,如果使用本地网卡作为网桥的话就写ifconfig看到的本地网卡的名字即可

   

重新启动服务

service cloudstack-agent restart

查看服务状态

service cloudstack-agent status

cloudstack部署 随笔 第6张

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服务器端的硬盘中。也可以用asyncasync是大数据时使用,是先写到缓存区,再写到磁盘里。

设置权限

chown -R nfsnobody:nfsnobody /data

重启相关服务

service rpcbind restart

service nfs restart

查看nfs共享的目录

cloudstack部署 随笔 第7张

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

cloudstack部署 随笔 第8张

6,图形化操作

cloudstack部署 随笔 第9张

   

cloudstack部署 随笔 第10张

   

cloudstack部署 随笔 第11张

   

cloudstack部署 随笔 第12张

   

cloudstack部署 随笔 第13张

   

cloudstack部署 随笔 第14张

   

cloudstack部署 随笔 第15张

   

cloudstack部署 随笔 第16张

   

cloudstack部署 随笔 第17张

   

cloudstack部署 随笔 第18张

   

cloudstack部署 随笔 第19张

   

cloudstack部署 随笔 第20张

   

cloudstack部署 随笔 第21张

   

cloudstack部署 随笔 第22张

注意看系统的vm是状态,

cloudstack部署 随笔 第23张

如果代理状态不是up的话,可以尝试重启一下资源域

如果是在esxi虚拟化下做此实验的话,需要在esxi虚拟化平台中启动混杂模式,具体操作是网络,选择节点桥接的网络,启用混杂模式,然后重启cloudstack的资源域即可。

7,添加一个计算节点

计算节点安装好操作系统,挂载系统镜像为yum源,关闭selinux和iptables,注意在vmware workstation设编辑虚拟机设置选择CPU,勾选虚拟化引擎

cloudstack部署 随笔 第24张

编辑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

安装安装libvirtqemu的依赖包

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

安装libvirtqemucloudstackKVM虚拟化层的操作实际上都是libvirtqemu来完成的

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

cloudstack部署 随笔 第25张

图形化操作,添加计算节点

cloudstack部署 随笔 第26张

8,默认情况下的cloudstack控制台上主存储中显示的容量为可分配的容量,由于虚拟化平台有一个存储超配的概念,所以默认情况下这里显示的是可分配的容量,默认情况下可分配的容量是实际容量的2倍(下图中显示的容量为实际容量,是本人修改做全局配置之后的容量),为了能够显示实际容量需要在全局配置中更改相关的参数,需要更改的参数为storage.overprovisioning.factor(默认这个值为2)修为该1即可,修改之后要重启cloudstack控制台的服务。

cloudstack部署 随笔 第27张

   

cloudstack部署 随笔 第28张

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

cloudstack部署 随笔 第29张

   

cloudstack部署 随笔 第30张

   

cloudstack部署 随笔 第31张

   

添加之后查看状态一直处于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

cloudstack部署 随笔 第32张

配置了以上全局配置之后可以看到镜像处于downloaded状态了

cloudstack部署 随笔 第33张

   

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状态之后在创建模板如下图

cloudstack部署 随笔 第34张

创建模板

点击实例名

cloudstack部署 随笔 第35张

点击查看卷

cloudstack部署 随笔 第36张

点击卷名名称

cloudstack部署 随笔 第37张

点击创建模板

cloudstack部署 随笔 第38张

输入自定义的名称和说明,选择对应的操作系统,勾选公用,点击确定即可创建模板,模板创建成功之后即可使用模板快速创建虚拟机。

cloudstack部署 随笔 第39张

windows主机创建模板的流程根上述大致相同,都是首先执行一些系统优化的操作,不同之处在于有些低版本的windows系统可能需要额外添加一些支持虚拟化的驱动(主要是磁盘的驱动),例如virtio-win.iso之类的,最后执行windows封装命令即可。系统封装的具体操作如下

C:\Windows\System32\Sysprep目录下,运行sysprep.exe,选择进入系统全新体验,关机,点确定即可。

cloudstack部署 随笔 第40张

制作模板的过程根上述制作centos模板的过程类似,都是选择卷,制作模板,需要注意的是执行关机之后也要得到cloudstack控制上对应实例的状态处于stopped之后再执行制作模板的操作

   

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄