openEuler HA部署

openEuler HA部署

 

 

1 环境

IP 主机名 操作系统
10.32.0.111 ha1 openEuler 24.03 (LTS-SP4)
10.32.0.112 ha2 openEuler 24.03 (LTS-SP4)
10.32.0.109 vip 虚拟IP

2 修改主机名称及/etc/hosts文件

  • 注:两台主机均需要进行以下操作,现以其中一台为例。

在使用HA软件之前,需要确认修改主机名并将所有主机名写入/etc/hosts文件中。

  • 修改主机名
hostnamectl set-hostname ha1
  • 编辑/etc/hosts文件并写入以下字段
10.32.0.111 ha1
10.32.0.112 ha2

4 安装HA软件包

两台节点都执行

  • 安装常用组件包
yum install -y corosync pacemaker pcs fence-agents fence-virt corosync-qdevice sbd drbd-utils
  • 源码编译DRBD
dnf install -y patch make gcc gcc-c++ kernel-devel flex perl \
automake libtool elfutils-libelf-devel

# 下载源码
wget https://pkg.linbit.com/downloads/drbd/9/drbd-9.3.3.tar.gz
tar -xzvf drbd-9.3.3.tar.gz

# 编译并安装
make -j
make install

5 构建集群

两台节点都执行

  • 设置hacluster用户密码
passwd hacluster
  • 启动pcsd服务
systemctl start pcsd
systemctl enable pcsd
  • 放行2224端口和corosync所需端口
firewall-cmd --permanent --add-port=2224/tcp
firewall-cmd --permanent --add-port=5404-5412/udp
firewall-cmd --reload
  • 关闭selinux
# 修改/etc/selinux/config文件中SELINUX状态为disabled
SELINUX=disabled
  • 节点认证(仅在ha1上执行)
pcs host auth ha1 ha2 -u hacluster
# 系统会提示输入 hacluster 密码(本文与root用户密码相同)

image

  • 创建集群(在ha1上执行,并指定IP地址) 
pcs cluster setup hacluster ha1 addr=10.32.0.111 ha2 addr=10.32.0.112 --start

image

  •  后续管理建议

一旦集群创建成功,请统一使用 pcs 命令来管理整个集群,而不是直接操作单个服务:

操作推荐命令
启动整个集群 pcs cluster start --all
停止整个集群 pcs cluster stop --all
查看集群状态 pcs cluster statuspcs status
重启集群 pcs cluster restart --all

直接使用 systemctl start corosync 可能会破坏 Pacemaker 的状态管理,导致资源不一致。

6 访问前端管理平台

  • 访问方式

在任意能访问集群节点的浏览器中,打开 https://<节点IP或主机名>:2224

 

image

  •  登录

用户名是 hacluster,密码就是之前设置的那个

image

 7 HA使用实例

7.1 首选项配置

以下操作均可用命令行配置,现只做简单示例,若想使用更多命令可以使用pcs --help进行查询。

pcs property set stonith-enabled=false
pcs property set no-quorum-policy=ignore

pcs property查看全部设置

image

 7.2 添加普通资源

下面以apache为例,添加apache资源

  • 在两个节点上安装apache
dnf install -y httpd
  • ha1节点上添加资源
pcs resource create httpd ocf:heartbeat:apache
  • 查看资源运行状态
pcs status

image

 前端页面上也可以看到资源启动了

image

  • 资源创建成功并启动,运行于其中一个节点上,例如ha1;成功访问apache界面。
http://10.32.0.111/

image

8 实现高可用访问

要保证用户始终能访问到服务,应该使用虚拟IP(VIP),而不是直接访问节点IP

  • 删除当前httpd资源
pcs resource delete httpd
  • 创建虚拟IP和httpd资源,并设置约束
# 创建虚拟 IP
pcs resource create VirtualIP IPaddr2 ip=10.32.0.109 cidr_netmask=23 op monitor interval=30s

# 创建 httpd 资源(前提:两个节点都已安装 httpd)
pcs resource create WebServer ocf:heartbeat:apache op monitor interval=30s

# 设置虚拟 IP 和 httpd 必须运行在同一节点(共置约束)
pcs constraint colocation add VirtualIP with WebServer INFINITY

# 设置启动顺序:先启动 WebServer,再启动 VirtualIP
pcs constraint order WebServer then VirtualIP
  • 访问虚拟IPhttp://10.32.0.109/,无论资源在哪个节点上,都能正常访问。

image

9 故障模拟测试

9.1 测试一:将节点置为待机模式(模拟节点维护/故障)

在ha1上执行:

pcs node standby ha1

预期结果:

  • ha1状态变为OFFLINE(待机)
  • 资源自动迁移到ha2
  • 访问http://10.32.0.109仍然正常。

观察命令:

pcs status

image

 恢复ha1:

pcs node unstandby ha1

9.2 测试二:ha2关机(模拟服务器故障)

 预期结果:

  • 资源自动迁移到ha1
  • 访问http://10.32.0.109仍然正常。

9.3 测试三:假设ha2物理机系统完成损毁,需重新安装系统

在h2(新节点)上准备基础环境。登录到新安装的ha2节点执行以下操作:

  • 配置主机名和网络

区别主机名设置为ha2,并配置好IP地址。同时,检查/etc/hosts文件,确保ha1和ha2的主机名都能正确解析到各自的IP。

  • 安装集群软件包

参考第四章节《安装HA软件包》

  • 设置hacluster用户密码

为hacluster用户设置一个密码,建议与ha1上的密码保持一致,以简化后续操作。

passwd hacluster
  • 启动并启用pcsd服务:
systemctl start pcsd
systemctl enable pcsd

pcsd是pcs命令的后台服务,复杂节点间的通信

  • 配置防火墙
firewall-cmd --permanent --add-service=high-availability
firewall-cmd --reload

high-availability 服务会自动开放 2224 (pcsd), 5404-5405 (corosync) 等关键端口

  • 同步时间

确保 ha2ha1 的时间是同步的,可以使用 chrony 服务。

dnf install -y chrony
systemctl enable chronyd --now

在ha1(现有集群节点)上添加ha2,所有操作都在 ha1 上执行。

  • 认证新节点

这一步是让ha1信任ha2,需要输入hacluster的密码。

pcs host auth ha2 -u hacluster
  • 将ha2添加到集群

此命令会将集群的配置同步到ha2。

pcs cluster node add ha2

如果此步骤报错 node is already in a cluster,说明 ha2 上残留了旧的集群配置。此时需要在 ha2 上执行 pcs cluster destroy 来清理,然后重新执行添加命令。

  • 在ha2上启动并启用集群服务
pcs cluster start
pcs cluster enable
  • 验证结果

ha1ha2 上执行 pcs status 命令。如果输出中 Node List 部分显示 ha2 的状态为 Online,则说明节点已成功重新加入集群。

pcs status
  • 注意事项

资源安装:如果 ha2 之前运行着特定的服务(如 httpdDRBD 等),你需要在 ha2 上重新安装并配置好这些软件,Pacemaker 才能在故障切换时将其启动

维护窗口:在生产环境中,建议在维护窗口期执行节点添加操作

隔离配置:如果集群配置了 STONITH(隔离),别忘了为新加入的 ha2 节点配置相应的隔离设备

 

posted @ 2026-07-17 09:58  钟齐峰  阅读(14)  评论(0)    收藏  举报