Red Hat Training

A Red Hat training course is available for RHEL 8

27.2. 配置仲裁设备

按照以下流程配置仲裁设备并将其添加到集群中。

在本例中:

  • 用于仲裁设备的节点是 qdevice
  • 仲裁设备模型是 net,这是目前唯一支持的模型。net 模型支持以下算法:

    • ffsplit :50-50 均分。这为拥有最多活跃节点的分区提供一个投票。
    • lMS :last-man-standing。如果节点是集群中唯一可以看到 qnetd 服务器的节点,则它将返回一个投票。

      警告

      LMS 算法允许在集群中只剩下一个节点时仍保持仲裁,但也意味着制裁设备的投票权利更大,它等同于 number_of_nodes - 1。丢失与制裁设备的连接意味着丢失了 number_of_nodes - 1 个投票,就是说只有所有节点都处于活动状态的集群才能保持仲裁(通过对仲裁设备进行过度投票), 其它任何集群都变为不可仲裁。

      有关这些算法实现的详情,请查看 corosync-qdevice(8)手册页。

  • 集群节点是 node1node2

流程

  1. 在您要用来托管仲裁设备的节点中,使用以下命令配置仲裁设备。这个命令配置并启动仲裁设备模型 net,并将设备配置为在引导时启动。

    [root@qdevice:~]# pcs qdevice setup model net --enable --start
    Quorum device 'net' initialized
    quorum device enabled
    Starting quorum device...
    quorum device started

    配置制裁设备后,您可以检查其状态。这应该显示 corosync-qnetd 守护进程正在运行,此时没有客户端连接上来。--full 命令选项提供详细输出。

    [root@qdevice:~]# pcs qdevice status net --full
    QNetd address:                  *:5403
    TLS:                            Supported (client certificate required)
    Connected clients:              0
    Connected clusters:             0
    Maximum send/receive size:      32768/32768 bytes
  2. 使用以下命令在 firewalld 上启用 high-availability 服务,从而在防火墙上启用 pcsd 守护进程所需的端口和 net 仲裁设备:

    [root@qdevice:~]# firewall-cmd --permanent --add-service=high-availability
    [root@qdevice:~]# firewall-cmd --add-service=high-availability
  3. 在现有集群中的某个节点上,对托管仲裁设备的节点上的用户 hacluster 进行身份验证。这允许群集 上的 pcs 连接到 qdevice 主机上的 pcs,但不允许 qdevice 主机上的 pcs 连接到群集上的 pcs

    [root@node1:~] # pcs host auth qdevice
    Username: hacluster
    Password:
    qdevice: Authorized
  4. 在集群中添加仲裁设备。

    在添加仲裁设备前,您可以检查当前的配置以及仲裁设备的状态以便稍后进行比较。这些命令的输出表明集群还没有使用仲裁设备,每个节点的 Qdevice 成员资格状态为 NR (未注册)。

    [root@node1:~]# pcs quorum config
    Options:
    [root@node1:~]# pcs quorum status
    Quorum information
    ------------------
    Date:             Wed Jun 29 13:15:36 2016
    Quorum provider:  corosync_votequorum
    Nodes:            2
    Node ID:          1
    Ring ID:          1/8272
    Quorate:          Yes
    
    Votequorum information
    ----------------------
    Expected votes:   2
    Highest expected: 2
    Total votes:      2
    Quorum:           1
    Flags:            2Node Quorate
    
    Membership information
    ----------------------
        Nodeid      Votes    Qdevice Name
             1          1         NR node1 (local)
             2          1         NR node2

    以下命令添加您之前在集群中创建的仲裁设备。您不能同时在集群中使用多个仲裁设备。但是,一个仲裁设备可以被多个集群同时使用。这个示例命令将仲裁设备配置为使用 ffsplit 算法。有关仲裁设备的配置选项的详情,请查看 corosync-qdevice(8)手册页。

    [root@node1:~]# pcs quorum device add model net host=qdevice algorithm=ffsplit
    Setting up qdevice certificates on nodes...
    node2: Succeeded
    node1: Succeeded
    Enabling corosync-qdevice...
    node1: corosync-qdevice enabled
    node2: corosync-qdevice enabled
    Sending updated corosync.conf to nodes...
    node1: Succeeded
    node2: Succeeded
    Corosync configuration reloaded
    Starting corosync-qdevice...
    node1: corosync-qdevice started
    node2: corosync-qdevice started
  5. 检查仲裁设备的配置状态。

    在集群一端,您可以执行以下命令查看如何更改配置。

    pcs quorum config 显示已配置的仲裁设备。

    [root@node1:~]# pcs quorum config
    Options:
    Device:
      Model: net
        algorithm: ffsplit
        host: qdevice

    pcs quorum status 命令显示仲裁运行时状态,这表示仲裁设备正在使用中。每个集群节点 Qdevice 成员资格信息状态值的含义如下:

    • A/NA - 仲裁设备处于活动状态,表明 qdevicecorosync 之间是否存在心跳。这应该总是表示仲裁设备处于活动状态。
    • v/NV - 当仲裁设备为节点投票时,会设置 V。在本例中,两个节点都设为 V,因为它们可以相互通信。如果集群被分成两个单节点群集,其中一个节点将被设置为 V,另一个节点将被设置为 NV
    • MW/NMW - 设置内部仲裁设备标记(MW)或未设置(NMW)。默认情况下标志未设置,值为 NMW

      [root@node1:~]# pcs quorum status
      Quorum information
      ------------------
      Date:             Wed Jun 29 13:17:02 2016
      Quorum provider:  corosync_votequorum
      Nodes:            2
      Node ID:          1
      Ring ID:          1/8272
      Quorate:          Yes
      
      Votequorum information
      ----------------------
      Expected votes:   3
      Highest expected: 3
      Total votes:      3
      Quorum:           2
      Flags:            Quorate Qdevice
      
      Membership information
      ----------------------
          Nodeid      Votes    Qdevice Name
               1          1    A,V,NMW node1 (local)
               2          1    A,V,NMW node2
               0          1            Qdevice

      pcs quorum 设备状态 显示仲裁设备运行时状态。

      [root@node1:~]# pcs quorum device status
      Qdevice information
      -------------------
      Model:                  Net
      Node ID:                1
      Configured node list:
          0   Node ID = 1
          1   Node ID = 2
      Membership node list:   1, 2
      
      Qdevice-net information
      ----------------------
      Cluster name:           mycluster
      QNetd host:             qdevice:5403
      Algorithm:              ffsplit
      Tie-breaker:            Node with lowest node ID
      State:                  Connected

      在仲裁设备一侧,您可以执行以下状态命令,其显示 corosync-qnetd 守护进程的状态:

      [root@qdevice:~]# pcs qdevice status net --full
      QNetd address:                  *:5403
      TLS:                            Supported (client certificate required)
      Connected clients:              2
      Connected clusters:             1
      Maximum send/receive size:      32768/32768 bytes
      Cluster "mycluster":
          Algorithm:          ffsplit
          Tie-breaker:        Node with lowest node ID
          Node ID 2:
              Client address:         ::ffff:192.168.122.122:50028
              HB interval:            8000ms
              Configured node list:   1, 2
              Ring ID:                1.2050
              Membership node list:   1, 2
              TLS active:             Yes (client certificate verified)
              Vote:                   ACK (ACK)
          Node ID 1:
              Client address:         ::ffff:192.168.122.121:48786
              HB interval:            8000ms
              Configured node list:   1, 2
              Ring ID:                1.2050
              Membership node list:   1, 2
              TLS active:             Yes (client certificate verified)
              Vote:                   ACK (ACK)