HA含义为在集群服务器架构中,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现对用户的不间断服务。
(1)基本安装
Server1和server2 为High Availability的两个节点
在两个节点上配置完整的rhel6.5的yum源,安装ricci,创建ricci用户,密码westos,启动并设置开机启动ricci。
将instructor机作为管理机(M端),安装luci,启动luci服务
web上配置
在web上输入https://instructor.example.com:8084 //m端通过8084端口设置节点
输入M 端root用户名和密码
点击Nodes->create 创建集群
Cluster name 为yakexi_ha(自定义)
下面两行填写两个节点hostname和密码(ricci的密码)
勾选下载包、在加入集群之前重启、支持分享存储这三个选项,
点击创建,集群创建完成。
点击server1.example.com,可以看到底部相关集群服务已启动,其中,
Cman:控制组管理器
Rgmanager;资源组管理器
在server1上
#clustat 显示两个节点都是online,表明HA架构创建成功。
(2)Fence服务配置
当集群中一个节点僵住处于假死状态时,服务器会向另一个节点请求数据,若僵住的节点突然正常,向服务器发送数据,两节点数据冲突,会造成服务器的数据损坏,这种现象成为脑裂。为避免这种情况,可以采用fence服务,fence可以将假死节点在主板上跳电关机,避免脑裂发生。
在M端,
#yum install fence-virtd-multicast-0.3.2-2.e17.x86_64 fence-virtd-libvirt-0.3.2-2.e17.x86_64 fence-virt-0.3.2-2.e17.x86_64
#fence_virtd -c //创建fence
Listener module [muliticast] :默认多播监听模块,回车
Multicast IP Address [225.0.0.12]:默认组播IP,回车
Multicast IP Port [1229]:默认多播端口为1229端口,回车
Interface [none]:输入一个网卡,如br0
key file [/etc/cluster/fence_xvm.key]:显示fence_xvm.key文件,回车
Backend module [checkpoint]: 后端模块为libvirt 回车
Libvirt url [qemu:///system]: 回车
replace /etc/fence_virt.conf with the above [y/n] :y
重启fence_virtd服务
#netstat -anulp |grep 1229
显示fence_virtd 的套结字,表明fence的m端配置成功。
#dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1 //为fence_xvm.key写入随机数密码
重启fence_virtd
将key文件发送到两个节点的/etc/cluster/下。
在web上,点击fence devices
选择fence virt(multicast mode),name为server1.example.com.
同上将server2.example.com加到fence devices中
点击nodes->server1.example.com
在fence devices 中点击add fence method ,创建fence method名(如vmfence-1).
点击add fence instance 选择vmface(xvm virtual machine fencing). Domain 为server1的uuid。
同理在server2中添加server2到vmfence-2。
在server1上,
#fence_node server2.example.com
显示fence server2.example.com success 表明两节点的fence服务连接成功
在web上,点击failover domains(故障转移域) ->add
因为接下来是验证apache服务故障转移能力,所以name为webfail(自定义),勾选优先级(安排节点优先级)、限制(服务只能在特定节点上运行)、不回错(当僵死的服务再次复活时不让它的优先级回到1)。
勾选两个节点,优先级分别为1,2.
然后点击上面的resources->add 选择ip address ,ip address 为172.25.0.100,子网掩码为24,勾选monitor link ,设置当ip地址移除5秒后休眠。这样虚拟ip (vip) 配置成功。
再点add, 选择script,name为httpd,path为/etc/init.d/httpd.(节点服务为httpd,注意 两节点都要安装httpd且主页分别为server1.example.com 和 server2.example.com)。
点击service groups->add ,
Name为apache,勾选自动启动服务和独立运行。故障转移域为webfail,恢复计划为重新安置。
这样服务组设置完成。
在server2中,
#clustat
显示群组的apache由server2上开启
Web上登陆172.25.0.100后界面显示server2.example.com
#clusvcadm -r apache -m server1.example.com //切换apache服务切换到server1上
注:
Clusvcadm用来管理HA服务。
1. 启动某个应用服务
可以通过如下方式启动某个节点的应用服务:
clusvcadm -e -m
2. 关闭某个应用服务
可以通过如下方式关闭某个节点的应用服务:
clusvcadm -s -m
3. 重启某个应用服务
可以通过如下方式重启某个节点的应用服务:
clusvcadm -R -m
4. 切换某个服务
可以通过如下方式将一个应用服务从一个节点切换到另一个节点:
clusvcadm -r -m
刷新web,显示server1.example.com
在将apache切换到server2上
刷新web,显示server2.example.com
#echo c > /proc/sysrq-trigger //破坏server2内核
刷新web,显示server1.example.com
(3)集群共享存储
在m端
要有空余空间的逻辑卷。如图
#yum install iscsi-initiator-utils-6.2.0.873.e16.x86_64 scsi-target-utils-1.0.24-2.e16.x86_64 -y // 服务端tgt软件名为scsi-target-utils
#vim /etc/tgt/targets.conf
编辑如图下
//将存储(/dev/vol0/demo)共享给server1和server2两个节点
重启tgtd
#tgt-admin -s //显示共享存储信息,ACL为权限列表。
注:tgt-admin是一个对Target和luns进行持久化配置的工具。它使用tgtadm命令进行Target创建、删除和显示等操作。
在server2上
安装iscsi-initiator-utils
将iscsi启动并设为开机启动
#iscsiidm -t st -m discovery -p 172.25.0.251 //发现远端存储 st为sata模式
#iscsiadm -m node -l // 以集群节点登陆远端存储
对远端存储进行分区,pv、vg、lv 。卷组名为clustervg, 逻辑卷名为lv1,并格式化为ext4.
#iscsiadm -m node -u //登出
#iscsiadm -m node -o delete //卸载远端存储
在server1上,同server2。
Server2、server1都登陆挂载远程存储。并都mount到/mnt目录
Server1在mount上创建名为clu的文件,在server2上也能看到。这是集群远程存储的同步性。
在web上,resource->add
通过网页设置节点上的远端存储
选择filesystem ,name为webdata,type为ext4,挂载点为/var/www/html ,device为/dev/cluster/lv1,勾选强制不挂载,快速状态检查,当卸载失败后重启节点设备。
在web 上
点击webdata,删除script,再add resource to service,依次添加,httpd,webdata。节点是按照这三个顺序启动服务的。
(4)集群文件系统gfs2
Gfs2特性:高可用,多路冗余
在server1上
#lvcreate -L 2G -n demo clustervg
#mkfs.gfs2 -p lock_dlm -t yakexi_ha:mygfs2 -j 3 /dev/clustervg/demo
// 创建gfs2文件系统 -plock_dlm 锁定协议为标准锁定模式,-t :在您使用 lock_dlm 协议时用来指定锁定表格字段的唯一识别程序,l后接文件名加冒号加自定义文件系统名称。 -j 指定生成日志数目。
#gfs2_tool sb /dev/clustervg/demo all // 创建超级块
挂载demo到/mnt
#gfs2_tool journals /dev/clustervg/demo //查看日志大小
开机自动挂载gfs2远端文件系统
#blkid //查看设备uuid
在fstab文件中添加
UUID=你的uuid /var/www/html gfs2 _netdev 0 0
#mount -a
在server2上在fstab中直接添加,因为集群同步性,server2的远端存储配置上已同server1上一样。
也可在web上配置,
点击resource->add
选择gfs2 ,其他与webdata几乎相同。
若想添加文件日志数,可用
#gfs2_jadd -j 2 /dev/clustervg/demo
增大挂载文件系统
#gfs2_grow /dev/clustervg/demo
可用df -h 、vgs 、lvs等验证。