Haproxy+Pacemaker高可用集群
1 实验环境的准备
(1)实验前先关闭防火墙和selinux
(2)配置SSH,实现server1和server4的免密登陆
- 生成ssh公钥认证所需的公钥和私钥文件:
ssh-keygen
- 把本地的ssh公钥文件安装到远程主机:
ssh-copy-id server4
(3)server1和server4关闭haproxy,并设置开机不启动
systemctl disable --now haproxy
systemctl status haproxy
2 在集群各节点安装程序包
在集群的server1和server4安装相关软件
yum install -y pacemaker pcs psmisc policycoreutils-python -y
(1)网络仓库的配置
[dvd]
name=rhel7.6
baseurl=http://172.25.12.250/rhel7.6
gpgcheck=0
[dvd1]
name=HighAvailability
baseurl=http://172.25.12.250/rhel7.6/addons/HighAvailability
gpgcheck=0
- server1和server4安装集群软件
yum install -y pacemaker pcs psmisc policycoreutils-python -y
(2)在server1和server4节点启动pcsd,并设置为开机自动启动:systemctl enable --now pcsd.service
3 利用pcs来快速创建启动集群
hacluster用户在安装pcs时自动创建
(1)在集群各节点上给hacluster用户设定相同的密码
- 在server1和server4节点更改hacluster用户的密码:
passwd hacluster
注意: 也可以新建一个用户,但是在集群各节点上必须有一个一模一样的账号,而且账号的密码也必须相同
(2)集群各节点之间进行认证
- 验证hacluster用户:
pcs cluster auth server1 server4
注意: 输入的用户名必须为pcs自动创建的hacluster用户,否则不能添加成功
(3)创建集群
- 创建并启动名为mycluster的集群,其中server1、server4为集群成员:
pcs cluster setup --name mycluster server1 server4
(4)开机自动开启pacemaker(资源管理)和corosync(心跳监测)服务
- 启动集群所有节点:
pcs cluster start --all
- 集群开机启动:
pcs cluster enable --all
- 查看节点状态:
corosync-cfgtool -s
- 检查pacemaker服务:
ps axf
4 pcs管理集群
(1)查看集群的状态:pcs status
(2)检查集群服务是否正常:crm_verify -LV
(3)没有 Fencing设备时,禁用STONITH 组件功能在 stonith-enabled=“false”
- 关闭了stonith选项以后,再次验证集群配置就没有报任何错误
(4)查看pcs的帮助信息
查看默认资源管理器:pcs resource standards
查看资源的提供者:pcs resource providers
查看资源代理的详细信息: pcs resource agents ocf:heartbeat
5 pcs创建集群资源
(1)给集群添加虚拟的VIP资源
- 利用
ocf:heartbeat:IPaddr
定义一个vip资源
pcs resource create vip ocf:heartbeat:IPaddr2 ip=172.25.12.100 op monitor interval=30s
- 关闭集群中的server1:
pcs cluster stop server1
- 在server4上查看集群的状态信息:
pcs status
,可以看到server1设置为stop状态以后,运行在server1上的资源也随之迁往其他节点
- 开启集群中的server1:
pcs cluster start server1
- 查看集群的状态信息:
pcs status
,server1设置为start状态以后,server1的状态为Online,但是运行在server4上的资源并不会迁移
- 让server1失效并处于待机状态:
pcs node standby
,可以看到server1设置为standby状态以后,运行在server1上的资源也随之迁往其他节点
- 让失效的服务器重新回到活跃状态:
pcs node unstandby
,server1设置为 unstandby状态以后,server1的状态为Online,但是运行在server4上的资源并不会迁移
(2)给集群添加haproxy负载均衡服务资源
pcs resource create haproxy systemd:haproxy op monitor interval=60s
(3)添加资源组: pcs resource group add hagroup vip haproxy
,将资源整合到一个组中,实现在同一台服务器提供服务,定义运行的HAProxy和VIP必须在同一节点上,以及启动顺序
5 测试
(1) 禁用eth0:
- server4:
ip link set down eth0
,运行在server1上的资源迁往到server4
在真机上访问VIP:172.25.12.100,此时提供服务的是server1
- 恢复server4的方法,手动重启server4,在下节可以通过配置fence设备自动重启server4
(2)停止集群中的server1服务器
- 关闭集群中的server1:
pcs cluster stop server1
- 查看集群的状态:pcs status
关闭集群中的server1后,server2自动开始接管,实现了高可用
并且此时server4会自动添加VIP,启动haproxy
在真机上访问VIP:172.25.12.100
(3)删除server的4的VIP
ip addr del 172.25.12.100/24 dev eth0
pcs status
查看集群的状态,此时server4的vip显示失败,会且会显示错误的日志信息
30s之后,server4的vip会自动添加,实现了高可用
恢复集群中的server1:pcs cluster start server1