Linux系统HA(高可用)集群的启动是保障业务连续性的关键环节,其核心是通过冗余节点和故障转移机制确保服务在节点故障时能快速切换,本文以主流的Pacemaker+Corosync架构为例,详细说明HA集群的完整启动流程,包括环境准备、配置文件解析、服务启动步骤、状态验证及常见问题处理。
HA系统基础准备
在启动HA集群前,需完成以下基础配置,确保集群环境符合高可用要求:
- 硬件与网络准备:至少两台配置相同(或相近)的Linux服务器(如CentOS 7+/Ubuntu 20.04+),通过独立心跳网络(如交叉线或专用交换机)实现节点间通信,避免与业务网络冲突;同时配置业务网络IP,并规划虚拟IP(VIP)用于服务访问。
- 时间同步:集群节点时间必须一致,避免因时间偏差导致决策异常,可通过
chrony
或ntpd
同步时间,systemctl enable --now chronyd chronyc tracking # 验证同步状态
- 软件安装:安装Pacemaker(资源管理器)、Corosync(通信与消息层)、pcs(集群管理工具)等核心组件,以CentOS为例:
yum install -y pacemaker corosync pcs fence-agents-all systemctl enable pcsd # 设置开机自启
核心配置文件解析
HA集群的启动依赖于正确的配置文件,主要包括Corosync的通信配置和Pacemaker的资源定义。
Corosync配置文件(/etc/corosync/corosync.conf
)
Corosync负责节点间心跳传递和一致性协商,其核心配置如下(示例为两节点集群):
totem { version: 2 secauth: on # 启用安全认证,需生成共享密钥 cluster_name: ha_cluster # 集群名称 transport: udpu # 使用UDP协议,适用于无共享存储场景 interface { ringnumber: 0 bindnetaddr: 192.168.1.0 # 心跳网络网段 mcastport: 5405 # 多播端口 } } quorum { provider: corosync_votequorum # 投票算法 two_node: 1 # 两节点集群需启用,允许1节点存活 votes: 1 # 每节点1票 } nodelist { node { ring0_addr: node1.example.com # 节点1主机名/IP nodeid: 1 } node { ring0_addr: node2.example.com # 节点2主机名/IP nodeid: 2 } } logging { to_logfile: yes logfile: /var/log/corosync.log # 日志路径 to_syslog: yes }
关键参数说明(通过表格整理):
参数 | 作用 |
---|---|
secauth: on |
启用安全认证,避免非法节点加入,需执行corosync-keygen 生成密钥 |
transport: udpu |
使用UDP单播模式,比多播更稳定,适用于大多数场景 |
two_node: 1 |
两节点集群必需,允许单节点达到仲裁(quorum),避免“脑裂” |
ring0_addr |
节点心跳网络IP,需与业务网络隔离 |
配置完成后,需生成Corosync认证密钥并同步至所有节点:
corosync-keygen # 生成/etc/corosync/authkey(权限需为600) scp /etc/corosync/{corosync.conf,authkey} node2:/etc/corosync/ # 同步至节点2
Pacemaker资源配置(通过pcs
命令管理)
Pacemaker负责资源的启动、停止和故障转移,资源定义可通过pcs
命令行或图形化工具完成,定义虚拟IP(VIP)资源:
pcs cluster auth node1 node2 -u hacluster -p password # 认证节点(用户hacluster需提前创建) pcs property set stonith-enabled=false # 测试环境禁用 fencing(避免配置复杂) pcs resource create VIP ocf:heartbeat:IPaddr2 ip=192.168.1.100 cidr_netmask=24 op monitor interval=30s # 定义VIP资源 pcs resource group add WebGroup VIP # 将VIP加入资源组
HA服务启动流程
完成配置后,按以下步骤启动HA集群:
启动pcsd服务并启用集群
pcsd
是Pacemaker的集群管理守护进程,需先启动并设置为开机自启:
systemctl enable --now pcsd # 所有节点执行
初始化集群(在任一节点执行)
使用pcs cluster setup
命令初始化集群,指定节点名称和集群名称:
pcs cluster setup ha_cluster node1.example.com node2.example.com --start --enable
--start
:初始化后自动启动集群服务;--enable
:设置集群开机自启。
验证Corosync通信状态
Corosync启动后,可通过以下命令检查节点间通信是否正常:
corosync-cfgtool -s # 查看成员节点状态 # 输出示例: Nodeid Address Status -------------------------------------- 1 192.168.1.10 Online 2 192.168.1.11 Online
若显示“Online”则通信正常,否则需检查防火墙(需放行5405/5404端口)和心跳网络配置。
启动Pacemaker并验证资源状态
Pacemaker会随Corosync自动启动,可通过crm_mon
查看集群资源状态:
crm_mon -1r # 实时显示资源状态(-1:仅显示一次;-r:持续显示) # 输出示例: Online: [ node1.example.com node2.example.com ] Group: WebGroup VIP (ocf::heartbeat:IPaddr2): Started node1.example.com
若资源状态为“Started”且运行在节点1上,说明集群启动成功。
集群状态监控与维护
日志监控
HA集群的核心日志文件包括:
/var/log/corosync.log
:Corosync通信日志,排查节点掉线问题;/var/log/pacemaker.log
:Pacemaker资源决策日志,查看资源切换原因;/var/log/pcsd/pcsd.log
:pcs
命令操作日志,验证配置是否生效。
可通过tail -f
实时监控日志:
tail -f /var/log/pacemaker.log
节点维护
若需停止某节点集群服务(如维护),需先迁移资源再关闭集群:
pcs cluster standby node1.example.com # 将节点设为备用(资源自动迁移) pcs cluster stop --all # 停止所有节点集群服务
常见问题排查
启动时报错“corosync: Cannot find configuration file”
原因:corosync.conf
文件路径错误或权限不正确(需为640,属主为root:root)。
解决:
ls -l /etc/corosync/corosync.conf # 检查权限 chmod 640 /etc/corosync/corosync.conf chown root:root /etc/corosync/corosync.conf
资源始终处于“Stopped”状态
原因:资源定义依赖缺失(如OCF脚本未安装)或节点资源不足(如内存、CPU)。
解决:
pcs resource show VIP # 查看资源详情 yum install -y heartbeat # 安装OCF脚本(若缺少)
FAQs
Q1:启动HA集群时提示“pcs cluster setup: Cannot authenticate”怎么办?
A:通常因节点未认证或用户名/密码错误,需先执行pcs cluster auth node1 node2 -u hacluster -p password
(确保hacluster用户存在且密码正确),并检查防火墙是否允许TCP端口(如2224、3121)。
Q2:Pacemaker集群启动后资源一直处于“Started”状态但VIP未生效,如何排查?
A:可通过以下步骤定位问题:
- 检查资源是否绑定正确节点:
crm_mon -1r
查看资源运行节点; - 查看资源日志:
grep "VIP" /var/log/pacemaker.log
; - 手动触发资源监控:
pcs resource VIP monitor interval=10s
,观察是否报错(如IP冲突、网卡不存在)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/36391.html