首页 > 运维 > CentOS > 正文

CentOS集群搭建怎么操作_CentOS高可用集群配置方法

星夢妙者
发布: 2025-09-13 23:48:01
原创
907人浏览过
CentOS高可用集群核心组件包括Corosync、Pacemaker、STONITH、共享存储和资源代理;通过Corosync实现节点通信与心跳检测,Pacemaker调度服务资源,STONITH防止脑裂,共享存储保障数据一致,资源代理管理具体服务,结合pcs工具进行配置与监控,确保服务自动切换与业务持续可用。

centos集群搭建怎么操作_centos高可用集群配置方法

搭建CentOS高可用集群,核心思路是利用Corosync进行节点间通信和心跳检测,再由Pacemaker作为资源管理器来调度服务,并辅以共享存储和至关重要的Fencing(故障隔离)机制,确保在任何一个节点失效时,服务能自动且平滑地切换到其他健康节点上,从而实现业务的持续可用。

解决方案

说实话,搞定一个CentOS高可用集群,过程可能有点繁琐,但只要理清思路,一步步来,也没想象中那么难。我个人觉得,最关键的是前期规划和对Fencing机制的理解。

首先,得把所有参与集群的节点都准备好。这包括:

  1. 操作系统安装:CentOS 7或8都行,确保系统是最小化安装,减少不必要的服务。

  2. 网络配置:每个节点至少两张网卡,一张用于业务,一张专用于集群心跳通信(虽然Corosync可以跑在单网卡上,但冗余才是王道)。确保IP地址、子网掩码、网关都配置正确,并且节点间可以互相ping通。

  3. 主机名解析:修改

    /etc/hosts
    登录后复制
    文件,把所有集群节点的主机名和IP地址都写进去,确保每个节点都能通过主机名解析到其他节点。这比依赖DNS更直接,也更可靠。

  4. 时间同步:NTP服务是必须的,集群节点间的时间必须高度一致,否则会引发各种奇奇怪怪的问题,比如日志时间错乱,甚至集群状态判断失误。

  5. 禁用SELinux和Firewalld:这俩货在集群搭建初期是出了名的“拦路虎”。暂时禁用它们能省去很多不必要的麻烦。等集群跑起来了,再根据需要逐步开启并配置规则。

    # 禁用SELinux
    setenforce 0
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    
    # 禁用Firewalld
    systemctl stop firewalld
    systemctl disable firewalld
    登录后复制

接下来是核心组件的安装和配置:

  1. 共享存储:高可用集群的数据一致性依赖于共享存储。常见的有iSCSI、NFS、GFS2或者DRBD。iSCSI相对简单,这里以它为例,假设你已经配置了一个iSCSI Target,并在所有集群节点上都挂载了相同的LUN。

    # 在所有节点上安装iSCSI客户端
    yum install -y iscsi-initiator-utils
    
    # 发现并登录iSCSI Target (假设Target IP是192.168.1.100)
    iscsiadm -m discovery -t st -p 192.168.1.100
    iscsiadm -m node -L all
    
    # 格式化并挂载(只在一个节点上操作,然后其他节点只挂载)
    # mkfs.ext4 /dev/sdb # 假设LUN被识别为/dev/sdb
    # mount /dev/sdb /mnt/shared # 挂载到共享目录
    # 记得配置fstab自动挂载,但对于集群资源,通常由Pacemaker管理挂载点
    登录后复制
  2. 安装Pacemaker和Corosync

    yum install -y pacemaker corosync pcs resource-agents fence-agents
    登录后复制

    pcs
    登录后复制
    是管理Pacemaker/Corosync集群的命令行工具,
    resource-agents
    登录后复制
    包含了各种服务的资源代理脚本,
    fence-agents
    登录后复制
    则是Fencing机制所需的代理。

  3. 设置hacluster用户密码

    pcs
    登录后复制
    命令需要
    hacluster
    登录后复制
    用户进行认证。

    echo "your_password" | passwd --stdin hacluster
    登录后复制

    在所有节点上都执行。

  4. 授权并建立集群

    # 在任意一个节点上执行
    pcs cluster auth node1 node2 -u hacluster -p your_password --force
    # node1, node2 是你的集群节点主机名
    
    # 创建集群 (集群名称可自定义)
    pcs cluster setup my_ha_cluster node1 node2
    
    # 启动集群
    pcs cluster start --all
    
    # 检查集群状态
    pcs status
    登录后复制

    如果一切顺利,你会看到集群状态正常,所有节点都处于online状态。

  5. 配置Fencing (STONITH):这是防止“脑裂”(Split-Brain)的关键。没有Fencing的集群,就如同没有安全带的汽车。Fencing的目的是在某个节点发生故障时,强制将其隔离,确保它不再访问共享资源,避免数据损坏。 配置STONITH设备取决于你的环境。如果是虚拟机,可以使用

    fence_xvm
    登录后复制
    ;物理机则常用
    fence_ipmilan
    登录后复制
    (通过IPMI接口硬关机)。这里以一个通用的虚拟设备为例,实际生产环境需要配置真实的Fencing设备。

    # 禁用STONITH(不推荐,仅用于测试理解)
    # pcs property set stonith-enabled=false
    
    # 启用STONITH
    pcs property set stonith-enabled=true
    
    # 添加一个Fencing设备 (例如,一个虚拟的,生产环境请替换为真实设备)
    # 假设你有一个支持IPMI的服务器,IPMI地址是192.168.1.200
    pcs stonith create fence_device_node1 fence_ipmilan ipaddr=192.168.1.200 login=admin passwd=password pcmk_host_list=node1
    pcs stonith create fence_device_node2 fence_ipmilan ipaddr=192.168.1.201 login=admin passwd=password pcmk_host_list=node2
    # 注意:这里的pcmk_host_list是指定该Fencing设备可以对哪个主机进行操作
    登录后复制
  6. 添加集群资源:现在集群框架搭好了,可以把服务(资源)放进去了。比如,一个虚拟IP地址(VIP)和一个Apache Web服务。

    集简云
    集简云

    软件集成平台,快速建立企业自动化与智能化

    集简云22
    查看详情 集简云
    # 创建虚拟IP资源
    pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=192.168.1.100 cidr_netmask=24 op monitor interval=10s
    
    # 创建Apache Web服务资源
    pcs resource create web_server ocf:heartbeat:apache configfile=/etc/httpd/conf/httpd.conf statusurl="http://localhost/server-status" op monitor interval=20s
    
    # 将VIP和Web服务绑定到一起,确保它们在同一个节点上运行
    pcs constraint colocation add virtual_ip with web_server INFINITY
    
    # 定义启动顺序,确保VIP先启动,Web服务后启动
    pcs constraint order virtual_ip then web_server
    登录后复制

    检查资源状态:

    pcs status resources
    登录后复制

  7. 测试:这是最关键的一步。尝试手动关闭一个节点,观察服务是否能自动漂移到另一个节点。

    # 在node1上模拟故障(比如直接关机)
    # systemctl stop pacemaker corosync # 模拟软件故障
    # 或者直接 reboot / poweroff
    登录后复制

    观察

    pcs status
    登录后复制
    的输出,看VIP和Web服务是否已经成功在node2上运行。

CentOS高可用集群的核心组件有哪些?

在我看来,构建一个稳定可靠的CentOS高可用集群,离不开以下几个核心组件,它们各司其职,共同构筑起服务的“不倒翁”:

  • Corosync (集群通信层):这是集群的心脏和神经系统。它负责节点间的通信、心跳检测、成员管理和消息传递。说白了,就是让集群里的所有机器知道“我们是一个团队”,并且能实时感知到其他队友的“健康状况”。如果某个节点的心跳停了,Corosync就会通知Pacemaker,然后Pacemaker才能采取行动。它的配置相对简单,主要定义了集群的IP地址、端口和成员列表。

  • Pacemaker (集群资源管理器):如果说Corosync是集群的感知层,那Pacemaker就是集群的大脑和决策者。它根据Corosync提供的信息,结合预设的资源配置和策略,决定哪些服务(资源)应该运行在哪个节点上。当节点发生故障时,Pacemaker会根据资源约束(比如哪些资源必须在一起,哪些必须分开,启动顺序等)来重新调度资源到健康的节点上。它支持各种复杂的资源类型,从IP地址、文件系统到数据库、Web服务,几乎无所不包。

  • STONITH (Shoot The Other Node In The Head - 故障隔离机制):这个名字听起来有点暴力,但它却是高可用集群中不可或缺的“保命符”,也是避免“脑裂”的唯一有效手段。STONITH的目的是,当集群判断某个节点发生故障时,强制将其从集群中移除,通常是通过远程电源控制(比如IPMI、ILO、DRAC)或虚拟机管理接口(如virsh)直接将其断电或重启,确保故障节点无法再访问共享存储或提供服务,从而避免数据损坏和资源争抢。没有STONITH的集群,在高可用性方面几乎是形同虚设。

  • 共享存储:这是集群数据一致性的基石。无论是iSCSI、NFS、GFS2还是DRBD,其核心目标都是确保所有集群节点都能访问到同一份数据。当服务从一个节点漂移到另一个节点时,新的节点能够立即接管并访问到最新的数据。选择哪种共享存储,取决于你的具体需求、预算和性能考量。我个人觉得,对于大多数中小规模应用,iSCSI或NFS已经足够应对。

  • 资源代理 (Resource Agents):这些是Pacemaker用来管理各种具体服务的脚本。它们定义了如何启动、停止、监控某个服务(比如Apache、MySQL、虚拟IP等)。Pacemaker通过调用这些代理脚本来执行操作。有了这些代理,Pacemaker就能以标准化的方式管理各种异构的服务,大大简化了集群的配置和管理。

如何有效避免CentOS高可用集群的“脑裂”问题?

“脑裂”(Split-Brain)是高可用集群中最致命的问题之一,也是我个人在实践中遇到过最头疼的挑战。简单来说,脑裂就是当集群中的通信链路出现故障时,两个或多个节点都误以为其他节点已经失效,从而各自独立地启动服务,甚至同时尝试写入共享存储,这会导致数据严重不一致,甚至数据损坏。

避免脑裂的唯一有效且可靠的方案就是强制性的Fencing(STONITH)机制。除此之外,没有其他任何纯软件的手段能够100%保证避免脑裂。

具体来说,如何避免:

  1. 理解STONITH的必要性: 当集群的某个节点无法响应心跳时,Pacemaker并不能直接判断它是真的宕机了,还是仅仅是网络暂时中断了。如果没有Fencing,Pacemaker可能会让另一个节点启动服务,而那个“假死”的节点可能在网络恢复后也继续运行服务,这就是脑裂的根源。STONITH的作用,就是在Pacemaker决定让另一个节点接管服务之前,强制将故障节点“杀死”,确保它彻底停止服务,从而消除脑裂的可能性。它就像一个“执行者”,确保任何时候只有一个节点拥有对共享资源的独占访问权。

  2. 正确配置STONITH设备: STONITH设备的类型多种多样,选择适合你环境的设备至关重要。

    • IPMI/ILO/DRAC:对于物理服务器,这是最常用也是最可靠的方式。通过服务器的带外管理接口,可以直接控制电源开关,实现硬关机。
    • 虚拟化平台API:对于虚拟机,可以通过Hypervisor的API(如VMware vCenter、OpenStack Nova、KVM的virsh等)直接关闭或重启虚拟机。
    • 存储设备Fencing:有些高端存储设备支持Fencing功能,可以直接隔离故障节点对存储的访问。 配置时,需要为每个节点配置一个或多个STONITH设备,并且确保每个设备都有权限操作对应的节点。例如,使用
      fence_ipmilan
      登录后复制
      时,需要提供IPMI的IP地址、用户名和密码。
    # 示例:为node1配置一个IPMI Fencing设备
    pcs stonith create fence_node1 fence_ipmilan ipaddr=192.168.1.200 login=admin passwd=your_ipmi_password pcmk_host_list=node1
    # pcmk_host_list 指定这个Fencing设备是用来隔离哪个集群节点的
    登录后复制

    务必测试Fencing设备是否能正常工作。尝试手动触发一个节点的Fencing,看它是否能被强制关机。

  3. Quorum(法定人数)机制: Corosync引入了Quorum的概念,即集群必须有超过半数的节点处于在线状态,才能被认为是“健康”的,才能执行资源操作。如果集群中的在线节点数量低于Quorum,整个集群可能会进入“停滞”状态,不再执行任何资源操作,等待足够多的节点恢复。 这在一定程度上也能防止脑裂,因为如果通信中断导致集群分裂成两部分,只有拥有Quorum的那部分才能继续运行服务,另一部分则会自行停止。然而,Quorum并不能完全替代STONITH,它只是一个“自保”机制,STONITH才是“杀伐决断”的机制。 默认情况下,

    pcs
    登录后复制
    会开启Quorum。你可以通过
    pcs property show | grep quorum-policy
    登录后复制
    查看。

  4. 冗余的心跳网络: 虽然这不是直接的脑裂解决方案,但一个稳定、冗余的心跳网络能大大降低通信中断的风险,从而减少脑裂发生的可能性。建议使用独立的网卡或VLAN来承载Corosync的心跳流量。

总的来说,要避免CentOS高可用集群的脑裂,核心就是始终确保STONITH机制的有效性。这是集群稳定运行的最后一道防线。

在CentOS集群中,如何高效管理和监控集群资源?

管理和监控集群资源,是确保高可用集群长期稳定运行的关键。这不仅仅是配置一次就完事儿,日常的维护和故障排查同样重要。

  1. 使用

    pcs
    登录后复制
    命令行工具进行日常管理
    pcs
    登录后复制
    是Pacemaker和Corosync的官方命令行接口,功能强大且直观。我个人觉得,掌握
    pcs
    登录后复制
    是管理CentOS高可用集群最基本也是最重要的技能。

    • 查看集群状态
      pcs status
      登录后复制
      可以快速了解集群的整体健康状况、节点状态、资源状态等。
    • 查看资源详情
      pcs resource show
      登录后复制
      pcs resource show <resource_id>
      登录后复制
      可以查看特定资源的详细配置和当前状态。
    • 添加/删除资源
      pcs resource create
      登录后复制
      pcs resource delete
      登录后复制
      用于管理集群中的服务。
    • 修改资源配置
      pcs resource update <resource_id> <param>=<value>
      登录后复制
      可以动态调整资源的参数。
    • 管理约束
      pcs constraint
      登录后复制
      系列命令用于添加、删除、查看资源间的各种约束(协同、顺序、位置等),这些约束是Pacemaker调度资源的核心依据。
    • 节点维护
      pcs node standby <node_id>
      登录后复制
      可以将某个节点置于维护模式,让资源自动漂移走,方便进行系统升级或维护。
      pcs node unstandby <node_id>
      登录后复制
      则让节点重新加入调度。
  2. 利用Pacemaker的资源代理 (Resource Agents): Pacemaker通过资源代理来管理各种服务。这些代理脚本通常位于

    /usr/lib/ocf/resource.d/heartbeat/
    登录后复制
    目录下。

    • 标准化操作:每个资源代理都提供
      start
      登录后复制
      stop
      登录后复制
      monitor
      登录后复制
      meta
      登录后复制
      等标准操作,Pacemaker通过调用这些操作来管理服务。
    • 服务兼容性:Pacemaker提供了大量预定义的资源代理,涵盖了常见的服务,如IP地址(IPaddr2)、文件系统(Filesystem)、Apache(apache)、MySQL(mysql)等。这大大简化了将现有服务集成到集群中的工作。
    • 自定义代理:如果你的服务没有现成的资源代理,也可以编写自定义的shell脚本或Python脚本,遵循OCF(Open Cluster Framework)标准,作为自定义资源代理集成到Pacemaker中。
  3. 日志分析: 当集群出现问题时,日志是排查故障的第一手资料。

    • /var/log/messages
      登录后复制
      :系统级别的日志,包含了Corosync和Pacemaker的事件信息。
    • /var/log/cluster/corosync.log
      登录后复制
      :Corosync的专用日志,记录了心跳、成员变化等集群通信相关的信息。
    • /var/log/pacemaker.log
      登录后复制
      :Pacemaker的专用日志,记录了资源调度、Fencing操作等详细事件。 通过
      journalctl -f
      登录后复制
      tail -f
      登录后复制
      命令实时查看日志,可以帮助你快速定位问题。
  4. 集成到现有监控系统: 虽然

    pcs status
    登录后复制
    能提供实时的集群状态,但对于长期的趋势分析和预警,集成到专业的监控系统(如Zabbix、Prometheus、Grafana)是更好的选择。

    • Zabbix:可以通过编写自定义的Zabbix Agent脚本,定期执行
      pcs status
      登录后复制
      并解析输出,将集群状态、资源状态、节点健康度等数据发送给Zabbix Server。
    • Prometheus:可以使用
      textfile_exporter
      登录后复制
      或自定义
      node_exporter
      登录后复制
      模块,将
      pcs status
      登录后复制
      的输出转换成Prometheus可识别的指标,然后通过Grafana进行可视化展示。 通过监控,可以及时发现潜在问题,如资源漂移失败、Fencing设备异常、节点通信延迟等,从而在问题影响业务之前进行干预。

通过上述管理和监控手段的结合,可以确保CentOS高可用集群不仅能够稳定运行,而且在出现问题时能够快速定位、解决,保障业务的连续性。

以上就是CentOS集群搭建怎么操作_CentOS高可用集群配置方法的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号