Linux系统HA如何启动?关键操作步骤是什么?

Linux系统HA(高可用)集群的启动是保障业务连续性的关键环节,其核心是通过冗余节点和故障转移机制确保服务在节点故障时能快速切换,本文以主流的Pacemaker+Corosync架构为例,详细说明HA集群的完整启动流程,包括环境准备、配置文件解析、服务启动步骤、状态验证及常见问题处理。

linux系统ha如何启动

HA系统基础准备

在启动HA集群前,需完成以下基础配置,确保集群环境符合高可用要求:

  1. 硬件与网络准备:至少两台配置相同(或相近)的Linux服务器(如CentOS 7+/Ubuntu 20.04+),通过独立心跳网络(如交叉线或专用交换机)实现节点间通信,避免与业务网络冲突;同时配置业务网络IP,并规划虚拟IP(VIP)用于服务访问。
  2. 时间同步:集群节点时间必须一致,避免因时间偏差导致决策异常,可通过chronyntpd同步时间,
    systemctl enable --now chronyd
    chronyc tracking  # 验证同步状态
  3. 软件安装:安装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集群:

linux系统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集群的核心日志文件包括:

linux系统ha如何启动

  • /var/log/corosync.log:Corosync通信日志,排查节点掉线问题;
  • /var/log/pacemaker.log:Pacemaker资源决策日志,查看资源切换原因;
  • /var/log/pcsd/pcsd.logpcs命令操作日志,验证配置是否生效。

可通过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:可通过以下步骤定位问题:

  1. 检查资源是否绑定正确节点:crm_mon -1r查看资源运行节点;
  2. 查看资源日志:grep "VIP" /var/log/pacemaker.log
  3. 手动触发资源监控:pcs resource VIP monitor interval=10s,观察是否报错(如IP冲突、网卡不存在)。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/36391.html

(0)
酷番叔酷番叔
上一篇 2025年10月5日 14:22
下一篇 2025年10月5日 14:35

相关推荐

  • Linux执行SQL脚本的常用方法是什么?

    在Linux环境下执行SQL脚本是数据库管理、数据迁移、系统初始化等任务中的常见操作,不同数据库系统(如MySQL、PostgreSQL、SQLite等)对应的执行方式和命令略有差异,但核心逻辑一致,本文将详细介绍Linux环境下执行SQL脚本的准备工作、常用方法、注意事项及常见问题解决,帮助用户高效完成脚本执……

    2025年9月23日
    7300
  • Linux如何回到根目录?操作方法与命令步骤详解

    在Linux操作系统中,根目录(用表示)是整个文件系统的起点,所有目录、文件和设备都挂载在根目录或其子目录下,无论是系统管理、文件操作还是脚本编写,回到根目录都是常见的操作,本文将详细讲解Linux中回到根目录的方法、相关概念及注意事项,帮助用户熟练掌握这一基础技能,理解根目录与路径概念在Linux文件系统中……

    2025年8月27日
    9500
  • Linux如何读取NTFS分区?

    要让Linux系统读取NTFS文件系统(Windows常用的文件系统),通常需要借助第三方工具,因为Linux内核对NTFS的原生支持可能有限或存在读写限制,以下是详细的操作步骤、注意事项及常见问题解决方案,了解NTFS在Linux中的支持情况Linux内核虽然包含对NTFS的只读支持(通过ntfs模块),但读……

    2025年9月17日
    8000
  • Linux系统里如何通过终端命令正确进入vim编辑器?

    在Linux系统中,vim是一款功能强大且广泛使用的文本编辑器,它以其高效的操作模式和高度的可定制性受到开发者和系统管理员的青睐,对于初学者而言,掌握如何进入vim以及理解其基本操作模式是学习使用vim的第一步,本文将详细介绍Linux系统中进入vim的方法、vim的核心模式、常用操作命令以及常见问题解决,帮助……

    2025年8月28日
    8200
  • Linux环境下C语言开发如何从环境搭建到程序运行的详细流程?

    在Linux环境下进行C语言开发,需要掌握工具链使用、编译流程、调试技巧及项目管理等核心技能,以下是详细步骤和要点:开发环境搭建是第一步,Linux系统通常已预装GCC(GNU Compiler Collection),可通过gcc –version检查,若未安装,在基于Debian的系统(如Ubuntu)中……

    2025年9月9日
    7100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信