红联Linux门户
Linux帮助

Linux学习之使用RHCS套件搭建HA高可用集群

发布时间:2015-04-07 15:15:28来源:linux网站作者:linux_near

参考文档网站:https://access.redhat.com/site/documentation/zh-CN/Red_Hat_Enterprise_Linux/index.html

 
这里使用rhel6.5操作系统
 
真机:192.168.2.42 ankse.example.com
结点1:192.168.2.109 server109.example.com
结点2:192.168.2.205 server205.example.com
过程中注意各个结点解析,时间同步


1、两个结点配置yum
[root@server205 ~]# vim /etc/yum.repos.d/rhel-source.repo
# repos on instructor for classroom use
 
# Main rhel6.5 server
[base]
name=Instructor Server Repository
baseurl=http://192.168.2.251/pub/rhel6.5
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
 
# HighAvailability rhel6.5
[HighAvailability]
name=Instructor HighAvailability Repository
baseurl=http://192.168.2.251/pub/rhel6.5/HighAvailability
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
 
# LoadBalancer packages
[LoadBalancer]
name=Instructor LoadBalancer Repository
baseurl=http://192.168.2.251/pub/rhel6.5/LoadBalancer
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
 
# ResilientStorage
[ResilientStorage]
name=Instructor ResilientStorage Repository
baseurl=http://192.168.2.251/pub/rhel6.5/ResilientStorage
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
 
# ScalableFileSystem
[ScalableFileSystem]
name=Instructor ScalableFileSystem Repository
baseurl=http://192.168.2.251/pub/rhel6.5/ScalableFileSystem
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[root@server205 ~]# yum clearn all
真机yum添加
# HighAvailability rhel6.5
[HighAvailability]
name=Instructor HighAvailability Repository
baseurl=http://192.168.2.251/pub/rhel6.5/HighAvailability
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release


2、安装管理软件luci和ricci
真机安装luci
[root@ankse ~]# yum install luci -y
[root@ankse ~]# /etc/init.d/luci start
 
虚拟机结点分别
[root@server205 ~]# yum install -y ricci
[root@server205 ~]# passwd ricci
Changing password for user ricci.
New password: 修改密码为root
passwd: all authentication tokens updated successfully.
[root@server205 ~]# /etc/init.d/ricci start
[root@server205 ~]# chkconfig ricci on


3、配置集群
真机浏览器访问https://ankse.example.com:8084
首先使用真机root登入,之后在admin授权给一普通用户权限,避免使用root
使用ankse登录,creat,创建集群名称,加入主机,密码是ricci的密码,选择下载包,加入集群重启,支持分享存储,创建;
在结点上clustat命令查看集群状态。
安装fence,当一台设备故障时,直接断掉它的电源,避免瞬间故障导致脑裂;
[root@ankse ~]# yum install fence-virt fence-virtd fence-virtd-libvirt fence-virtd-multicast -y
[root@ankse ~]# fence_virtd -c 生成配置文件
Module search path [/usr/lib64/fence-virt]:
Listener module [multicast]:
Multicast IP Address [225.0.0.12]:
Multicast IP Port [1229]:
Interface [none]: br0
Key File [/etc/cluster/fence_xvm.key]:
Backend module [checkpoint]: libvirt
Libvirt URI [qemu:///system]:
Replace /etc/fence_virt.conf with the above [y/N]? y
[root@ankse ~]# mkdir /etc/cluster
[root@ankse ~]# cd /etc/cluster/
[root@ankse cluster]# dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1
[root@ankse cluster]# scp fence_xvm.key 192.168.2.109:/etc/cluster/
[root@ankse cluster]# scp fence_xvm.key 192.168.2.205:/etc/cluster/
[root@ankse cluster]# /etc/init.d/fence_virtd start
[root@ankse ~]# chkconfig fence_virtd on
[root@ankse cluster]# netstat -anulp | grep fence
udp        0      0 0.0.0.0:1229                0.0.0.0:*                              17405/fence_virtd
之后在网页上的集群中添加fence设备,选择设备为fence virt多波模式,name为vmfence,然后在每个结点上添加fence method,name为vmfence-1,再添加fence instance,domain写入从虚拟机管理器中得到的UUID。
在cluster2:192.168.2.205上测试fence功能
[root@server205 ~]# fence_xvm -H cluster1,之后cluster1就会重启
 
添加failover domains
输入name为web,prioritized优先级,restricted服务独占,no failback恢复不再接管。
添加resource资源,IP地址192.168.2.208,向外部展示的虚拟ip,监控主机,不更新静态路由,时间间隔。
script脚本,name为apache,Full Path to Script File /etc/init.d/httpd
两个结点安装httpd,echo `hostname` > index.html。
 
添加服务组,name为www,自动开启服务,恢复选择重新定位,再添加上边的两个资源。测试,访问192.168.2.208,关闭优先级高的httpd,会跳转到另一各结点;关闭运行httpd的结点eth0,该结点会被fence重启,httpd将运行到另一个结点上。内核崩溃测试echo c > /proc/sysrq-trigger.
 如果www为红色获取状态失败,在一个结点上查看状态clustat,如果一直recover,则关闭再激活clusvcamd -d www关闭  clusvcadm -e www激活
 
添加设备资源
在42真机上创建设备
[root@ankse ~]# lvcreate -L 2G -n iscsi VolGroup
[root@ankse ~]# yum install scsi-*
[root@ankse ~]# vim /etc/tgt/targets.conf
<target iqn.2014-05.com.example:server.target1>
backing-store /dev/VolGroup/iscsi
initiator-address 192.168.2.109
initiator-address 192.168.2.205
</target>
[root@ankse ~]# /etc/init.d/tgtd start
[root@ankse ~]# chkconfig tgtd on
[root@ankse ~]# tgt-admin -s 查看
 
结点安装iscsi-initiator-utils
[root@server109 ~]# iscsiadm -m discovery -t st -p 192.168.2.42
[root@server109 ~]# iscsiadm -m node -l 登录到设备
[root@server109 ~]# fdisk -cu /dev/sda 分区
[root@server109 ~]# mkfs.ext4 /dev/sda1 格式化
 
在网页中recources为集群添加设备,资源通过集群管理
选择文件系统设备,name为wwwdata,挂载点选择/var/www/html,设备/dev/sda1,选择force unmount,快速状态检测,卸载设备失败重启结点,提交。服务组www里重新添加ip,设备,apache,提交。之后会自动挂在在某一结点上。
 
selinux
[root@server109 html]# ll -Z
-rw-r--r--. root root unconfined_u:object_r:file_t:s0  index.html
drwx------. root root system_u:object_r:file_t:s0      lost+found
[root@server109 html]# restorecon -Rv .
[root@server109 html]# ll -Z
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html
drwx------. root root system_u:object_r:httpd_sys_content_t:s0 lost+found
之后正常访问,一边httpd停止,则服务和磁盘转至另一结点。


4、添加GFS2资源
[root@server109 ~]# clusvcadm -d www
网页上先删除服务组的磁盘。再在资源删除wwwdata,在某结点修改sda1为8e,常常使用LVM。
[root@server109 ~]# fdisk -cu /dev/sda
Command (m for help): t
Hex code (type L to list codes): 8e
Command (m for help): w
[root@server109 ~]# pvcreate /dev/sda1
[root@server109 ~]# lvmconf --enable-cluster 使lvm支持集群
[root@server109 ~]# /etc/init.d/clvmd restart
[root@server109 ~]# vgcreate -cy clustervg /dev/sda1
[root@server109 ~]# lvcreate -L 1G -n gfs2demo clustervg 在另一个结点上使用pvs、vgs、lvs可以查看到
[root@server109 ~]# mkfs.gfs2 -p lock_dlm -t ankse:mygfs2 -j 3 /dev/clustervg/gfs2demo 格式化为gfs2文件系统,使用分布式锁,指定集群标签,日志记录结点个数,以后还可以添加。
[root@server109 ~]# mount /dev/clustervg/gfs2demo /var/www/html/
[root@server109 ~]# cd /var/www/html/ 建立index文件
[root@server109 html]# restorecon -Rv . 刷新selinux上下文,如果没开就不用做了
然后在另一个结点上挂载,查看selinux上下文以及index文件同步情况。
 
设置开机自动挂载,所有结点都做同样操作。
[root@server109 html]# blkid 找出设备的UUID
[root@server109 ~]# vim /etc/fstab
UUID="71d573d1-fead-36b2-ab50-1e62286525b7"    /var/www/html  gfs2    _netdev,defaults        0 0
[root@server109 ~]# umount /var/www/html/ 结点上卸载
[root@server109 ~]# mount -a 然后df查看
[root@server109 ~]# clusvcadm -e www 打开集群服务,访问网站测试
[root@server109 ~]# clusvcadm -r www -m server205.example.com
重定位服务结点,访问测试。
 
使用集群管理网页添加gfs2文件系统
[root@server109 ~]# clusvcadm -d www 停止服务
[root@server109 ~]# vim /etc/fstab 去掉自动挂载
[root@server109 ~]# umount /var/www/html/ 卸载文件系统
网页管理上添加资源,选择GFS2,使用设备名、标签、UUID均可作为挂载标识,强制卸载,卸不了重启,提交。
服务组里边添加GFS2设备,apache服务。开启www,访问测试。测试结果只有添加设备名/dev/mapper/clustervg-gfs2demo可以,UUID,标签都不能成功。
[root@server109 ~]# clusvcadm -d www
Local machine disabling service:www...Success
[root@server109 ~]# clusvcadm -e www
Local machine trying to enable service:www...Success
 
添加日志记录结点数
[root@server109 ~]# gfs2_tool journals /dev/clustervg/gfs2demo 查看结点日志数
[root@server109 ~]# lvextend -l +255 /dev/clustervg/gfs2demo
[root@server109 ~]# gfs2_grow /dev/clustervg/gfs2demo 扩大文件系统容量,每个日志占用128M
[root@server109 ~]# gfs2_jadd -j 2 /dev/clustervg/gfs2demo 添加两个结点日志
[root@server109 ~]# gfs2_tool journals /dev/clustervg/gfs2demo 再次查看
 
挂载分布式锁文件系统
当集群出现问题,由于锁机制的存在,不允许挂载,所以使用
[root@server109 ~]# gfs2_tool sb /dev/clustervg/gfs2demo all 查看设备所属集群信息
lftp i:/pub> get gfs2.img 下载hacluster集群的文件系统测试,可由dd命令得到
[root@server109 ~]# gfs2_tool sb gfs2.img all
sb_lockproto = lock_dlm
sb_locktable = hacluster:mygfs
[root@server109 ~]# mount -t gfs2 -o lockproto=lock_nolock,loop gfs2.img /mnt/ 挂载文件,使用loop参数
[root@server109 ~]# ls /mnt/good\ luck
就可以查看该文件系统的文件了。