cloudstack部署

参考文档

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

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管理服务器

cloudstack-setup-management

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

   

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

设置权限

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

安装安装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

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

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之后再执行制作模板的操作

   

原文地址:https://www.cnblogs.com/withfeel/p/10875781.html