Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

10.5. クォーラムデバイス

Red Hat Enterprise Linux 7.4 は、個別のクォーラムを設定する機能に完全に対応しています。主要な用途は、クォーラムルールによって許容されるノード障害の数よりも多くのノード障害をクラスターが許容するようにすることです。クォーラムデバイスは、偶数のノードを持つクラスターに推奨されます。2 ノードクラスターでクォーラムデバイスを使用すると、スプリットブレインの状況で存続するノードをより適切に判別できます。
クォーラムデバイスを設定する場合は、以下を考慮する必要があります。
  • クォーラムデバイスは、クォーラムデバイスを使用するクラスターと同じ場所にある別の物理ネットワークで実行することが推奨されます。理想としては、クォーラムデバイスホストを、メインクラスターとは別のラックに置くか、少なくとも別の PSU に置くようにします。corosync リングと同じネットワークセグメントには置かないようにしてください。
  • 複数のクォーラムデバイスをクラスターで同時に使用することはできません。
  • 複数のクォーラムデバイスをクラスターで同時に使用することはできません。ただし、複数のクラスターが 1 つのクォーラムデバイスを同時に使用することはできます。アルゴリズムやクォーラムオプションはクラスターノード自体に保存されるため、同じクォーラムデバイスを使用する各クラスターが、複数のアルゴリズムやクォーラムオプションを使用できます。たとえば、単一のクォーラムデバイスは、ffsplit (fifty/fifty 分割)アルゴリズムを持つ 1 つのクラスター、およびレム(last man standing)アルゴリズムを持つ 2 番目 クラスターで使用できます。
  • クォーラムデバイスは、既存のクラスターノードで実行しないでください。

10.5.1. クォーラムデバイスパッケージのインストール

クラスターにクォーラムデバイスを設定するには、以下のパッケージをインストールする必要があります。
  • 既存クラスターのノードに corosync-qdevice をインストールします。
    [root@node1:~]# yum install corosync-qdevice
    [root@node2:~]# yum install corosync-qdevice
  • クォーラムデバイスホストに pcs および corosync-qnetd をインストールします。
    [root@qdevice:~]# yum install pcs corosync-qnetd
  • pcsd サービスを起動し、システムの起動時に pcsd がクォーラムデバイスホストで有効にします。
    [root@qdevice:~]# systemctl start pcsd.service
    [root@qdevice:~]# systemctl enable pcsd.service

10.5.2. クォーラムデバイスの設定

本セクションでは、Red Hat High Availability クラスターでクォーラムデバイスを設定する手順例を説明します。以下の手順では、クォーラムデバイスを設定し、そのクォーラムデバイスをクラスターに追加します。この例の場合:
  • クォーラムデバイスに使用されるノードは qdevice です。
  • クォーラムデバイスモデルは net で、現在サポートされている唯一のモデルです。net モデルは、以下のアルゴリズムに対応します。
    • ffsplit: fifty-fifty 分割。これにより、アクティブなノードの数が最も多いパーティションに 1 票が提供されます。
    • ldM: last-man-standing。ノードが qnetd サーバーを表示できるクラスター内に残っている唯一のノードである場合、投票を返します。
      警告
      LMS アルゴリズムにより、ノードが 1 つしか残っていなくてもクラスターはクォーラムを維持できますが、number_of_nodes - 1 と同じであるため、クォーラムデバイスの投票力が大きいことを意味します。クォーラムデバイスとの接続が失われると、number_of_nodes - 1 の票が失われます。つまり、(クォーラムデバイスを無効にすることで) すべてのノードがアクティブなクラスターのみがクォーラムに達したままになります。他のクラスターは、クォーラムに達しなくなります。
    これらのアルゴリズムの実装の詳細は、corosync-qdevice(8)の man ページを参照してください。
  • クラスターノードは node1 および node2 です。
以下の手順は、クォーラムデバイスを設定し、そのクォーラムデバイスをクラスターに追加します。
  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. 以下のコマンドを実行して、firewalldhigh-availability サービスを有効にして、pcsd デーモンおよび net クォーラムデバイスに必要なファイアウォールのポートを有効にします。
    [root@qdevice:~]# firewall-cmd --permanent --add-service=high-availability
    [root@qdevice:~]# firewall-cmd --add-service=high-availability
  3. 既存クラスター内のノードのいずれかから、クォーラムデバイスをホストしているノードで hacluster ユーザーを認証します。
    [root@node1:~] # pcs cluster auth qdevice
    Username: hacluster
    Password:
    qdevice: Authorized
    
  4. クォーラムデバイスをクラスターに追加します。
    クォーラムデバイスを追加する前に、後で比較するために、クォーラムデバイスの現在の設定と状況を確認できます。このコマンドの出力は、クラスターがクォーラムデバイスを使用していないことを示しています。
    [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
    
    
    以下のコマンドは、作成しておいたクォーラムデバイスをクラスターに追加します。複数のクォーラムデバイスをクラスターで同時に使用することはできません。ただし、複数のクラスターが 1 つのクォーラムデバイスを同時に使用することはできます。上記のコマンド例は、ffsplit アルゴリズムを使用するようにクォーラムデバイスを設定します。クォーラムデバイスの設定オプションの詳細は、corosync-qdevice(8)の man ページを参照してください。
    [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 コマンドは、クォーラムデバイスのステータスを表示し、クォーラムデバイスが使用中であることを示します。
    [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 device status には、クォーラムデバイスのランタイムステータスが表示されます。
    [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
    
    クォーラムデバイスから以下の status コマンドを実行すると、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)
    

10.5.3. クォーラムデバイスサービスの管理

PCS は、以下のコマンド例に示すように、ローカルホスト(corosync-qnetd)でクォーラムデバイスサービスを管理する機能を提供します。このコマンドは、corosync-qnetd サービスにのみ影響することに注意してください。
[root@qdevice:~]# pcs qdevice start net
[root@qdevice:~]# pcs qdevice stop net
[root@qdevice:~]# pcs qdevice enable net
[root@qdevice:~]# pcs qdevice disable net
[root@qdevice:~]# pcs qdevice kill net

10.5.4. クラスターでのクォーラムデバイス設定の管理

以下のセクションは、クラスターでクォーラムデバイス設定を管理するために使用する PCS コマンドについて説明し、「クォーラムデバイスの設定」 のクォーラムデバイス設定を基にした例を使用します。

10.5.4.1. クォーラムデバイス設定の変更

クォーラムデバイスの設定を変更するには、pcs quorum device update コマンドを使用します。
警告
クォーラムデバイスモデル netホスト オプションを変更するには、旧ホストと新しいホストが同じマシンでない限り、pcs quorum device remove コマンドおよび pcs quorum device add コマンドを使用して設定を正しく設定します。
以下のコマンドは、クォーラムデバイスアルゴリズムを lms に変更します。
[root@node1:~]# pcs quorum device update model algorithm=lms
Sending updated corosync.conf to nodes...
node1: Succeeded
node2: Succeeded
Corosync configuration reloaded
Reloading qdevice configuration on nodes...
node1: corosync-qdevice stopped
node2: corosync-qdevice stopped
node1: corosync-qdevice started
node2: corosync-qdevice started

10.5.4.2. クォーラムデバイスの削除

以下のコマンドを使用して、クラスターノードに設定されたクォーラムデバイスを削除します。
[root@node1:~]# pcs quorum device remove
Sending updated corosync.conf to nodes...
node1: Succeeded
node2: Succeeded
Corosync configuration reloaded
Disabling corosync-qdevice...
node1: corosync-qdevice disabled
node2: corosync-qdevice disabled
Stopping corosync-qdevice...
node1: corosync-qdevice stopped
node2: corosync-qdevice stopped
Removing qdevice certificates from nodes...
node1: Succeeded
node2: Succeeded
クォーラムデバイスを削除すると、クォーラムデバイスの状態を表示するときに、次のエラーメッセージが表示されます。
[root@node1:~]# pcs quorum device status
Error: Unable to get quorum status: corosync-qdevice-tool: Can't connect to QDevice socket (is QDevice running?): No such file or directory

10.5.4.3. クォーラムデバイスの破棄

クォーラムデバイスホストのクォーラムデバイスを無効にするか停止して、設定ファイルをすべて削除するには、次のコマンドを実行します。
[root@qdevice:~]# pcs qdevice destroy net
Stopping quorum device...
quorum device stopped
quorum device disabled
Quorum device 'net' configuration files removed