CloudStack 安装和配置

环境要求

管理节点OS版本及软件版本

  • RHEL versions 6.3, 6.5, 6.6 and 7.0
  • CentOS versions 6.6, 7.0
  • Ubuntu 14.04 LTS
  • Java 1.7
  • MySQL 5.6 (RHEL 7)
  • MySQL 5.1 (RHEL 6.x)

虚拟化版本

  • LXC Host Containers on RHEL 7
  • Windows Server 2012 R2 (with Hyper-V Role enabled)
  • Hyper-V 2012 R2
  • CentOS 6.2+ with KVM
  • Red Hat Enterprise Linux 6.2 with KVM
  • XenServer versions 6.1, 6.2 SP1 and 6.5 with latest hotfixes
  • VMware versions 5.0 Update 3a, 5.1 Update 2a, and 5.5 Update 2
  • Bare metal hosts are supported, which have no hypervisor. These hosts can run the following operating systems:
  • RHEL or CentOS, v6.2 or 6.3

    Note:Use libvirt version 0.9.10 for CentOS 6.3

  • Fedora 17

  • Ubuntu 12.04

外部设备

  • Netscaler VPX and MPX versions 9.3, 10.1e and 10.5
  • Netscaler SDX version 9.3, 10.1e and 10.5
  • SRX (Model srx100b) versions 10.3 to 10.4 R7.5
  • F5 11.X
  • Force 10 Switch version S4810 for Baremetal Advanced Networks

浏览器

  • Internet Explorer versions 10 and 11
  • Firefox version 31 or later
  • Google Chrome version 36.0.1985
  • Safari 6+

环境规划

设备配置说明

路由器

路由器连接公网和内部网络,路由器内部ip地址为:192.168.6.1 ,与三层交换机g0/1连接。

设备 物理接口 地址 功能 备注
路由器 e0/0 222.222.222.220 连接internet
e0/1 192.168.6.1/24 内部接口,连接交换机

交换机

三层交换机负责物理网络vlan划分,开启vlan间路由器,交换机的g0/1属于vlan 2,和路由器内网接口连接,vlan 2 ip地址为:192.168.6.254 (二层交换机也可以,但是需要在路由器上做单臂路由)。

设备 vlan vlan ip 网关 功能 备注
交换机 2 192.168.6.254/24 连接出口路由器
20 192.168.20.1/24 Storage&Manage Network 计算节点出口网关
30 192.168.30.1/24 Public Network 公共网络,可以配置多个
300-999 Guest Network 来宾网络
接口序号 vlan 接口模式 连接设备 备注
g0/24 2 Access 路由器g0/1 路由器内网接口
g0/1 1 Trunk Pod0 g0/24 Pod0交换机(管理节点所在机柜)
g0/2 1 Trunk Pod1 g0/24 Pod1交换机
g0/3 1 Trunk Pod2 g0/24 Pod2交换机

流量分类规划

流量类型 VLAN CIDR 网关 起始IP 结束IP 备注
Public Network 30 192.168.30.0/24 192.168.30.1 192.168.30.10 192.168.20.250 公共流量
Manage Network 20 192.168.21.0/24 192.168.21.1 192.168.21.200 192.168.11.229 提供点,内部系统用的IP,如系统vm
Guest Network 300-999 10.1.1.0/24 10.1.1.1 10.1.1.10 10.1.1.250 来宾流量,用户vm使用
Storage Network 20 192.168.20.0/24 192.168.20.1 192.168.20.170 192.168.20.199 存储流量
  • 高级区域配置成功后,客户vm将获得一个10.1.1.0网段的私有ip地址;
  • 系统将建立一个虚拟路由器Vrouter,这个虚拟路由器将作为用户vm 10.1.2.0 guest网段网关;
  • 虚拟路由器还将获得一个public的网段的ip地址;
  • vm将通过Vrouter nat功能实现外部通信和对外提供服务。

Guest vm(10.1.1.x)→(10.1.1.1)Vrouter-nat(192.168.30.x) → (192.168.30.1)三层交换机(192.168.6.254)→ (192.168.6.1)路由器(nat)→wan

主机规划

物理主机和管理服务器属于vlan 11 , 交换机连接计算节点的端口配置为trunk模式,允许所有vlan通过,本征vlan 为11;nfs为存储设备,连接交换机的接口配置为access模式,属于vlan 12。

机柜 设备名称 IP地址 网关 vlan 用途 系统 备注
Pod0 cs 192.168.20.100 192.168.20.254 20 管理节点 centos6.6 x64 8核,8G,120G
Pod0 nfs 192.168.20.101 192.168.20.254 20 二级存储 centos6.6 x64 8核,8G,500G
Pod0 nfs1 192.168.20.102 192.168.20.254 20 机柜1主存储 centos6.6 x64 8核,8G,1024G
Pod0 nfs2 192.168.20.103 192.168.20.254 20 机柜2主存储 centos6.6 x64 8核,8G,1024G
Pod0 nfs3 192.168.20.104 192.168.20.254 20 机柜2主存储 centos6.6 x64 8核,,8G,1024G
Pod0 vcenter 192.168.20.105 192.168.20.254 20 vcenter VMWARE vCenter5.5U2 16核,8G
Pod1 nr1r01n05 192.168.20.5 192.168.20.254 20 计算节点 VMWARE esxi 5.5U2 8核,8G
Pod1 nr1r01n19 192.168.20.19 192.168.20.254 20 计算节 VMWARE esxi 5.5U2 8核,8G
Pod2 nr1r02n09 192.168.20.20 192.168.20.254 20 计算节点 VMWARE esxi 5.5U2 12核,8G
Pod2 nr1r02n28 192.168.20.27 192.168.20.254 20 计算节点 VMWARE esxi 5.5U2 12核,8G
Pod3 nr1r03n05 192.168.20.30 192.168.20.254 20 计算节点 VMWARE esxi 5.5U2 12核,64G
Pod3 nr1r03n10 192.168.20.35 192.168.20.254 20 计算节点 VMWARE esxi 5.5U2 12核,64G
Pod4 nr1r04n05 192.168.20.40 192.168.20.254 20 计算节点 VMWARE esxi 5.5U2 80核,128G
Pod4 nr1r04n14 192.168.20.49 192.168.20.254 20 计算节点 VMWARE esxi 5.5U2 80核,128G
Pod5 nr1r05n05 192.168.20.50 192.168.20.254 20 计算节点 VMWARE esxi 5.5U2 32核,64G
Pod5 nr1r05n10 192.168.20.55 192.168.20.254 20 计算节点 VMWARE esxi 5.5U2 32核,64G

Basic Zone

Basic Zone需要配置3种网络流量类型,分别为Management Network、Guest Network、Storage Network,具体规划信息如下表:

流量类型 VLAN CIDR 网关 起始IP 结束IP 备注
Public Network 30 192.168.30.0/24 192.168.30.1 192.168.30.10 192.168.30.250 公共流量,
Manage Network 20 192.168.20.0/24 192.168.20.1 192.168.20.200 192.168.20.229 提供点,内部系统用的IP,如系统vm
Guest Network 300-999 10.1.1.0/24 10.1.1.1 10.1.1.10 10.1.1.250 来宾流量,用户vm使用,
Storage Network 20 192.168.20.0/24 192.168.20.1 192.168.20.230 192.168.20.249 存储流量

Advanced Zone

流量类型 VLAN CIDR 网关 起始IP 结束IP 备注
Public Network 30 192.168.30.0/24 192.168.30.1 192.168.30.10 192.168.30.250 公共流量,后期可继续添加
Manage Network 20 192.168.20.0/24 192.168.10.1 192.168.10.120 192.168.10.169 提供点,内部系统用的IP,如系统vm
Guest Network 300-999 10.1.1.0/24 10.1.1.1 10.1.1.10 10.1.1.250 来宾流量,用户vm使用
Storage Network 20 192.168.20.0/24 192.168.20.1 192.168.20.170 192.168.20.199 存储流量,后期可继续添加

连接示意图如下图所示: Advanced-Zone

部署CloudStack

配置系统相关服务

1. 配置IP

# echo "IPADDR=192.168.3.10
NETMASK=255.255.255.0
GATEWAY=192.168.3.254" >> /etc/sysconfig/network-scripts/ifcfg-eth0
# sed -i 's/dhcp/static' /etc/sysconfig/network-script/ifcfg-eth0
# sed -i 's/ONBOOT=no/ONBOOT=yes' /etc/sysconfig/network-script/ifcfg-eth0

2. 配置主机名

# echo "cs"> /etc/sysconfig/network
# hostname -F /etc/sysconfig/network
# echo "192.168.3.10   cs cs.cloud.com">> /etc/hosts
# hostname --fqdn
//检查配置是否有效

3. 关闭 selinux

# getenforce
//查看当前 selinux 状态
# setenforce 0
//临时设置 selinux 状态
# sed -i 's/enforcing/disabled/' /etc/selinux/config
//修改 selinux 配置文件,重启永久禁用

4. 配置系统的本地 yum 源

# yum clean all & yum makecache

5. 配置 ntp 服务器

# yum install ntp  -y
# vi /etc/ntp.conf
//编辑 ntp 配置文件,将服务器替换成可用对时服务器。
# service ntpd restart
# chkconfig ntpd on
//重启 ntp 服务,并且设置其开机启动

6. 确认java版本

管理节点不能安装JDK6或者其他较低的版本,如有安装,先卸载该JDK,再进行进行下面的步骤。(cs4.4开始改用JDK7)

# java -version

安装CloudStack

1. 配置cloudstack的yum源

# echo "[cloudstack-source]
name=cloudstack
baseurl=http://192.178.102.249/cloudstack/centos/4.5/
enabled=1
gpgcheck=0" > /etc/yum.repos.d/cloudstack.repo

实验室已将yum源同步到本地,不同版本配置不同,具体配置时以实际版本为准。

2. 安装cloudstack

# yum install -y cloudstack-management

3. 安装cloudstack-agent

# yum install -y cloudstack-agent

仅在KVM主机节点安装。

安装数据库

1. 安装mysql

# yum install mysql-server -y

CloudStack使用mysql管理数据,但安装cloudstack-management时没有包含mysql,需要手动安装,并导入数据。数据库可以被安装到其它机器上。 注意:允许远程mysql连接,方便以后查找问题

2. 修改mysql配置

# echo "[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=350
log-bin=mysql-bin
binlog-format = 'ROW'
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid" >/etc/my.cnf

max_connections 的参数应设置 350 乘以你准备部署的管 理节点的数量。这里假定只安装一个管理节点。

3. 修改mysql安全

# service mysqld start
# chkconfig mysqld on
# mysql_secure_installation
# service mysqld restart
Stopping mysqld:                                           [  OK  ]
Starting mysqld:                                           [  OK  ]
# /sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
# /etc/rc.d/init.d/iptables save

缺省安装的 mysql 安全级别比较低,需要手工设置 mysql 下密码、禁用远程访问,删除无用账户及测试数据库。

4. 导入数据

# cloudstack-setup-databases cloud:111111@localhost --deploy-as=root:111111

数据库准备好后,需导入 CloudStack 的表及基础数据,这样云平台才能正常使用。如果没有意外的话,最后会输出 CloudStack has successfully initialized database 字样,表示数据库已经准备好了。

启动CloudStack

1. 配置管理服务器服务并启动服务,检查服务状态。

# cloudstack-setup-management
# service cloudstack-management status
# tail -n 200 -f /var/log/cloudstack/management/catalina.out

配置系统模版

1. 确定模版版本

CloudStack使用一组系统虚机来提供访问虚机控台,各种网络服务和管理存储的功能。当你引导云的时候,该步骤会获取这些准备用于部署的系统镜像。现在我们要从刚刚挂载的共享存储上面下载虚机模板并部署它们。管理服务器上有一个脚本来操作这些系统虚机镜像。这里的模版已装好的数据库中看到系统使用的模版地址,下载对应版本即可:

SQL> SELECT NAME,URL FROM vm_template;

直接下载即可:

# wget http://download.cloud.com/templates/4.5/systemvm64template-4.5-vmware.ova

2. 挂载nfs

# mount -t nfs 192.168.50.10:/export/secondary /mnt

在管理服务器上挂载二级存储.

3. 导入系统模版

# /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt \
-m /mnt \
-u http://192.178.102.249/cloudstack/systemvm64template-4.4.1-7-vmware.ova \
-h vmware \
-F

数据库复制(可选)

CloudStack支持MySQL节点间的数据库复制。通过标准的MySQL复制功能来实现。这样做可能希望防止MySQL服务器或者存储损坏。MySQL复制使用master/slave的模型。master节点是直接为管理服务器所使用。slave节点为备用,接收来自master节点的所有写操作,并将它应用于本地冗余数据库。以下是实施数据库复制的步骤。

注: 创建复制并不等同于备份策略,你需要另外建立有别于复制的MySQL数据的备份机制。

1.配置主节点

确保这是一个全新安装且没有数据的master数据库节点。 编辑master数据库的my.cnf,在[mysqld]的datadir下增加如下部分。

log_bin=mysql-bin
server_id=1

考虑到其他的服务器,服务器id必须是唯一的。推荐的方式是将master的ID设置为1,后续的每个slave节点序号大于1,使得所有服务器编号如:1,2,3等。 重启MySQL服务。如果是RHEL/CentOS系统,命令为:

# service mysqld restart

如果是Debian/Ubuntu系统,命令为:

# service mysql restart

在master上创建一个用于复制的账户,并赋予权限。我们创建用户”cloud-repl”,密码为”password”。假设master和slave都运行在172.16.1.0/24网段。

# mysql -u root
mysql> create user 'cloud-repl'@'172.16.1.%' identified by 'password';
mysql> grant replication slave on *.* TO 'cloud-repl'@'172.16.1.%';
mysql> flush privileges;
mysql> flush tables with read lock;

离开当前正在运行的MySQL会话,在新的shell中打开第二个MySQL会话。检索当前数据库的位置点。

# mysql -u root
mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      412 |              |                  |
+------------------+----------+--------------+------------------+

注意你数据库实例所返回的文件及位置点,退出该会话。完成master安装。返回到master的第一个会话,取消锁定并退出MySQL。

mysql> unlock tables;

2.配置从节点

安装并配置slave节点。在slave服务器上,运行如下命令。

# yum install mysql-server
# chkconfig mysqld on

编辑my.cnf,在[mysqld]的datadir下增加如下部分。

server_id=2
innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600

重启MySQL。对于RHEL/CentOS系统,使用”mysqld”

# service mysqld restart

对于Ubuntu/Debian系统,使用”mysql.”

# service mysql restart

引导slave连接master并进行复制。使用上面步骤中得到数据来替换IP地址,密码,日志文件,以及位置点。

mysql> change master to
    -> master_host='172.16.1.217',
    -> master_user='cloud-repl',
    -> master_password='password',
    -> master_log_file='mysql-bin.000001',
    -> master_log_pos=412;

在slave上启动复制功能。

mysql> start slave;

在slave上可能需要开启3306端口。这对复制来说不是必须的。但如果没有做,当需要进行数据库切换时,你仍然需要去做。

故障切换

这将为管理服务器提供一个复制的数据库,用于实现手动故障切换。管理员将CloudStack从一个故障MySQL实例切换到另一个。当数据库失效发生时,你应该:

1.停止管理服务器:

service cloudstack-management stop

将数据库的副本服务器修改为master并重启,确保数据库的副本服务器的3306端口开放给管理服务器。 更改使得管理服务器使用这个新的数据库。最简单的操作是在管理服务器的/etc/cloudstack/management/db.properties文件中写入新的数据库IP地址。

2.重启管理服务器:

# service cloudstack-management start

配置CloudStack

创建Basic Zone

创建Advanced Zone

FAQ

  • 1、管理节点的webui 无法访问 Cloudstack基于tomcat提供web服务,默认使用了8080端口。如果你想改用其它端口,可以修改 /etc/tomcat6/server.xml 文件进行配置。 Cloudstack默认安装在 /etc/cloudstack/management 目录下,你可以通过修改 log4j-cloud.xml文件来调整日志的输出级别、路径等。 cloudstack默认日志在/var/log/cloudstack下

检查iptables是否阻挡了8080端口。检查cloudstack-management服务是否正常启动。

service cloudstack-management status

如果启动状态不正常,则需要检查一下日志。 日志位于 /var/log/cloudstack/management/catalina.out 。根据日志中的错误提示,进行相应的处理,绝大多数问题都可以得到解决。 如果日志信息不够详细,可以修改 /etc/cloudstack/management/log4j-cloud.xml来调整日志的输出级别。

  • 2、登陆时提示用户名密码不正确。

默认的登陆用户名为 admin 密码是 password 。 如果登陆时提示不正确,可能是导入基础数据库时有的问题。 重新导入基础数据库:

cloudstack-setup-databases cloud:123456@localhost --deploy-as=root:root密码

如果还不行,参考5将数据库删掉再重新导入。

  • 3、CloudStack不能添加主存储或二级存储

检查/etc/sysconfig/nfs配置文件是否把端口都开放了。 检查iptables是否有阻挡。 检查CloudStack的“全局设置”,secstorage.allowed.internal.sites属性是否设置正确。

  • 4、CloudStack无法导入IOS或虚拟机模板

创建好“基础架构”后,就可以导入ISO文件或虚拟机模板,为创建虚机做准备了。 如果你发现注册ISO或注册模板时,状态字段一直不动,已就绪永远都是no,那一般都是因为二级存储有问题或Secondary Storage VM 有问题了。 选择“控制板”-<系统容量,检查二级存储容量是否正确。 检查系统VM中的Secondary Storage VM是否正常启动。

  • 5、CloudStack如何重装

安装完CloudStack后,我们往往会做各种实验,可能会把系统搞得很乱。想删除的话非常麻烦,因为它们之间往往存在层级关系,必须先从最底层删起。有没简单的办法直接推倒重来呢?答案是有的,最简单只要重置下其数据库即可。 先停掉CloudStack服务:

service cloudstack-management stop

登陆mysql控制台,删除数据库:

mysql -u root -p123456
drop database cloud;
drop database cloud_usage;
drop database cloudbridge;
quit;
/etc/init.d/mysqld restart

重新导入基础数据:

cloudstack-setup-databases cloud:123456@localhost --deploy-as=root:123456

重新导入系统虚机: 在管理服务器上挂载二级存储:

mount 192.168.20.9:/export/secondary /mnt/

导入虚拟机模版

/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt \
-m /mnt \
-u http://192.178.102.249/cloudstack/systemvm64template-4.4.1-7-vmware.ova \
-h vmware \
-F

卸载

umount /mnt/
cloudstack-setup-management

重启cloudstack服务

service cloudstack-management start

这时,你再登陆就会发现一个全新的CloudStack啦。

  • 6、CloudStack的区域、提供点等无法用中文命名

CloudStack在4.1版本存在bug,请使用其他版本。