集群cluster
rhel6.5+Cman+RGManager+iSCSI+GFS2+cLVM 可扩展的集群共享存储
物理机192.168.2.4为管理端。selinux为disabled,火墙关闭,时间同步
两个虚拟机192.168.2.46和192.168.2.175为客户端,客户端可以有很多,客户端配置相同,火墙关掉,selinux为enforcing,时间要同步
管理端:
lftp i:/pub/gls> get dvd.repo //下载yum源,把之前的清空
yum install -y luci
/etc/init.d/luci start //启动时这里会有一个链接,等虚拟机配置完毕后打开链接即可,这个网页不需要连外网的
加入两台虚拟机的解析,直接ping两台虚拟机的域名ping通即可
客户端:
lftp i:/pub/gls> get dvd.repo //下载yum源,把之前的清空
yum install -y ricci //ricci安装后并不成成目录,加入集群后才会生成目录
passwd ricci //设置密码为westos,必须设置密码,这是系统版本要求
/etc/init.d/ricci start
chkconfig ricci on
浏览器:https://desktop.example.com:8084 //超户身份登录,点击Nodes,create集群,集群名字不要相同
创建集群的时候,写域名的时候一定要有解析,写ip则不需要,选择download packages,因为它会自动安装并更新软件包,选择use..则不会更新软件包;全部勾选。耗费时间比较长
如果创建后节点未能成功开启的解决办法:把集群相关服务全部开启,并设为开机自启动
/etc/cluster/cluster.conf //集群配置文件,如果有一个集群节点开启成功,把这个文件scp给未成功的节点,并把下面的服务启动
/etc//etc/init.d/cman start //集群核心通信服务,开启
/etc/init.d/rgmanager start
/etc/init.d/modclusterd start //监控服务
/etc/init.d/clvmd start
/etc/init.d/ricci start //监听端口为1409
chkconfig cman on
chkconfig rgmanager on
chkconfig modclusterd on
chkconfig clvmd on
chkconfig ricci on
(2)安装fence,fence一定在真机上配置
管理端:
rpm -qa |grep fence //一定要有下列三个服务,没有就安装
fence-virtd-libvirt-0.2.3-15.el6.x86_64
fence-virtd-0.2.3-15.el6.x86_64
fence-virtd-multicast-0.2.3-15.el6.x86_64 //虚拟化后台,多波方式
fence_virtd -c //生成fence_xvm.key配置,默认存储路径为/etc/cluster/fence_xvm.key
Interface [none]: br0 //选择br0作为通信接口
Backend module [checkpoint]: libvirt
/etc/init.d/fence_virtd start
mkdir /etc/cluster/ //这个目录没有就创建,应该是之前不存在,需要手动创建的目录
cd /etc/cluster/
dd if=/dev/urandom of=fence_xvm.key bs=128 count=1 //导出/dev/urandom生成128b为1个字节的fence_xvm.key文件
scp fence_xvm.key 192.168.2.46:/etc/cluster/ //把fence_xvm.key文件同步到两个节点中
scp fence_xvm.key 192.168.2.175:/etc/cluster/
netstat -anulp| grep 1229 //udp协议服务,端口为1229
可以在desktop46虚拟机cd /etc/cluster/--ll查看是否scp成功,应该是成功的
浏览器192.168.2.4:8084或者dektop.example.com:8084
点击Fence Device,再add
选择Fence Virt(Multid Mode)
name 为vmfence
打开虚拟机点击左上方的感叹号
复制vm1的uuid为d13407df-67d9-2887-73b1-5ce308cb20ca
再点击浏览器nodes 点击页面下方的Add Fence Method
Method Name为vmfence1
在浏览器找到Add Fence Instance 选择vmfence...这一项
Domain栏把刚上面复制的uuid粘贴下去,ok,这里本来是填虚拟机的名字如vm1,但是名字可能相同,而且找起来也慢,uuid是唯一的,更快,而且不会错,当然uuid和之前的域名要对应起来,不能弄错
再在该页面点击server75.example.com,点击页面下方的Add Fence Mode
Method Name为vmfence2
再把vm2的uuid为3e19bbb6-d3ef-f81f-013a-176e863ef1ec复制下来
点击Add Fence Instance 选择vmfence...这一项
Domain栏把刚上面复制的uuid粘贴下去,ok
在浏览器上找到Failover Domains然后点击add,name为webfail,Prioritized和Restricted勾选上,desktop46.example.com和server75.example.com都勾选上,并且在后面权限分别写个1,2
在所有的机器上yum install -y httpd 不需要你开启或关闭,由集群控制
cd /etc/cluster/-->ls->cat cluster.conf
在浏览器上找到Resources,点击add,选择IP Address,选择一个没有被占用的ip如192.168.2.134(ping不通就说明没占用)填写在IP Address栏,Netmask Bits (optional)写24,其他不变
再在Resources添加选择script,Name填写httpd,Full Path to Script File填写/etc/init.d/httpd
在浏览器找到Service Groups点击add,分别填写www,都勾选,选择webfail //如果www服务启动失败把资源管理器重启/etc/init.d/rgmanager restart
点击该页下面的add resource选择刚刚上面该写的ip192.168.2.134再点选add resource选择httpd服务,ok
在虚拟机终端执行clustat
在两台虚拟机上
都执行cd /var/www/html/-->echo `hostname` < index.html
打开浏览器输入192.168.2.175或者46都会看到显示各自主机名的网页
然后你随机把某一台虚拟机的http服务关掉,再在另一台虚拟机上watch cluster,你会发现有变化,而且在浏览器上输入192.168.2.134会显示服务关掉的网页,在没有显示前注意看虚拟机上监控的变化,需要一点时间变过来。
(3)磁盘信息本地存储,文件同步,先挂载,再卸载,才能在另一服务端查看到
管理端192.168.2.4
客户端:192.168.2.218和192.168.2.185
管理端:
yum install -y scsi*
lvcreate -L 3G -n iscsi vol0
lvs //查看iscsi磁盘信息
vim /etc/tgt/targets.conf //加入后重启不会失效
<target iqn.2014-07.com.example:server.target1>
backing-store /dev/vol0/iscsi
initiator-address 192.168.2.185
initiator-address 192.168.2.218
</target>
/etc/init.d/tgtd start
tgt-admin -s
//Backing store path: /dev/vol0/iscsi 后面显示路径即表示磁盘分享成功
客户端:
yum install -y iscsi*
iscsiadm -m discovery -t st -p 192.168.2.4 //建立目标,192.168.2.4是管理端ip地址
iscsiadm -m node -l //使生效
cd /var/lib/iscsi/nodes-->ls //可以查看到生效后的信息,iscsiadm -m node -o delete删除命令
fdisk -l //生效之后查看到多了一个磁盘/dev/sda,大小为3g
在某一个客户端如server85执行:
fdisk -cu /dev/sda
n p 1 enter enter p w
在另一个客户端server218上:
fdisk -l //刚刚在另一个客户端创建的磁盘已经共享,可以再这台主机上查看到相同的磁盘信息/dev/sda1
cat /proc/partitions //查看不到/dev/sda1,说明并没有真正同步
在server85上:
/etc/init.d/clvmd status //clvmd是lvm支持集群服务,要把服务开启,一般是开启的
在server218上:
partprobe //使磁盘真正同步
cat /proc/partitions //查看内核分区表,看到/dev/sda1,这时磁盘已经真正同步
lvmconf --enable-cluster
vim /etc/lvm/lvm.conf //搜索cluster查看到默认locking_type = 3,如果不是改为3
/etc/init.d/clvmd restart
pvs //扫描
在server85上:
vgcreate -cy clustervg /dev/sda1
在server218上:
pvs-->vgs //扫描出现/dev/sda2和clustervg
在server85上:
vgdisplay clustervg //Clustered为yes,支持集群
lvcreate -L 1G -n clusterlv clustervg
mkfs.ext4 /dev/clustervg/clusterlv //格式化
mount /dev/clustervg/clusterlv /var/www/html/
ll -dZ /var/www/html/
clusvcadm -s www //停掉www服务
df //查看已经挂载成功
getenforce //如果为强制,则执行下一步修改权限,若为disabled,则不需要修改权限
restorecon -Rv /var/www/html/-->ll -dZ /var/www/html/
cd /var/www/html/
vim index.html //内容为server85.example.com
umount /var/www/html/ //在//var/www/html/目录下是无法卸载的,要到其他目录下卸载
在server218上:
mount /dev/clustervg/clusterlv /var/www/html/
ll -dZ /var/www/html/ //查看权限是否修改成功
umount /var/www/html/ -->df
浏览器:http://desktop.example.com:8084
点击Resouces,add选择Filesystem,name为webdata,type为ext4,/var/www/html/, /dev/clustervg/clusterlv,1 2 4 5勾选,递交ok
点击Service Groups,先把httpd服务remove,然后找到下方的Add Resource,选择webdata,,再把httpd服务添加上,就是说把文件系统挂载之后再不apache服务加上去,递交ok
在server85上:
clusvcadm -e www //启动www集群服务,也可以在浏览器Service Groups上选择启动服务。clustat可以看到相关状态信息
// clusvcadm -r www -m server218.example.com 服务迁移命令,在server85上迁移至server218上
(4)集群网络存储同步,在一服务端任何操作,在另一服务端均能立即同步
在server85上:
clusvcadm -s www
//把集群服务停掉,然后在浏览器上把webdata服务remove删掉,只留下ip和scripts脚本
//把webdata删掉在于这是个ext4的文件系统,而网络存储是gfs2系统
mkfs.gfs2 -p lock_dlm -t oula:mygfs2 -j 3 /dev/clustervg/clusterlv //-j日志 一般是节点加1份日志,-p 集群锁 -t集群名字
mount /dev/clustervg/clusterlv /var/www/html/
cd /var/www/html/
vim index.html //内容写server85.example.com
restorecon -Rv /var/www/html/ //selinux为enforcing时才需要修改权限,为disabled时不需要修改权限
ll -dZ /var/www/html/
//修改权限后是drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/ ,
未修改前权限是drwxr-xr-x. root root system_u:object_r:file_t:s0 /var/www/html/
在server218上:
mount /dev/clustervg/clusterlv /var/www/html/
ll -dZ /var/www/html/ //直接挂载,查看权限和修改后权限后一致说明之前的操作都是正确的
cd /var/www/html/
//在该目录下创建或删除文件,在另一个服务端可以即时同步相应操作,比如创建文件,编辑文件内容等
umount /var/www/html/ //在两个服务端上执行这一步把。/var/www/html/卸载掉,在其他目录下卸载,在/var/www/html/目录卸载不了
blkid //把uuid序列号复制下来
vim /etc/fstab //写入如下信息
UUID=b77c412e-3327-6fea-0550-16784a9d7987 /var/www/html gfs2 _netdev 0 0
//因为是网络存储文件,所以defaults改为_netdev
mount -a //挂载测试:再把/dev/mapper/clustervg-clusterlv挂载到/var/www/html上,df查看挂载情况
ll -dZ /var/www/html/ //权限应为drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/
clusvcadm -e www //开启www服务组
clustat //查看状态
clusvcadm -r www -m server85.example.com
//更改主节点为server85.example.com,在server85上watch clustat,查看www服务状态变化,ok
(5)gfs2拉伸
在server85上:
gfs2_tool sb /dev/clustervg/clusterlv all
//sb_locktable = oula:mygfs2
gfs2_tool journals /dev/clustervg/clusterlv //查看日志文件,如果这步执行不了,再挂载一下mount /dev/clustervg/clusterlv /var/www/html/
lvextend -L +1G /dev/clustervg/clusterlv //lvextend -l +255 /。。拉伸单位为M时用l,为G时用L
gfs2_grow /dev/clustervg/clusterlv //扩展
lvs-->df -h //查看扩展后的大小,df -h以1024M为1G,df -H以1000M为1G,算法不同
gfs2_jadd -j 2 /dev/clustervg/clusterlv //新增日志2个,之前是3个,现在加2个就是5个
如果集群坏了,那我们挂载的/var/www/html/目录下所有数据都将丢失,但是原来目录/dev/clustervg/clusterlv/下的数据还是在的,这时候要把它取出来
lftp i:/pub> get gfs2.img //网络存储格式的磁盘空间,里面有很多数据
gfs2_tool sb gfs2.img all //sb_locktable = hacluster:mygfs,与之前的不一样
mount -t gfs2 -o loop,lockproto=lock_nolock gfs2.img /mnt/ //可以把/mnt/下内容scp到其他服务器上,把磁盘中数据取出来存储到其他安全服务器中,这样数据就恢复出来了
umount /mnt/ //在其他目录下卸载
(6)
再添加一台虚拟机192.168.2.128,server28.example.com,火墙和selinux刷掉,时间同步,四台主机解析做好
在server218上:scp /etc/yum.repos.d/dvd.repo 192.168.2.128:/etc/yum.repos.d/
在server128上:
yum源配置目录下只有dvd.repo一个配置文件,yum clean all
yum install -y ricci
passwd ricci //设置密码为westos
chkconfig ricci on
/etc/init.d/ricci start
浏览器:找到Node,选择add,写入server28.example.com,选择Download..,全部勾选,ok
找到Service Groups,勾选www服务disabled
dektop管理端上:
cd /etc/cluster/
scp fence_xvm.key 192.168.2.128:/etc/cluster/
浏览器:
找到Node,点击server28.example.com,点击下方的Add Fence Method,Method name为fence3,页面跳转后点击Add Fence Instance,选择vmfence..,domain填写虚拟即复制的uuid号3707b03c-f4e8-1f19-ec28-9f38aaba445c,递交,ok;
再点击页面的Failover Domains,点击webfail,勾选server28.example.com,然后权限为2,update..ok;
server28上:
yum install -y httpd
yum install -y iscsi*
在管理端dekstop上:
tgtadm --lld iscsi --op bind --mode target --tid 1 -I 192.168.2.128 //将192.168.2.128临时加入iscsi,重启后将失效
tgt-admin -s //查看节点192.168.2.128是否添加成功
vim /etc/tgt/targets.conf //永久生效
initiator-address 192.168.2.128
/etc/init.d/tgtd restart
server28上:
iscsiadm -m discovery -t st -p 192.168.2.4
iscsiadm -m node -l
lvmconf --enable-cluster //使lvm支持集群
/etc/init.d/clvmd restart
lvs-->vgs //clustervg和clusterlv都添加成功
vim /etc/fstab
UUID=b77c412e-3327-6fea-0550-16784a9d7987 /var/www/html gfs2 _netdev 0 0
clusvcadm -e www
//启动www服务,也可以在浏览器上把www服务start ,如果某个服务端fence不同步,把该服务端fence_xvm -H node2重启即可
clustat //查看集群状态