Red Hat Training

A Red Hat training course is available for RHEL 8

第 2 章 Pacemaker 入门

这些步骤介绍了您用来创建 Pacemaker 集群的工具和流程。这些内容适用于想了解集群软件以及如何管理它,而不需要配置集群的用户。

注意

这些步骤并不会创建受支持的红帽集群。受支持的红帽集群至少需要两个节点并配置隔离设备。如需了解有关 RHEL 高可用性集群的红帽支持策略、要求和限制的完整信息,请参阅 RHEL High Availability 集群的支持政策。

2.1. 学习使用 Pacemaker

通过这个过程,您将了解如何使用 Pacemaker 设置集群、如何显示集群状态以及如何配置集群服务。这个示例创建了一个 Apache HTTP 服务器作为集群资源,并显示了集群在资源失败时如何响应。

在本例中:

  • 节点为 z1.example.com
  • 浮动 IP 地址为 192.168.122.120。

先决条件

  • 运行 RHEL 8 的单个节点
  • 驻留于与节点静态分配的 IP 地址之一相同的网络中的一个浮动 IP 地址。
  • 运行的节点的名称位于 /etc/hosts 文件中

流程

  1. 从 High Availability 频道安装红帽高可用性附加组件软件包,并启动并启用 pcsd 服务。

    # yum install pcs pacemaker fence-agents-all
    ...
    # systemctl start pcsd.service
    # systemctl enable pcsd.service

    如果您正在运行 firewalld 守护进程,启用红帽高可用性附加组件所需的端口。

    # firewall-cmd --permanent --add-service=high-availability
    # firewall-cmd --reload
  2. 在群集的每个节点上设置用户 hacluster 的密码,并为您要运行 pcs 命令的节点上群集中的每个节点验证用户 hacluster。本例只使用一个节点,您要从这个节点中运行命令。把这一步包括在这个步骤的原因是,它是配置一个被支持的红帽高可用性多节点集群的一个必要步骤。

    # passwd hacluster
    ...
    # pcs host auth z1.example.com
  3. 创建名为 my_cluster 且具有一个成员的群集,并检查群集的状态。这个命令会创建并启动集群。

    # pcs cluster setup my_cluster --start z1.example.com
    ...
    # pcs cluster status
    Cluster Status:
     Stack: corosync
     Current DC: z1.example.com (version 2.0.0-10.el8-b67d8d0de9) - partition with quorum
     Last updated: Thu Oct 11 16:11:18 2018
     Last change: Thu Oct 11 16:11:00 2018 by hacluster via crmd on z1.example.com
     1 node configured
     0 resources configured
    
    PCSD Status:
      z1.example.com: Online
  4. 红帽高可用性集群要求为集群配置隔离功能。Fencing in a Red Hat High Availability Cluster 包括了这个要求的原因。然而,在本简介中,它只显示如何使用基本 Pacemaker 命令,通过将启用了 stonith-enabled 集群选项设置为 false 来禁用隔离。

    警告

    对生产环境集群而言,stonith-enabled=false 的使用完全不合适。它通知集群,假设出现故障的节点已被安全隔离。

    # pcs property set stonith-enabled=false
  5. 在您的系统中配置网页浏览器并创建一个网页来显示简单文本信息。如果您正在运行 firewalld 守护进程,请启用 httpd 所需的端口。

    注意

    不要使用 systemctl enable 启用任何由集群管理的在系统引导时启动的服务。

    # yum install -y httpd wget
    ...
    # firewall-cmd --permanent --add-service=http
    # firewall-cmd --reload
    
    # cat <<-END >/var/www/html/index.html
    <html>
    <body>My Test Site - $(hostname)</body>
    </html>
    END

    要让 Apache 资源代理获得 Apache 状态,在现有配置中添加以下内容来启用状态服务器 URL。

    # cat <<-END > /etc/httpd/conf.d/status.conf
    <Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
    Allow from ::1
    </Location>
    END
  6. 创建 IPaddr2apache 资源,供群集管理。'IPaddr2' 资源是一个浮动 IP 地址,它不能是一个已经与物理节点关联的 IP 地址。如果没有指定 'IPaddr2' 资源的 NIC 设备,浮动 IP 必须位于与静态分配的 IP 地址相同的网络中。

    您可以使用 pcs resource list 命令显示所有可用资源类型的列表。您可以使用 pcs resource describe resourcetype 命令显示您可以为指定资源类型设置的参数。例如,以下命令显示您可以为 apache 类型的资源设置的参数:

    # pcs resource describe apache
    ...

    在本例中,IP 地址资源和 apache 资源都配置为名为 apachegroup 的组的一部分,这样可确保资源在配置正常工作的多节点群集时在同一节点上运行。

    # pcs resource create ClusterIP ocf:heartbeat:IPaddr2 ip=192.168.122.120 --group apachegroup
    
    # pcs resource create WebSite ocf:heartbeat:apache configfile=/etc/httpd/conf/httpd.conf statusurl="http://localhost/server-status" --group apachegroup
    
    # pcs status
    Cluster name: my_cluster
    Stack: corosync
    Current DC: z1.example.com (version 2.0.0-10.el8-b67d8d0de9) - partition with quorum
    Last updated: Fri Oct 12 09:54:33 2018
    Last change: Fri Oct 12 09:54:30 2018 by root via cibadmin on z1.example.com
    
    1 node configured
    2 resources configured
    
    Online: [ z1.example.com ]
    
    Full list of resources:
    
    Resource Group: apachegroup
        ClusterIP  (ocf::heartbeat:IPaddr2):       Started z1.example.com
        WebSite    (ocf::heartbeat:apache):        Started z1.example.com
    
    PCSD Status:
      z1.example.com: Online
    ...

    配置集群资源后,您可以使用 pcs resource config 命令显示为该资源配置的选项。

    # pcs resource config WebSite
    Resource: WebSite (class=ocf provider=heartbeat type=apache)
     Attributes: configfile=/etc/httpd/conf/httpd.conf statusurl=http://localhost/server-status
     Operations: start interval=0s timeout=40s (WebSite-start-interval-0s)
                 stop interval=0s timeout=60s (WebSite-stop-interval-0s)
                 monitor interval=1min (WebSite-monitor-interval-1min)
  7. 将浏览器指向使用您配置的浮动 IP 地址创建的网站。这个命令会显示您定义的文本信息。
  8. 停止 apache web 服务并检查集群的状态。使用 killall -9 模拟应用程序级别的崩溃。

    # killall -9 httpd

    检查集群状态。您应该看到停止 web 服务会导致操作失败,但集群软件会重启该服务,您应该仍然可以访问网站。

    # pcs status
    Cluster name: my_cluster
    ...
    Current DC: z1.example.com (version 1.1.13-10.el7-44eb2dd) - partition with quorum
    1 node and 2 resources configured
    
    Online: [ z1.example.com ]
    
    Full list of resources:
    
    Resource Group: apachegroup
        ClusterIP  (ocf::heartbeat:IPaddr2):       Started z1.example.com
        WebSite    (ocf::heartbeat:apache):        Started z1.example.com
    
    Failed Resource Actions:
    * WebSite_monitor_60000 on z1.example.com 'not running' (7): call=13, status=complete, exitreason='none',
        last-rc-change='Thu Oct 11 23:45:50 2016', queued=0ms, exec=0ms
    
    PCSD Status:
        z1.example.com: Online

    您可以在服务启动并再次运行后,清除失败的资源中的失败状态。当您查看集群状态时,失败的操作通知将不再出现。

    # pcs resource cleanup WebSite
  9. 当您完成查看集群和集群状态后,停止节点上的集群服务。即使为此简介仅在一个节点上启动服务,但包含 --all 参数,因为它将停止实际多节点群集上所有节点上的群集服务。

    # pcs cluster stop --all