1.问题引入
计算机集群可用于提供高可用性服务或资源。多台机器的冗余是用来防止多种类型的故障。集群将使用Pacemaker和Corosync提供资源管理和消息传递。下面将介绍所需的包和对其配置文件的修改,以及使用Pacemaker命令行工具生成用于集群控制的XML。
2.什么是Pacemake?
Pacemaker是一种集群资源管理器,也就是说,它是一种负责部署软件生命周期的逻辑——间接地可能甚至是整个系统或它们的互连——在一组计算机(又名节点)的控制下,并由规定的规则驱动。实现集群服务的最大可用性通过检测节点和资源级别故障并从中恢复利用提供的信息和会员功能首选集群基础设施(Corosync或Heartbeat),并可能通过利用整个集群的其他部分堆栈。
Pacemaker的功能:检测和恢复节点和服务级别的故障
•存储不可知,不需要共享存储
•资源不可知,任何可以脚本化的都可以集群
•支持保护(也称为STONITH的首字母缩写,稍后解密),以确保数据完整性
•支持大型和小型集群
•支持quorate和资源驱动集群
•支持几乎任何冗余配置
•自动复制配置,可从任何节点更新
•能够指定集群范围内的服务订购、托管和反托管
3.Pacemake+Corosync+heartbeat
1、Pacemaker - 集群资源管理器(CRM),负责启动和停止服务,而且保证它们是一直运行着的以及某个时刻某服务只在一个节点上运行(避免多服务同时操作数据造成的混乱),利用集群基础构建提供的信息和成员管理能力,探测并恢复节点以及在其控制下的资源的失效切换,以实现高可用性。
2、Corosync - 消息层组件,管理成员关系、消息和仲裁。
3、Resource Agents - 资源代理,用来控制服务启停,监控服务状态的脚本集合,这些脚本将被LRM调用从而实现各种资源启动、停止、监控等等。任何资源代理都要使用同一种风格,接收四个参数:{start|stop|restart|status},包括配置IP地址的也是。
4.Pacemaker+Corosync实现负载均衡和高可用实验
实验解决的问题是单点故障,实现高可用,高可用主要是解决单点故障,也就双机热备
(1)实验环境的准备
实验环境:
(1)两台服务器:server1:172.25.254.1
server2:172.25.254.2
(2)关掉火墙和selinux,做好解析/etc/hosts,安装好apache
(3)配置好yum源
[dvd]
name=rhel7.6
baseurl=file:///iso
gpgcheck=0
[HighAvailability] #高可用插件
name=HighAvailability
baseurl=file:///iso/addons/HighAvailability
gpgcheck=0
[ResilientStorage] 高可用插件
name=ResilientStorage
baseurl=file:///iso/addons/ResilientStorage
gpgcheck=0
(2)安装集群软件
#yum install -y pacemaker pcs psmisc policycoreutils-python
# systemctl start pcsd.service
# systemctl enable pcsd.service
# echo 123 | passwd --stdin hacluster
# ssh server2 "echo 123 | passwd --stdin hacluster"
(3)配置Corosync
# pcs cluster auth server1 server2
Username: hacluster
Password:
server1: Authorized
server2: Authorized
在同一个节点上使用pc集群设置来生成和同步corosync
# pcs cluster setup --name mycluster server1 server2
# pcs start --all 开启集群
# corosync-cfgtool -s 检查集群通信是否顺畅:
(4)pcs的相关命令 可以查找帮助
(5)集群的管理
在集群中添加资源之前需要禁用STONITH,请将启用STONITH的集群选项设置为false:
[root@server1 ~]# pcs property set stonith-enabled=false
[root@server1 ~]# crm_verify -L
添加第一个资源
# pcs resource create VIP ocf:heartbeat:IPaddr2 ip=172.25.254.100 cidr_netmask=32 op monitor interval=30s
此时VIP在server2上,当用外部服务器访问集群时,访问的是server2,若server2 出现故障(单点故障),此时集群的双机热备,高可用就能体现出来,此时VIP就会通过心跳连接漂到server1上
故障模拟 由于VIP在server2上 我们停掉server2
添加第二个资源
pcs resource create apache systemd:httpd op monitor interval=1min
发现两个资源不统一 此时需要统一
pcs resource group add webgroup apache VIP 注意资源的顺序要和你添加资源的顺序一致
若其中一个服务器出现故障 ,将会整体的迁移。