一、环境介绍:

Cloudstack-Management:10.12.0.10

Gluster-Management:10.12.0.11

Node:10.12.0.12

Node:10.12.0.13

Node:10.12.0.14

Node:10.12.0.15

Node:10.12.0.16

Node:10.12.0.17

Node:10.12.0.18

Node:10.12.0.19

Node:10.12.0.20

Node:10.12.0.21

Node:10.12.0.22

Node:10.12.0.23

Node:10.12.0.24

Node:10.12.0.25

Node:10.12.0.26

二 、安装:

    

    首先搭建Glusterfs存储环境(10.12.0.11):

    

    

Glusterfs 分部式存储搭建:

wget -P /etc/yum.repos.d/ http://download.gluster.org/pub/gluster/glusterfs/LATEST/EPEL.repo/glusterfs-epel.repo

yum -y install epel-release.noarch

yum clean all

yum makecache

yum -y install glusterfs glusterfs-server

添加服务并启动:

chkconfig glusterd on

service glusterd start

创建卷目录

mkdir -p /home/primary  (建立用于主存的文件目录)

mkdir -p /home/secondary  (建立用于辅存的文件目录)

mkdir -p /home/ctdb        (建立用于ctdb的文件目录)

sed -i "/OUTPUT/a -A INPUT -s 10.12.0.0/16 -j ACCEPT" /etc/sysconfig/iptables


添加Gluster节点:

gluster peer probe 10.12.0.12

gluster peer probe 10.12.0.13

gluster peer probe 10.12.0.14

gluster peer probe 10.12.0.15

gluster peer probe 10.12.0.16

gluster peer probe 10.12.0.17

gluster peer probe 10.12.0.18

gluster peer probe 10.12.0.19

gluster peer probe 10.12.0.20

gluster peer probe 10.12.0.21

gluster peer probe 10.12.0.22

gluster peer probe 10.12.0.23

gluster peer probe 10.12.0.24

gluster peer probe 10.12.0.25

gluster peer probe 10.12.0.26

查看节点状态:

gluster peer status

gluster volume info


创建虚拟卷:

gluster volume create 虚拟卷名 stripe 3 replica 2 10.12.0.12:/home/primary 

distribute分布式, stripe条带式, replica副本式,可叠加组合 


“replica 2”表示每个文件保存为两个副本,最少需要2台服务器。

“stripe 2 replica 2”表示每个文件切成条保存到2个地方,且保存为两个副本,最少需要4台服务器。

如果卷目录位于根分区下,后面要加force


}


例:

gluster volume create primary stripe 8 replica 2 10.12.0.11:/home/primary/ 10.12.0.12:/home/primary/ 10.12.0.13:/home/primary/ 10.12.0.14:/home/primary/ 10.12.0.15:/home/primary/ 10.12.0.16:/home/primary/ 10.12.0.17:/home/primary/ 10.12.0.18:/home/primary/ 10.12.0.19:/home/primary/ 10.12.0.20:/home/primary/ 10.12.0.21:/home/primary/ 10.12.0.22:/home/primary/ 10.12.0.23:/home/primary/ 10.12.0.24:/home/primary/ 10.12.0.25:/home/primary/ 10.12.0.26:/home/primary/

gluster volume create secondary stripe 8 replica 2 10.12.0.11:/home/secondary/ 10.12.0.12:/home/secondary/ 10.12.0.13:/home/secondary/ 10.12.0.14:/home/secondary/ 10.12.0.15:/home/secondary/ 10.12.0.16:/home/secondary/ 10.12.0.17:/home/secondary/ 10.12.0.18:/home/secondary/ 10.12.0.19:/home/secondary/ 10.12.0.20:/home/secondary/ 10.12.0.21:/home/secondary/ 10.12.0.22:/home/secondary/ 10.12.0.23:/home/secondary/ 10.12.0.24:/home/secondary/ 10.12.0.25:/home/secondary/ 10.12.0.26:/home/secondary/

启动卷:

gluster volume start primary

gluster volume start secondary


设置访问权限:

gluster volume set primary auth.allow 10.12.0.*  (设置允许访问的地址,如果有多个地址可以用逗号连接,不设置,默认允许所有)

gluster volume set secondary auth.allow 10.12.0.*



搭建ctdb来使用nfs共享:

安装ctdb(此操作也在:10.12.0.11上):

yum install nfs-utils

yum install ctdb


创建本地挂载Glusterfs的secondary卷目录并挂载:

mkdir /secondary

mount -t glusterfs 10.12.0.11:/secondary /secondary

修改开机自动挂载:在/etc/fstab的后面一行加入以下:

vim /etc/fstab


192.168.30.239:/secondary /secondary          glusterfs defaults      0 0


创建ctdb配置文件:

1、创建nfs文件:

    mv /etc/sysconfig/nfs /etc/sysconfig/nfs.bak

    vim /secondary/nfs


CTDB_MANAGES_NFS=yes
NFS_TICKLE_SHARED_DIRECTORY=/secondary/nfs-tickles
STATD_PORT=595
STATD_OUTGOING_PORT=596
MOUNTD_PORT=597
RQUOTAD_PORT=598
LOCKD_UDPPORT=599
LOCKD_TCPPORT=599
STATD_SHARED_DIRECTORY=/secondary/lock/nfs-state
NFS_HOSTNAME="Node11.test.com"
STATD_HOSTNAME="$NFS_HOSTNAME -P "$STATD_SHARED_DIRECTORY/$PUBLIC_IP" -H /etc/ctdb/statd-callout -p 97"
RPCNFSDARGS="-N 4"


2、创建NFS配置文件:

ln -s /secondary/nfs /etc/sysconfig/nfs


3、创建NFS共享目录配置文件: 

vi /secondary/exports


/secondary  *(fsid=1235,insecure,rw,async,no_root_squash,no_subtree_check)


rm -rf /etc/exports

ln -s /secondary/exports /etc/exports


添加防火墙规则:

vim /etc/sysconfig/iptables 

-A INPUT -s 10.12.0.0/16 -m state --state NEW -p udp --dport 111 -j ACCEPT
-A INPUT -s 
-A INPUT -s 
-A INPUT -s 
-A INPUT -s 
-A INPUT -s 
-A INPUT -s 
-A INPUT -s 
-A INPUT -s 
-A INPUT -s 
-A INPUT -s



创建ctdb配置文件,同样是放到存储卷里面,给其他服务器共用:

vim /secondary/ctdb


CTDB_RECOVERY_LOCK=/secondary/lockfile
CTDB_PUBLIC_INTERFACE=eth0
CTDB_PUBLIC_ADDRESSES=/secondary/public_addresses
CTDB_MANAGES_NFS=yes
CTDB_NODES=/secondary/nodes
CTDB_DEBUGLEVEL=ERR


(注;ctdb可能是对网桥模式有干扰,建议使用“直连”网卡:即:eth0-3)


mv /etc/sysconfig/ctdb /etc/sysconfig/ctdb.bak

ln -s /secondary/ctdb /etc/sysconfig/ctdb


创建ctdb虚拟地址(VIP):

vim /secondary/public_addresses

10.12.0.10/24 eth0


创建ctdb节点文件:

vim /secondary/nodes


10.12.0.11

10.12.0.12

10.12.0.13

10.12.0.14

10.12.0.15

10.12.0.16

10.12.0.17

10.12.0.18

10.12.0.19

10.12.0.20

10.12.0.21

10.12.0.22

10.12.0.23

10.12.0.24

10.12.0.25

10.12.0.26


设置开机启动并启动:

chkconfig ctdb on

chkconfig nfs off 

/etc/init.d/ctdb start


查看ctdb信息:

ctdb status


ctdb ping -n all


ctdb ip
Public IPs on node 1
10.10.10.15 node[0] active[] available[eth0] configured[eth0]  (显示10.10.10.15这个接口地址正工作在node0上)

ctdb pnn
PNN:1      (自己是node1)


以下操作是在所有节点服务器上操作(即:12---26)

yum -y install nfs-utils

yum -y install ctdb

mkdir /secondary

mount -t glusterfs 10.12.0.11:/secondary /secondary

修改开机自动挂载:在/etc/fstab的后面一行加入以下:

vim /etc/fstab


192.168.30.239:/secondary /secondary            glusterfs defaults      0 0

mv /etc/sysconfig/nfs /etc/sysconfig/nfs.bak

ln -s /secondary/nfs /etc/sysconfig/nfs


rm -rf /etc/exports

ln -s /secondary/exports /etc/exports


mv /etc/sysconfig/ctdb /etc/sysconfig/ctdb.bak

ln -s /secondary/ctdb /etc/sysconfig/ctdb


设置开机启动并启动:

chkconfig ctdb on

chkconfig rpcbind on

chkconfig nfs off 

/etc/init.d/ctdb start

最后再重启下10.12.10.11这台机器的ctdb:

/etc/init.d/ctdb restart

ctdb status

ctdb ping -n all

ctdb ip

ctdb pnn


使用ip r查看下是否有VIP:

ip r



测试:

找任何一台机器,mount上后创建一个文件,查看其它机器上是否已经写入;

例:

mount -t nfs 10.12.0.10:/secondary /mnt

touch /mnt/a.txt

在其它节点(12--26)上安装操作:


wget -P /etc/yum.repos.d/ http://download.gluster.org/pub/gluster/glusterfs/LATEST/EPEL.repo/glusterfs-epel.repo

yum -y install epel-release.noarch

yum clean all

yum makecache

yum -y install glusterfs glusterfs-server

chkconfig glusterd on

service glusterd start


在 Cloudstack-Management:10.12.0.10上安装:

网络配置

使用脚本脚本修改:

脚本下载地址:http://pan.baidu.com/s/1pLaNjZ1

或 使用以下方式修改:

cd /etc/sysconfig/network-scripts/

cat <<EOF> /etc/sysconfig/network-scripts/ifcfg-cloudbr0

DEVICE="cloudbr0"

BOOTPROTO="static"

MTU="1500"

NM_CONTROLLED="yes"

ONBOOT="yes"

TYPE="Bridge"

IPADDR=172.16.0.2

NETMASK=255.255.0.0

GATEWAY=172.16.0.1

DNS1=223.5.5.5

EOF

cat <<EOF> /etc/sysconfig/network-scripts/ifcfg-cloudbr1

DEVICE="cloudbr1"

BOOTPROTO="static"

MTU="1500"

NM_CONTROLLED="yes"

ONBOOT="yes"

TYPE="Bridge"

IPADDR=10.10.0.2

NETMASK=255.255.0.0

EOF

cat <<EOF> /etc/sysconfig/network-scripts/ifcfg-cloudbr2

DEVICE="cloudbr2"

BOOTPROTO="static"

MTU="1500"

NM_CONTROLLED="yes"

ONBOOT="yes"

TYPE="Bridge"

IPADDR=10.11.0.2

NETMASK=255.255.0.0

EOF

cat <<EOF> /etc/sysconfig/network-scripts/ifcfg-cloudbr3

DEVICE="cloudbr3"

BOOTPROTO="static"

MTU="1500"

NM_CONTROLLED="yes"

ONBOOT="yes"

TYPE="Bridge"

IPADDR=10.12.0.2

NETMASK=255.255.0.0

EOF

cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"

BOOTPROTO="static"

NM_CONTROLLED="yes"

ONBOOT="yes"

TYPE="Ethernet"

BRIDGE=cloudbr0

EOF

cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE="eth1"

TYPE="Ethernet"

ONBOOT="yes"

NM_CONTROLLED="yes"

BOOTPROTO="static"

BRIDGE="cloudbr1"

EOF

cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-eth2

DEVICE="eth2"

TYPE="Ethernet"

ONBOOT="yes"

NM_CONTROLLED="yes"

BOOTPROTO="static"

BRIDGE="cloudbr2"

EOF

cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-eth3

DEVICE="eth3"

TYPE="Ethernet"

ONBOOT="yes"

NM_CONTROLLED="yes"

BOOTPROTO="static"

BRIDGE="cloudbr3"

EOF


chkconfig network on

service network restart

(注:以上这些命令需要在每个Node节点上去操作,桥接网卡信息,因为cloudstack要求必须桥接网卡)


主机名

Cloudstack要求正确设置主机名,如果安装时您接受了默认选项,主机名为localhost.localdomain,输入如下命令可以进行验证


hostname --fqdn

在此处将返回:


localhost


为了纠正这个问题,需设置主机名,通过编辑/etc/hosts 文件,将其更改为类似如下内容:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.0.2 srvr1.cloud.priv

更改配置文件后,重启网络服务:


service network restart


通过hostname –fqdn命令重新检查主机名,并确认返回了正确的FQDN


SELinux

当前的CloudStack需要将SELinux设置为permissive才能正常工作,您需要改变当前配置,同时将该配置持久化,使其在主机重启后仍然生效。

在系统运行状态下将SELinux配置为permissive需执行如下命令:

setenforce 0

为确保其持久生效需更改配置文件/etc/selinux/config,设置为permissive,如下例所示:

# This file controls the state of SELinux on the system.# SELINUX= can take one of these three values:# enforcing - SELinux security policy is enforced.# permissive - SELinux prints warnings instead of enforcing.# disabled - No SELinux policy is loaded.SELINUX=permissive# SELINUXTYPE= can take one of these two values:# targeted - Targeted processes are protected,# mls - Multi Level Security protection.SELINUXTYPE=targeted


NTP

为了同步云平台中主机的时间,需要配置NTP,但NTP默认没有安装。因此需要先安装NTP,然后进行配置。通过以下命令进行安装:

yum -y install ntp

实际上默认配置项即可满足的需求,仅需启用NTP并设置为开机启动,如下所示:

 chkconfig ntpd on service ntpd start

管理服务器安装

接下来进行CloudStack管理节点和相关工具的安装。

数据库安装和配置

首先安装MySQL,并对它进行配置,以确保CloudStack运行正常。

运行如下命令安装:

yum -y install mysql-server

MySQL安装完成后,需更改其配置文件/etc/my.cnf。在[mysqld]下添加下列参数:

innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=350
log-bin=mysql-bin
binlog-format='ROW'

正确配置MySQL后,启动它并配置为开机自启动:

service mysqld start
chkconfig mysqld on

(为安全起见,建议修改mysql的root密码,默认为空)

安装Cloudstack

首先下载Cloudstack的RPM包:

下载地址:

http://pan.baidu.com/s/1eRCdaYu

下载完成后,完速的安装目录为:

spacer.gif

如果安装包不正确,请留言索取正确的安装包!

现在将要开始安装管理服务器。执行以下命令:

yum -y localinstall cloudstack-awsapi-4.4.1-NONOSS_3.el6.x86_64.rpm cloudstack-cli-4.4.1-NONOSS_3.el6.x86_64.rpm cloudstack-common-4.4.1-NONOSS_3.el6.x86_64.rpm cloudstack-management-4.4.1-NONOSS_3.el6.x86_64.rpm cloudstack-usage-4.4.1-NONOSS_3.el6.x86_64.rpm

在程序执行完毕后,需初始化数据库,通过如下命令和选项完成:

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

当该过程结束后,您应该可以看到类似信息:”CloudStack has successfully initialized the database.”。

数据库创建后,最后一步是配置管理服务器,执行如下命令:

cloudstack-setup-management
上传系统模板

CloudStack通过一系列系统虚拟机提供功能,如访问虚拟机控制台,如提供各类网络服务,以及管理辅助存储的中的各类资源。该步骤会获取系统虚拟机模板,用于云平台引导后系统虚拟机的部署。

然后需要下载系统虚拟机模板,并把这些模板部署于刚才创建的辅助存储中;管理服务器包含一个脚本可以正确的操作这些系统虚拟机模板:

/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt \-m /secondary \-f /soft/systemvm64template-4.4.1-7-kvm.qcow2.bz2 \
-h kvm -F

至此,Management就已经安装完成,以下在所以的Node节点上操作:


yum -y localinstall cloudstack-common-4.4.1-NONOSS_3.el6.x86_64.rpm cloudstack-agent-4.4.1-NONOSS_3.el6.x86_64.rpm

启动服务:

/etc/init.d/cloudstack-agent start