[实验] Pacemaker 集群的搭建

纪念:站主于 2019 年 8 月完成了此开源实验,并将过程中的所有命令经过整理和注释以后,形成以下教程

步骤一:规划拓扑

1.1 服务器列表

pacemaker0 192.168.11.30
pacemaker1 192.168.11.31
pacemaker2 192.168.11.32

1.2 服务器列表简介

1) pacemaker0、pacemaker1、pacemaker2 都启用 pcs 服务,通过 pcs 实现 pacemaker
2) 3 台服务器都可通过 pcs 服务提供 web、nfs 等服务,但是 web、nfs 等服务在同一时间里只在一台服务器上生效
3) 如果正在提供 web、nfs 服务的服务器 down 掉了,则正在它上面运行的 web nfs 等服务将无缝自动迁移到另外两台服务器

步骤二:服务器系统要求

1) 所有服务器的系统都需要是 CentOS 7 版本
2) 所有服务器都要关闭防火墙
3) 所有服务器都要关闭 SELinux
4) 所有服务器系统都要配置好可用的软件源
5) 需要按照拓扑图给对应的服务器配置好 IP 地址和主机

步骤三:安装并启用 pcs

3.1 在所有服务器上安装 pcs 和 fence-agents-all 服务

(分别在 pacemaker0 pacemaker1 pacemaker2 上执行以下步骤)

# yum install pcs fence-agents-all

3.2 在所有服务器防火墙上开放 pcs

(分别在 pacemaker0 pacemaker1 pacemaker2 上执行以下步骤)

# firewall-cmd --permanent --add-service=high-availability
# firewall-cmd --reload

3.3 在所有服务器上启动 pcs ,并设置开机自起

(分别在 pacemaker0 pacemaker1 pacemaker2 上执行以下步骤)

# systemctl enable pcsd
# systemctl start pcsd

步骤四:让服务器中的各主机通过 pcs 验证

4.1 在所有服务器将 hacluster 用户的密码修改为 redhat

(分别在 pacemaker0 pacemaker1 pacemaker2 上执行以下步骤)

# echo redhat | passwd --stdin hacluster

4.2 在所有服务器上添加主机名到 IP 地址的解析

(分别在 pacemaker0 pacemaker1 pacemaker2 上执行以下步骤)

# echo "192.168.11.30 pacemaker0" >> /etc/hosts
# echo "192.168.11.31 pacemaker1" >> /etc/hosts
# echo "192.168.11.32 pacemaker2" >> /etc/hosts

4.3 让集群里的所有服务器通过 pcs 验证

(只在 pacemaker0 上执行以下步骤)

[root@pacemaker0 ~]# pcs cluster auth pacemaker0 pacemaker1 pacemaker2
Username: hacluster
Password: 
pacemaker2: Authorized
pacemaker1: Authorized
pacemaker0: Authorized

(补充:这一步也可以使用 -u 和 -p 参数实现非交互式配置)

步骤五:通过 pcs 服务生成 1 个名为 mycluster 的 pcs 集群

5.1 生成一个名为 mycluster 包含 pacemaker0 pacemaker1 pacemaker2 的集群组

(只在 pacemaker0 上执行以下步骤)

[root@pacemaker0 ~]# pcs cluster setup --start --name mycluster pacemaker0 pacemaker1 pacemaker2
Destroying cluster on nodes: pacemaker0, pacemaker1, pacemaker2...
pacemaker2: Stopping Cluster (pacemaker)...
pacemaker0: Stopping Cluster (pacemaker)...
pacemaker1: Stopping Cluster (pacemaker)...
pacemaker0: Successfully destroyed cluster
pacemaker1: Successfully destroyed cluster
pacemaker2: Successfully destroyed cluster

Sending 'pacemaker_remote authkey' to 'pacemaker0', 'pacemaker1', 'pacemaker2'
pacemaker1: successful distribution of the file 'pacemaker_remote authkey'
pacemaker0: successful distribution of the file 'pacemaker_remote authkey'
pacemaker2: successful distribution of the file 'pacemaker_remote authkey'
Sending cluster config files to the nodes...
pacemaker0: Succeeded
pacemaker1: Succeeded
pacemaker2: Succeeded

Starting cluster on nodes: pacemaker0, pacemaker1, pacemaker2...
pacemaker0: Starting Cluster (corosync)...
pacemaker1: Starting Cluster (corosync)...
pacemaker2: Starting Cluster (corosync)...
pacemaker1: Starting Cluster (pacemaker)...
pacemaker0: Starting Cluster (pacemaker)...
pacemaker2: Starting Cluster (pacemaker)...

Synchronizing pcsd certificates on nodes pacemaker0, pacemaker1, pacemaker2...
pacemaker2: Success
pacemaker1: Success
pacemaker0: Success
Restarting pcsd on the nodes in order to reload the certificates...
pacemaker2: Success
pacemaker1: Success
pacemaker0: Success


补充:这里可以通过以下方式强制重新生成集群

[root@pacemaker0 ~]# pcs cluster setup --start --name mycluster --force pacemaker0 pacemaker1 pacemaker2

5.2 让所有 pcs 集群都随 pcs 服务自动启动

(只在 pacemaker0 上执行以下步骤)

[root@pacemaker0 ~]# pcs cluster enable --all

5.3 显示 pcs 集群状态

(只在 pacemaker0 上执行以下步骤)

[root@pacemaker0 ~]# pcs cluster status
Cluster Status:
 Stack: corosync
 Current DC: pacemaker0 (version 1.1.19-8.el7-c3c624ea3d) - partition with quorum
 Last updated: Sun Aug  4 09:21:55 2019
 Last change: Sun Aug  4 09:20:38 2019 by hacluster via crmd on pacemaker0
 3 nodes configured
 0 resources configured

PCSD Status:
  pacemaker1: Online
  pacemaker2: Online
  pacemaker0: Online

(注意:如果在 PCSD Status 中出现了 down ,则要确保他们的主机没有在 /etc/hosts 中 127.0.0.1 那一行中出现)