1.开2台虚拟机,配置yum源,添加高可用,负载均衡,存储,文件系统(后面给HA添加存储等)
#firewalld和selinux处于关闭状态
#各个主机上添加本地解析
[HighAvailability]
name=HighAvailability
baseurl=http://172.25.0.250/rhel6.5/x86_64/dvd/HighAvailability
gpgcheck=0
[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.0.250/rhel6.5/x86_64/dvd/LoadBalancer
gpgcheck=0
[ResilientStorage]
name=ResilientStorage
baseurl=http://172.25.0.250/rhel6.5/x86_64/dvd/ResilientStorage
gpgcheck=0
[ScalableFileSystem]
name=ScalableFileSystem
baseurl=http://172.25.0.250/rhel6.5/x86_64/dvd/ScalableFileSystem
gpgcheck=0
2.在所有HA节点上安装ricci,这里用server2同时做管理节点和HA节点
#luci是web界面的管理工具
1)server1:
yum install -y ricci luci
2)server2:
yum install -y ricci
3)安装完后会产生ricci用户,给ricci用户设置密码:westos
passwd ricci
4)两节点开启ricci,luci并设置开机启动
/etc/init.d/ricci start
/etc/init.d/luci start
chkconfig ricci on
chkconfig luci on
5)登陆
https://172.25.69.1:8084
root
redhat
添加server1,server2到集群 ##注意解析问题
添加成功两台虚拟机会自动重启
6)查看是否添加成功
cat /etc/cluster/cluster.conf
<?xml version="1.0"?>
<cluster config_version="1" name="westos_ha">
<clusternodes>
<clusternode name="server1" nodeid="1"/>
<clusternode name="server2" nodeid="2"/>
</clusternodes>
<cman expected_votes="1" two_node="1"/>
<fencedevices/>
<rm/>
</cluster>
#查看集群状态
[root@server1 ~]# clustat
Cluster Status for clster_sfj @ Sat Oct 19 04:09:02 2019
Member Status: Quorate
Member Name ID Status
------ ---- ---- ------
server1 1 Online, Local
server2 2 Online
[root@server1 ~]#
心跳检测脑裂问题
心跳检测就是主机一直不断地向备用机发出它还正常工作的信号,此时备用机接受信号,知道主机还正常着,而脑裂就是由于网络的延迟等问题,备用主机可能会在某个几秒内没有接受到主机正常工作的信号,此时备用机就会抢占主机资源,开始工作,但是主机实际上还正常着呢,只是信号的发送产生了延迟,这个时候就会导致两台主机不知道彼此的工作状态,服务混乱,这就是脑裂。
解决脑裂问题:
抢占资源之前,将被抢机器直接爆头,确保另一个主机已经不工作了,那么就算这时被抢占主机重新启动工作,那么也已经成为了备用机器,就不存在脑裂问题,而fence就是让主机断电的一个软件
fence_node 就会将另一个主机爆头
7)添加fence
Fence Device --> Add --> Fence virt(Multicast Mode) --> vmfence
8)安装fence软件包(在物理机上)
yum search fence
yum install fence-virtd.x86_64 fence-virtd-libvirt.x86_64 fence-virtd-multicast.x86_64
9)配置fence
fence_virtd -c # vim /etc/fence_virt.conf 可查看配置文件
Interface [virbr0]: br0 ##设备选择br0,其他用默认
#生成fence_xvm.key
dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1
10)把fence_xvm.key分发到HA节点,通过这个key来管理节点
scp fence_xvm.key root@server1:/etc/cluster/
scp fence_xvm.key root@server2:/etc/cluster/
11)web界面为节点配置fence
Node --> server1 --> Add Fence Method --> vmfence-1 --> Add Fence Instance -->vmfence(xvm Virtual Machine Fencing) --> Domain(填写server2的UUID)
server2同上
12)启动fence并测试 #注意服务的启动和真机的防火墙
systemctl start fence_virtd.service
[root@server2 cluster]# fence_node server5 ##server1被重启
fence server1 success
##netstat -antulp | grep 1229 ##udp 1229端口
13)添加失败回切和优先级
Failover --> Add --> webfail --> Prioritized(对服务故障转移到的节点进行排序) --> Restricted(服务只能在指定的节点上运行) --> No Failback(当服务再次可用时,不要将其发送回优先级为1的节点)(此选项选中,failover的主机在再次正常时会按优先级大小回切,否则不会)
#server2优先级为1,server5优先级为10,数字越小,优先级越高
14)添加vip资源
#Resources --> Add --> IP Address
172.25.0.100
24
Monitor Link(选中) 监控链接
Number of … 5 删除IP地址后休眠的秒数
#再添加服务
#Resources --> Add --> Script
Name : httpd
Full Path to Script File : /etc/init.d/httpd
两个节点都安装并启动httpd,写默认发布页面
15)添加服务组到集群
Service Groups --> Add
Service Name : apache
Automatically Start This Service : 选中 自动启动此服务
Run Exclusive : 运行独占(先选中)
Failover Domain : webfail
Recovery Policy relocate恢复策略 回复政策 修复原则
#然后添加资源
Add Resource --> 172.25.0.100/24 --> Script ##添加IP和启动脚本
勾选apache点击start
3.测试访问
172.25.0.100 #默认访问到server2
4.使server2脑裂,测试fence
echo c > /proc/sysrq-trigger
fence成功,脑裂之后server2自动重启,启动之后httpd又恢复到server2提供服务,因为没有选择 No Failback
再次勾选apache,点击start重启服务
添加iscsi网络磁盘