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系统登录Oracle数据库的具体操作步骤是什么?

    在Linux环境下登录Oracle数据库是数据库管理员和开发人员日常操作的核心环节,涉及客户端工具配置、网络连接、身份验证等多个技术细节,本文将系统介绍不同场景下的登录方法,涵盖命令行工具(如SQL*Plus)和图形化工具(如PL/SQL Developer、DBeaver)的使用步骤,并说明环境变量配置、常见……

    2025年9月25日
    7200
  • Linux环境下通过串口修改MAC地址的步骤是什么?

    在Linux系统中,MAC地址(Media Access Control Address)是网络接口卡的硬件标识符,通常用于数据链路层的寻址,需要明确的是,串口(Serial Port)本身是一种物理通信接口,用于串行数据传输,它本身并不具备MAC地址——MAC地址属于网络接口(如以太网卡、Wi-Fi适配器等……

    2025年8月29日
    9700
  • Linux虚拟机如何配置实现上网?

    Linux虚拟机作为开发、测试和服务器部署的常用环境,实现上网功能是其基础需求之一,虚拟机上网的核心在于虚拟化软件(如VMware、VirtualBox)提供的网络模式,不同模式通过虚拟网络设备与宿主机物理网络的交互方式,实现虚拟机与外部网络的连接,以下是常见实现方式及配置要点,NAT模式(网络地址转换)NAT……

    2025年10月7日
    9600
  • pxelinux.0如何实现网络启动?

    pxelinux.0 是 Syslinux 项目中的核心网络引导文件,用于 PXE(预启动执行环境)启动流程,它存储在 TFTP 服务器上,当客户端通过网卡启动时,会从服务器加载该文件,进而读取配置文件(如 pxelinux.cfg/default)决定启动选项(如加载 Linux 内核、Live CD 镜像等……

    2025年6月17日
    13200
  • 在Linux系统中,如何查看当前用户设置的所有别名及具体命令?

    在Linux系统中,别名(alias)是一种便捷的功能,允许用户为常用命令或复杂命令组合设置简短的名称,从而提高命令行操作效率,要查看Linux系统中已定义的别名,可以通过多种方式实现,本文将详细介绍这些方法,包括基础查看命令、配置文件定位、别名定义解析等,帮助用户全面掌握别名的查看与管理,使用alias命令直……

    2025年8月28日
    12500

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信