菜鸟科技网

rhcs命令有哪些核心操作技巧?

RHCS 已经被淘汰了。 它的继任者是 PacemakerCorosync,它们共同构成了现代 RHEL (Red Hat Enterprise Linux) / CentOS 上的高可用性集群解决方案。

rhcs命令有哪些核心操作技巧?-图1
(图片来源网络,侵删)
  • Corosync: 负责集群成员管理、消息传递和成员间通信,它确保集群中的所有节点都知道彼此的存在,并能在节点故障时快速检测到。
  • Pacemaker: 负责资源管理(如 IP 地址、虚拟IP、数据库服务、Web服务等)和故障转移策略,它决定在哪个节点上运行哪个资源,以及在发生故障时如何迁移。

当你现在谈论“RHCS 命令”时,实际上主要是指用于管理 Pacemaker + Corosync 集群的命令。


核心管理命令 (Pacemaker)

这些命令用于查看和管理集群的整体状态、资源和节点。

查看集群状态

这是最常用、最重要的命令组。

  • crm status: 显示集群的总体状态,包括节点、资源和操作。

    rhcs命令有哪些核心操作技巧?-图2
    (图片来源网络,侵删)
    [root@node1 ~]# crm status
    ============
    Last updated: ... 
    Stack: corosync
    Current DC: node1 (version 2.1.5-1.el9-36e17e7b0d) - partition with quorum
    Last updated: ... 
    Nodes configured: 2
    Online: [ node1 node2 ]
    Full list of resources:
    Resource Group: g_web
        vip     (ocf:heartbeat:IPaddr2):       Started node1
        web_svc  (systemd:httpd):              Started node1
    Failed Actions:
    1. web_monitor_0 on node1 'not running' call=17, status=complete, exitreason='none',
        last-rc-change='...', queued-0ms, exec-0ms
  • crm_mon: 一个更详细、交互式的监控工具。crm status 实际上是 crm_mon -1 的简化版。

    # 持续监控,按 'q' 退出
    [root@node1 ~]# crm_mon
    # 以非交互方式运行,适合脚本
    [root@node1 ~]# crm_mon -r
  • pcs status: pcs 是一个更友好的命令行工具,它是对底层 crm 命令的封装,在 RHEL/CentOS 7/8/9 中,pcs 是推荐的管理工具。

    # 显示所有状态信息
    [root@node1 ~]# pcs status
    # 只显示集群节点
    [root@node1 ~]# pcs status nodes
    # 只显示资源
    [root@node1 ~]# pcs status resources

管理资源

  • crm configure: 进入资源配置的交互式模式。

    [root@node1 ~]# crm configure
    crm(live)configure#  # 在这里输入子命令

    常用子命令:

    rhcs命令有哪些核心操作技巧?-图3
    (图片来源网络,侵删)
    • show: 显示当前的资源配置。
    • primitive <resource_id> <class>:<provider>:<type> [params]: 定义一个基础资源(如 IP、VIP、服务等)。
    • group <group_id> <resource_id> [...]: 将多个资源定义为一个组,确保它们在同一个节点上运行。
    • clone <clone_id> <resource_id> [params]: 定义一个克隆资源(如 VIP),可以在多个节点上运行多个实例。
    • colocation <id> <score> <resource_id> <with_resource_id>: 定义资源位置约束,让两个资源倾向于在同一节点或不同节点上运行。
    • order <id> <score> <resource_id> <then_resource_id>: 定义资源启动顺序约束,确保一个资源在另一个资源之后启动。
    • commit: 保存并应用配置更改。
    • quit: 退出交互模式。
  • pcs resource: 使用 pcs 管理资源(推荐)。

    # 添加一个资源
    [root@node1 ~]# pcs resource create vip ocf:heartbeat:IPaddr2 ip=192.168.1.100 cidr_netmask=24 op monitor interval=30s
    # 添加一个资源组
    [root@node1 ~]# pcs resource group add g_web vip httpd
    # 删除一个资源
    [root@node1 ~]# pcs resource delete vip
    # 禁用资源(停止并禁止其自动启动)
    [root@node1 ~]# pcs resource disable vip
    # 启用资源
    [root@node1 ~]# pcs resource enable vip
    # 查看资源详细属性
    [root@node1 ~]# pcs resource show vip

管理节点

  • crm node: 管理集群节点。

    • crm node standby <node_name>: 将节点设置为待机模式,Pacemaker 会将此节点上的所有资源迁移到其他节点。
    • crm node online <node_name>: 将待机模式的节点恢复在线。
    • crm node cleanup <node_name>: 清理节点上的资源状态。这是一个危险命令,通常在节点彻底故障并恢复后,需要重新加入集群时使用。
  • pcs cluster: 使用 pcs 管理节点(推荐)。

    # 将节点设置为待机
    [root@node1 ~]# pcs node standby node2
    # 将节点恢复在线
    [root@node1 ~]# pcs node online node2
    # 强制清理节点
    [root@node1 ~]# pcs node cleanup node2

管理约束

约束定义了资源的位置、启动顺序和依赖关系。

  • crm configure location: 定义资源位置约束。

    • crm configure location prefer_node1 vip 100: 让 vip 资源优先在 node1 上运行(权重100)。
    • crm configure location avoid_node2 vip -INFINITY: 让 vip 资源绝对不要在 node2 上运行。
  • crm configure colocation: 定义资源亲和性约束。

    • crm configure colocation web_with_vip INFINITY vip web_svc: web_svc 必须和 vip 在同一个节点上,并且权重为无穷大(强制)。
  • pcs constraint: 使用 pcs 管理约束(推荐)。

    # 添加位置约束
    [root@node1 ~]# pcs constraint location vip prefers node1=100
    # 添加亲和性约束
    [root@node1 ~]# pcs constraint colocation add vip with httpd INFINITY
    # 添加顺序约束
    [root@node1 ~]# pcs constraint order vip then httpd

集群配置与服务命令

这些命令用于启动、停止和配置整个集群服务。

pcs 集群管理命令

pcs 是管理集群的瑞士军刀。

# 初始化集群(在第一个节点上执行)
[root@node1 ~]# pcs cluster setup --name my_cluster node1.example.com node2.example.com --start --enable
# 将其他节点加入集群(在要加入的节点上执行,并指定已在集群中的节点)
[root@node3 ~]# pcs cluster node add my_cluster node1.example.com
# 启动集群服务
[root@node1 ~]# pcs cluster start
# 停止集群服务
[root@node1 ~]# pcs cluster stop
# 设置集群在开机时自动启动
[root@node1 ~]# pcs cluster enable
# 禁用集群开机自启
[root@node1 ~]# pcs cluster disable
# 查看集群配置和状态
[root@node1 ~]# pcs cluster status
# 查看集群配置文件
[root@node1 ~]# pcs cluster cib

corosync 相关命令

直接操作 corosync 的情况较少,通常通过 pcscrm 间接管理。

# 查看 corosync 状态
[root@node1 ~]# corosync-cfgtool -s
# 查看 corosync 环境信息(如 ring ID)
[root@node1 ~]# corosync-cfgtool -l
# 手动发送一个消息,用于测试网络
[root@node1 ~]# corosync-cmapctl -s runtime.members

pacemaker 相关命令

# 查看 pacemaker 状态
[root@node1 ~]# pacemakerd status
# 获取集群的详细 CIB (Cluster Information Base) 配置
[root@node1 ~]# crm configure show

故障排查命令

当集群出现问题时,这些命令非常有用。

  1. crm_verify: 验证当前 CIB 配置文件的语法是否正确。

    [root@node1 ~]# crm_verify -L -V
  2. crm_simulate: 模拟配置更改,查看可能产生的结果,而不会实际应用,非常安全,用于预演。

    [root@node1 ~]# crm_simulate -L
  3. cibadmin: 直接读写 CIB 配置文件。

    # 导出当前配置
    [root@node1 ~]# cibadmin -Q > /tmp/cib.xml
    # 导入配置(危险操作)
    [root@node1 ~]# cibadmin -R -c /tmp/cib.xml
  4. 查看日志:

    • /var/log/pacemaker/pacemaker.log: Pacemaker 的主日志,记录了资源操作、决策过程等。
    • /var/log/cluster/corosync.log: Corosync 的日志,记录了成员通信和选举等。
    • journalctl -u pacemaker: 查看系统服务 pacemaker 的日志。

总结表格

功能类别 命令 (推荐) 命令 (传统) 描述
查看状态 pcs status crm status 显示集群、节点、资源的总体状态
资源管理 pcs resource crm configure 添加、删除、启用、禁用资源
节点管理 pcs node standby/online crm node standby/online 将节点设置为待机或恢复在线
约束管理 pcs constraint crm configure colocation/order 定义资源的位置、顺序和亲和性
集群配置 pcs cluster setup/start/stop 手动管理 corosyncpacemaker 服务 初始化、启动、停止整个集群
故障排查 crm_verify, journalctl crm_simulate, cibadmin 验证配置、模拟变更、查看日志

重要提示:在生产环境中进行任何更改前,强烈建议先在测试环境中验证,并使用 crm_simulatepcs dry-run 预演操作,错误的配置可能导致服务中断。

分享:
扫描分享到社交APP
上一篇
下一篇