documentation.suse.com / SUSE Linux Enterprise High Availabilityのドキュメント / 管理ガイド / インストールおよびセットアップ / YaSTクラスタモジュールの使用
適用項目 SUSE Linux Enterprise High Availability 15 SP7

7 YaSTクラスタモジュールの使用

YaSTクラスタモジュールでは、クラスタを手動で設定するか、既存のクラスタのオプションを変更することができます。

7.1 用語の定義

YaSTクラスタモジュールおよびこの章で使用されているいくつかの主要な用語を以下に定義します。

バインドネットワークアドレス(bindnetaddr)

Corosyncエグゼクティブのバインド先のネットワークアドレス。クラスタ間の設定ファイルの共有を簡素化するため、Corosyncはネットワークインタフェースネットマスクを使用して、ネットワークのルーティングに使用されるアドレスビットのみをマスクします。たとえば、ローカルインタフェースが192.168.5.92でネットマスクが255.255.255.0の場合、bindnetaddr192.168.5.0に設定します。ローカルインタフェースが192.168.5.92でネットマスクが255.255.255.192の場合は、bindnetaddr192.168.5.64に設定します。

ringX_addrを含むnodelist/etc/corosync/corosync.confで明示的に設定されている場合、bindnetaddrは厳密には必要ありません。

注記
注記: すべてのノードのネットワークアドレス

すべてのノード上で同じCorosync設定が使用されるため、ネットワークアドレスは、特定のネットワークインタフェースのアドレスではなく、bindnetaddrとして使用します。

conntrack ツール

カーネル内の接続トラッキングシステムとやり取りできるようにして、iptablesでのステートフルなパケット検査を可能にします。SUSE Linux Enterprise High Availabilityによって使用され、クラスタノード間の接続ステータスを同期します。詳細については、https://conntrack-tools.netfilter.org/を参照してください。

Csync2

クラスタ内のすべてのノード、およびGeoクラスタ全体に設定ファイルを複製するために使用できる同期ツールです。Csync2は、同期グループ別にソートされた任意の数のホストを操作できます。各同期グループは、メンバーホストの独自のリストとその包含/除外パターン(同期グループ内でどのファイルを同期するか定義するパターン)を持っています。グループ、各グループに属するホスト名、および各グループの包含/除外ルールは、Csync2設定ファイル/etc/csync2/csync2.cfgで指定されます。

Csync2は、認証には、同期グループ内でIPアドレスと事前共有キーを使用します。管理者は、同期グループごとに1つのキーファイルを生成し、そのファイルをすべてのグループメンバーにコピーする必要があります。

Csync2の詳細については、https://oss.linbit.com/csync2/paper.pdfを参照してください。

既存のクラスタ

既存のクラスタという用語は、1つ以上のノードで構成されるクラスタを指すものとして使用されます。既存のクラスタは、通信チャネルを定義する基本的なCorosync設定を持ちますが、必ずしもリソース設定を持つとは限りません。

ヒューリスティックス

QDeviceは一連のコマンド(heuristics)をサポートしています。コマンドは、クラスタサービスの起動時、クラスタメンバーシップの変更時、QNetdサーバへの接続の成功時にローカルで実行されるか、オプションで定期的に実行されます。

すべてのコマンドが正常に実行された場合にのみ、ヒューリスティックスは合格したとみなされ、そうでない場合は、失敗したとみなされます。ヒューリスティックスの結果は、QNetdサーバに送信され、そこでクォーラムに達するパーティションを決定するための計算に使用されます。

マルチキャスト

ネットワーク内で一対多数の通信に使用される技術で、クラスタ通信に使用できます。Corosyncはマルチキャストとユニキャストの両方をサポートしています。

注記
注記: スイッチとマルチキャスト

クラスタ通信にマルチキャストを使用するには、ご使用のスイッチがマルチキャストをサポートしていることを確認します。

マルチキャストアドレス (mcastaddr)

Corosyncエグゼクティブによるマルチキャストに使用されるIPアドレス。このIPアドレスはIPv4またはIPv6のいずれかに設定できます。IPv6ネットワークを使用する場合は、ノードのIDを指定する必要があります。プライベートネットワークでは、どのようなマルチキャストアドレスでも使用できます。

マルチキャストポート(mcastport)

クラスタ通信に使用されるポート。Corosyncでは、マルチキャストの受信用に指定するmcastportと、マルチキャストの送信用のmcastport -1の、2つのポートを使用します。

QDevice

Corosyncとともに実行されている各クラスタノード上のsystemdサービス(デーモン)。これはQNetdサーバのクライアントです。その主な用途は、クラスタが標準のクォーラムルールが許可するよりも多くのノード障害に耐えることができるようにすることです。

QDeviceはさまざまなアービトレータと連携するように設計されています。ただし、現在では、QNetdのみがサポートされています。

QNetd

クラスタの一部ではないsystemdサービス(デーモン、QNetdサーバ)。systemdサービスは、QDeviceデーモンに投票を提供します。

セキュリティを向上させるため、QNetdはTLSで動作してクライアント証明書を確認することができます。

冗長リングプロトコル(RRP)

ネットワーク障害の一部または全体に対する災害耐性のために、複数の冗長ローカルエリアネットワークが使用できるようになります。この方法では、1つのネットワークが作動中である限り、クラスタ通信を維持できます。Corosyncはトーテム冗長リングプロトコルをサポートします。信頼できるソートされた方式でメッセージを配信するために、論理トークンパスリングがすべての参加ノードに課せられます。ノードがメッセージをブロードキャストできるのは、トークンを保持している場合のみです。

Corosyncに定義済みの冗長通信チャネルを持つ場合、RRPを使用してこれらのインタフェースの使用方法をクラスタに伝えます。RRPでは次の3つのモードを使用できます(rrp_mode)。

  • activeに設定した場合、Corosyncは両方のインタフェースをアクティブに使用します。ただし、このモードは非推奨の機能です。

  • passiveに設定した場合、Corosyncは代わりに使用可能なネットワークを介してメッセージを送信します。

  • noneに設定した場合、RRPは無効になります。

ユニキャスト

1つのあて先ネットワークにメッセージを送信する技術Corosyncはマルチキャストとユニキャストの両方をサポートしています。Corosyncでは、ユニキャストはUDP-unicast (UDPU)として実装されます。

7.2 YaSTクラスタモジュールの起動

YaSTを起動して、高可用性 › クラスタを選択します。コマンドラインでこのモジュールを起動することもできます。

# yast2 cluster

初めてクラスタモジュールを起動した場合は、モジュールが、ウィザードのように、基本設定に必要なすべてのステップをガイドします。そうでない場合は、左パネルのカテゴリを選択して、ステップごとに設定オプションにアクセスします。

次のリストは、YaSTクラスタモジュールで使用可能な画面の概要を示しています。この画面には、クラスタセットアップの成功に必要なパラメータが含まれているかどうか、またはそのパラメータがオプションであるかどうかも説明されています。初回のガイド付き設定に従った場合、次のリストに示す順序で画面が表示されます。

通信チャネル(必須)

クラスタノード間の通信に1つまたは2つの通信チャネルを定義できます。転送プロトコルとして、マルチキャスト(UDP)またはユニキャスト(UDPU)のいずれかを使用します。詳細については、7.3項 「通信チャネルの定義」を参照してください。

重要
重要: 冗長通信パス

サポートされるクラスタセットアップでは、2つ以上の冗長通信パスが必要です。推奨される方法は、ネットワークデバイスボンディングを使用することです。使用できない場合は、Corosync内に2つ目の通信チャンネルを定義する必要があります。

Corosync QDevice (オプション。ただし、偶数ノードのクラスタの場合は推奨)

QDeviceをQNetdサーバのクライアントとして設定し、クォーラムの決定に参加できるようにします。これは、ノード数が偶数であるクラスタ、特に2ノードクラスタの場合に推奨されます。詳細については、7.4項 「クォーラムの決定のためのアービトレータの設定」を参照してください。

セキュリティ(オプションだが推奨)

クラスタの認証設定を定義できます。共有シークレットが必要なHMAC/SHA1認証を使用して、メッセージを保護し、認証することができます。詳細については、7.5項 「認証設定の定義」を参照してください。

Csync2の設定(オプションだが推奨)

Csync2では、設定変更を追跡して、クラスタノード間でファイルの同期を取ることができます。初めてYaSTを使用してクラスタを設定する場合は、Csync2を設定することを強くお勧めします。Csync2を使用しない場合は、すべての設定ファイルを最初のノードからクラスタ内の残りのノードに手動でコピーする必要があります。詳細については、7.6項 「ファイルを同期するためのCsync2の設定」を参照してください。

conntrackdの設定(オプション)

ユーザスペースconntrackdを設定できます。conntrackツールは、iptablesに対するステートフルなパケット検査のために使用します。詳細については、7.7項 「クラスタノード間の接続ステータスの同期」を参照してください。

サービス(必須)

クラスタノードをオンラインにするためにサービスを設定できます。ブート時にクラスタサービスを開始するかどうか、およびノード間の通信に必要なポートをファイアウォールで開くかどうかを定義します。詳細については、7.8項 「サービスの設定」を参照してください。

注記
注記: YaSTクラスタモジュールの設定

YaSTクラスタモジュール内の特定の設定は、現在のノードにのみ適用されます。他の設定はCsync2を使用してすべてのノードに自動的に転送できます。これについての詳しい情報は次のセクションを参照してください。

7.3 通信チャネルの定義

クラスタノード間で正常な通信を行うには、少なくとも1つの通信チャネルを定義します。YaST通信チャンネル画面で定義されるすべての設定は、/etc/corosync/corosync.confに書き込まれます。マルチキャストとユニキャストの設定のサンプルファイルは/usr/share/doc/packages/corosync/にあります。

IPv4アドレスを使用する場合、ノードIDはオプションです。IPv6アドレスを使用する場合、ノードIDは必須です。各ノードにIDを手動で指定する代わりに、YaSTクラスタモジュールには、クラスタノードごとに固有のIDを自動的に生成するオプションが含まれています。

次の手順で説明されるように、転送プロトコルとしてマルチキャスト(UDP)またはユニキャスト(UDPU)のいずれかを使用します。

注記
注記: パブリッククラウド: ユニキャストを使用する

SUSE Linux Enterprise High Availabilityをパブリッククラウドプラットフォームに展開する場合は、転送プロトコルとしてユニキャストを使用してください。クラウドプラットフォームでは、一般的にマルチキャストでの通信がサポートされていません。

手順 7.1: 最初の通信チャネルの定義(マルチキャスト)

マルチキャストを使用する場合、すべてのクラスタノードに同じbindnetaddrmcastaddr、およびmcastportが使用されます。クラスタ内のすべてのノードは同じマルチキャストアドレスを使用することで互いを認識します。別のクラスタは、別のマルチキャストアドレスを使用します。

  1. 既存のクラスタを変更する場合は、通信チャンネルカテゴリに切り替えます。

    初期セットアップウィザードに従っている場合は、カテゴリを手動で切り替える必要はありません。

  2. トランスポートプロトコルをMulticastに設定します。

  3. バインドネットワークアドレスを定義します。クラスタマルチキャストに使用するサブネットに値を設定します。

  4. マルチキャストアドレスを定義します。

  5. ポートを定義します。

  6. クラスタノードごとに一意のIDを自動的に生成するには、ノードIDの自動生成を有効にしたままにします。

  7. クラスタ名を定義します。

  8. 期待する得票数の数を入力します。これは、パーティションされたクラスタでCorosyncがクォーラムを計算する場合に重要です。デフォルトでは、各ノードには1票が割り当てられています。期待する得票数の数は、クラスタ内のノード数と一致する必要があります。

  9. Corosyncで冗長な通信チャンネルを定義する必要がある場合は、手順7.3「冗長通信チャネルの定義」に進みます。

    それ以外の場合は、次へ(セットアップウィザード)または完了(既存のクラスタ)をクリックして変更を確認します。

[通信チャンネル]画面には、Corosync通信チャンネルを設定するための設定が表示されます。この例では、[マルチキャスト]が選択されています。バインドネットワークアドレスとマルチキャストアドレスが追加されていますが、クラスタ内の各ノードのメンバーアドレスは必要ありません。
図 7.1: YaSTクラスタ - マルチキャスト設定
手順 7.2: 最初の通信チャネルの定義(ユニキャスト)
  1. 既存のクラスタを変更する場合は、通信チャンネルカテゴリに切り替えます。

    初期セットアップウィザードに従っている場合は、カテゴリを手動で切り替える必要はありません。

  2. トランスポートプロトコルをUnicastに設定します。

  3. ポートを定義します。

  4. ユニキャスト通信では、Corosyncはクラスタ内のすべてのノードのIPアドレスを認識する必要があります。各ノードで、追加を選択し、次の詳細情報を入力します。

    • IP Address

    • 冗長IPアドレス(Corosyncで2つ目の通信チャンネルを使用する場合にのみ必要)

    • ノードID (ノードIDの自動生成オプションが無効になっている場合にのみ必要)

    クラスタメンバーのアドレスを変更または削除するには、編集または削除ボタンを使用します。

  5. すべてのクラスタノードに対して一意のIDを自動的に生成するには、ノードIDの自動生成を有効にしたままにします。

  6. クラスタ名を定義します。

  7. 期待する得票数の数を入力します。これは、パーティションされたクラスタでCorosyncがクォーラムを計算する場合に重要です。デフォルトでは、各ノードには1票が割り当てられています。期待する得票数の数は、クラスタ内のノード数と一致する必要があります。

  8. Corosyncで冗長な通信チャンネルを定義する必要がある場合は、手順7.3「冗長通信チャネルの定義」に進みます。

    それ以外の場合は、次へ(セットアップウィザード)または完了(既存のクラスタ)をクリックして変更を確認します。

[通信チャンネル]画面に、Corosync通信チャンネルを設定するための設定が表示されています。この例では、[ユニキャスト]が選択されています。バインドネットワークアドレスとマルチキャストアドレスは必要ありませんが、クラスタ内の各ノードのメンバーアドレスを追加する必要があります。
図 7.2: YaSTクラスタ - ユニキャスト設定
手順 7.3: 冗長通信チャネルの定義

ネットワークデバイスボンディングが何らかの理由で使用できない場合、第2の選択は、Corosyncに冗長通信チャネル(2つ目のリング)を定義することです。この方法では、2つの物理的に分かれたネットワークが通信に使用できます。1つのネットワークが失敗しても、クラスタノードは、もう一方のネットワークを介して通信できます。

Corosync内の追加の通信チャネルは2つ目のトークンパスリングを形成します。設定した最初のチャンネルはプライマリリングで、リング番号0を取得します。2つ目のリング(冗長チャネル)はリング番号1を取得します。

重要
重要: 冗長リングおよび/etc/hosts

Corosync内で複数のリングが設定されている場合、各ノードが複数のIPアドレスを持つことができます。これはすべてのノードの/etc/hostsに反映する必要があります。

  1. 最初のチャンネルを手順7.1「最初の通信チャネルの定義(マルチキャスト)」または手順7.2「最初の通信チャネルの定義(ユニキャスト)」の説明に従って設定します。

  2. 冗長チャンネルを有効にします。冗長チャネルは、定義した最初の通信チャネルと同じプロトコルを使用する必要があります。

  3. マルチキャストを使用する場合は冗長チャンネル用に次のパラメータを入力します: 使用するバインドネットワークアドレスマルチキャストアドレス、およびポート

    ユニキャストを使用する場合は次のパラメータを定義します: 使用するバインドネットワークアドレス、およびポートメンバーアドレスの下で、各エントリを 編集して 、クラスタの一部となる各ノードの冗長IPを追加します。

  4. Corosyncに、異なるチャンネルを使用する方法とタイミングを伝えるには、使用するrrp_modeを選択します。

    • 通信チャンネルが1つだけ定義されている場合、rrp-modeは自動的に無効化されます(値none)。

    • activeに設定した場合、Corosyncは両方のインタフェースをアクティブに使用します。ただし、このモードは非推奨の機能です。

    • passiveに設定した場合、Corosyncは代わりに使用可能なネットワークを介してメッセージを送信します。

    RRPの使用時に、SUSE Linux Enterprise High Availabilityは現在のリングの状態を監視し、障害発生後に冗長リングを自動的に再度有効化します。

    または、corosync-cfgtoolを使用してリングの状態を手動で確認します。使用可能なオプションは-hで参照できます。

  5. 次へ(セットアップウィザード)または完了(既存のクラスタ)をクリックして変更を確認します。

7.4 クォーラムの決定のためのアービトレータの設定

QDeviceおよびQNetdはクォーラムの決定に参加します。アービトレータcorosync-qnetdからの支援により、corosync-qdeviceは設定可能な投票数を提供するため、クラスタは標準のクォーラムルールで許可されているよりも多くのノード障害に耐えることができます。ノード数が偶数であるクラスタ、特に2ノードクラスタについては、corosync-qnetdおよびcorosync-qdeviceの展開をお勧めします。詳細については、第18章 「QDeviceおよびQNetdを参照してください。

要件
手順 7.4: QDeviceとQNetdの設定
  1. 既存のクラスタを変更する場合は、Corosync QDeviceカテゴリに切り替えます。

    初期セットアップウィザードに従っている場合は、カテゴリを手動で切り替える必要はありません。

  2. Corosync QDeviceの有効化をアクティブにします。

  3. QNetdサーバホストフィールドに、QNetdサーバのIPアドレスまたはホスト名を入力します。

  4. TLSのモードを選択します。

    • TLSが必須ではなく、試行する必要がない場合は、オフを使用します。

    • オンを使用すると、TLSでの接続を試みますが、TLSが利用できない場合はTLSなしで接続します。

    • TLSを必須にするには、必須を使用します。TLSが利用できない場合、QDeviceはエラーで終了します。

  5. アルゴリズムタイブレーカでは、デフォルト値を受け入れます。これらの値を変更する必要がある場合は、クラスタの設定が完了した後に、コマンドcrm cluster init qdeviceを使用して変更できます。

  6. ヒューリスティックスモードを選択します。

    • ヒューリスティックスを無効にするには、オフを使用します。

    • ヒューリスティックスをヒューリスティックス間隔で設定した間隔で定期的に実行するには、オンを使用します。

    • 起動時、クラスタメンバーシップの変更時、およびQNetdへの接続時にのみヒューリスティックスを実行するには、同期を使用します。

  7. ヒューリスティックスモードオンまたは同期に設定する場合は、ヒューリスティックコマンドをヒューリスティックス実行リストに追加します。

    1. 追加を選択します。新しいウィンドウが開きます。

    2. コマンドの実行名を入力します。

    3. 実行スクリプトフィールドにコマンドを入力します。単一のコマンドまたはスクリプトへのパスを入力でき、Shell、Python、Rubyなどの任意の言語で記述できます。

    4. OKを選択して、ウィンドウを閉じます。

  8. 次へ(セットアップウィザード)または完了(既存のクラスタ)をクリックして変更を確認します。

[Corosync QDevice]画面に、QDeviceを設定するための設定が表示されています。Corosync QDeviceの有効化チェックボックスがアクティブ化されていて、カーソルはQNetdサーバホストフィールドにあります。
図 7.3: YaSTクラスタ – Corosync QDevice

7.5 認証設定の定義

クラスタの認証設定を定義するには、HMAC/SHA1認証を使用できます。共有シークレットが必要なHMAC/SHA認証を使用して、メッセージを保護し、認証する必要があります。指定した認証キー(パスワード)が、クラスタ中のすべてのノードで使用されます。

手順 7.5: 安全な認証を有効にする
  1. 既存のクラスタを変更する場合は、セキュリティカテゴリに切り替えます。

    初期セットアップウィザードに従っている場合は、カテゴリを手動で切り替える必要はありません。

  2. セキュリティ認証を有効にするをアクティブ化します。

  3. 新しく作成したクラスタの場合は、認証鍵ファイルの生成を選択します。認証キーが作成され、/etc/corosync/authkeyに書き込まれます。

    ご使用のマシンを既存のクラスタに参加させたい場合、新しいキーファイルは生成しないでください。代わりに、いずれかのノードから/etc/corosync/authkeyを(手動またはCsync2によって)ご使用のマシンにコピーします。

  4. 次へ(セットアップウィザード)または完了(既存のクラスタ)をクリックして変更を確認します。YaSTが設定を/etc/corosync/corosync.confに書き込みます。

[セキュリティ]画面に、Corosyncの認証を設定するための設定が表示されています。[セキュリティ認証を有効にする]チェックボックスがアクティブ化されていて、ハッシュ方式と暗号化方式のタイプを選択できます。[認証鍵ファイルの生成]を選択するオプションもあります。
図 7.4: YaSTクラスタ - セキュリティ

7.6 ファイルを同期するためのCsync2の設定

設定ファイルをすべてのノードに手動でコピーする代わりに、csync2ツールを使用して、クラスタ内のすべてのノードにレプリケートします。Csync2では、設定変更を追跡して、クラスタノード間でファイルの同期を取ることができます。

  • 操作に対して重要なファイルのリストを定義できます。

  • (他のクラスタノードに対して)これらのファイルの変更を表示できます。

  • 1つのコマンドで複数の設定済みファイルの同期を取ることができます。

  • ~/.bash_logoutの単純なシェルスクリプトを使用して、システムからログアウトする前に、同期化されていない変更について通知できます。

Csync2の詳細については、https://oss.linbit.com/csync2/https://oss.linbit.com/csync2/paper.pdfにアクセスしてください。

重要
重要: 変更後の同期のプッシュ

Csync2は変更のみをプッシュします。Csync2はマシン間でファイルを絶えず同期しているわけではありません。同期が必要なファイルを更新する際はいつも、変更をその他のマシンにプッシュする必要があります。csync2を使用して変更をプッシュする方法については、YaSTを使用したクラスタ設定が完了した後に説明します。

手順 7.6: YaSTによるCsync2の設定
  1. 既存のクラスタを変更する場合は、Csync2の設定カテゴリに切り替えます。

    初期セットアップウィザードに従っている場合は、カテゴリを手動で切り替える必要はありません。

  2. 同期グループを指定するには、同期ホストグループで追加を選択し、クラスタ内のすべてのノードのローカルホスト名を入力します。ノードごとに、hostnameコマンドから返された文字列を正確に使用する必要があります。

    ヒント
    ヒント: ホスト名解決

    ホスト名解決がネットワークで正しく機能しない場合は、各クラスタノードのホスト名とIPアドレスの組み合わせを指定することもできます。この指定には、HOSTNAME@IP文字列(たとえば、alice@192.168.2.100)を使用します。Csync2は、接続時にIPアドレスを使用します。

  3. 事前共有鍵の生成を選択して、同期グループのキーファイルを生成します。キーファイルは、/etc/csync2/key_hagroupに書き込まれます。

  4. すべてのノード間で、通常、同期される必要のあるファイルを同期ファイルリストに入れるには、推奨されるファイルの追加を選択します。

  5. 同期するファイルのリストからファイルを編集追加、または削除するには、該当する各ボタンを使用します。ファイルごとに絶対パス名を入力する必要があります。

  6. Csync2を有効にするを選択して、Csync2をアクティブ化します。これにより、ブート時にCsync2 が自動的に起動するようになります。

  7. 次へ(セットアップウィザード)または完了(既存のクラスタ)をクリックして変更を確認します。YaSTがCsync2の設定内容を/etc/csync2/csync2.cfgに書き込みます。

[Csync2の設定]画面に、ノード間のファイル転送を設定するための設定が表示されています。左側には[同期ホスト]リストがあり、ここにすべてのクラスタノードを追加する必要があります。右側には[同期ファイル]リストがあり、設定ファイルが自動的に入力されます。Generate Pre-Shared-KeysおよびTurn Csync2 ONを選択するオプションもあります。
図 7.5: YaSTクラスタ - Csync2

7.7 クラスタノード間の接続ステータスの同期

iptablesに対してステートフルなパケット検査ができるようにするには、conntrackツールを設定して使用します。これには、次の基本手順を必要とします。

手順 7.7: YaSTによるconntrackdの設定

YaSTクラスタモジュールを使用して、ユーザスペースconntrackdを設定します(図7.6「YaSTクラスタ - conntrackdを参照してください)。これには、その他の通信チャネルに使用されていない専用のネットワークインタフェースが必要です。デーモンは後でリソースエージェントによって起動できます。

  1. 既存のクラスタを変更する場合は、conntrackdの設定カテゴリに切り替えます。

    初期セットアップウィザードに従っている場合は、カテゴリを手動で切り替える必要はありません。

  2. 専用インターフェイスを選択して、接続ステータスを同期します。選択したインタフェースのIPv4アドレスが自動的に検出され、YaSTに表示されます。これはすでに設定済みで、マルチキャストをサポートしている必要があります。

  3. 接続ステータスの同期に使用するマルチキャストアドレスを定義します。

  4. グループ番号で、接続ステータスを同期させるグループのID番号を定義します。

  5. /etc/conntrackd/conntrackd.confの生成を選択して、conntrackdの環境設定ファイルを作成します。

  6. 既存のクラスタでオプションを変更した場合、変更を確認して、クラスタモジュールを終了します。

  7. 次へ(セットアップウィザード)または完了(既存のクラスタ)をクリックして変更を確認します。

conntrackツールを設定したら、これをLinux Virtual Serverで使用できます(負荷分散を参照してください)。

[conntrackdの設定]画面に、conntrackツールを設定するための設定が表示されています。専用インターフェイスを選択し、マルチキャストアドレスとグループ番号を入力して、/etc/conntrackd/conntrackd.confファイルを生成します。
図 7.6: YaSTクラスタ - conntrackd

7.8 サービスの設定

YaSTクラスタモジュールで、ブート時にノード上で一定のサービスを開始するかどうか定義します。サービスを手動で開始または停止するためにモジュールを使用することもできます。クラスタノードをオンラインにし、クラスタリソースマネージャを起動するには、Pacemakerをサービスとして実行する必要があります。

このセクションのこの設定は、すべてのクラスタノードではなく、ご使用のマシンにのみ適用されます。

手順 7.8: クラスタサービスの有効化
  1. 既存のクラスタを変更する場合は、サービスカテゴリに切り替えます。このセクションのオプションを使用して、このノード上のクラスタサービスを開始および停止できます。

    初期セットアップウィザードに従っている場合は、カテゴリを手動で切り替える必要はありません。クラスタサービスは後で開始するので、ステップ 5までスキップしても構いません。

  2. このクラスタノードがブートするたびにクラスタサービスを開始するには、クラスタの有効化を選択します。クラスタの無効化を選択する場合は、このノードがブートするたびに手動でクラスタサービスを開始する必要があります。

  3. クラスタサービスを直ちに開始または停止するには、今すぐ開始するまたは今すぐ停止するを選択します。

  4. QDeviceを直ちに開始または停止するには、今すぐ開始するまたは今すぐ停止するを選択します。

  5. クラスタ通信に必要なポートをファイアウォールで開くには、ファイアウォールでポートを開くをアクティブにします。

  6. 次へ(セットアップウィザード)または完了(既存のクラスタ)をクリックして変更を確認します。

    初期セットアップウィザードに従っている場合は、これで初期設定が完了し、YaSTが終了します。7.9項 「すべてのノードへの設定の転送」に進みます。

[サービス]画面では、サービスを開始または停止できます。ブート時にクラスタを有効化または無効化したり、PacemakerとCorosyncを開始または停止したり、QDeviceを開始または停止したりできます。必要なファイアウォールポートを開くこともできます。
図 7.7: YaSTクラスタ - サービス

7.9 すべてのノードへの設定の転送

YaSTによるクラスタ設定が完了したら、csync2を使用して設定ファイルを残りのクラスタノードにコピーします。ファイルを受信するには、ノードが手順7.6「YaSTによるCsync2の設定」で設定した同期ホストグループに含まれている必要があります。

Csync2を初めて実行する前に、次の準備をする必要があります。

手順 7.9: Csync2による初期同期の準備
  1. ノード間にパスワード不要のSSHが設定されていることを確認します。これはクラスタ通信に必要です。

  2. ファイル/etc/csync2/csync2.cfgをクラスタ内のすべてのノードに手動でコピーします。

  3. ファイル/etc/csync2/key_hagroupをクラスタ内のすべてのノードに手動でコピーします。このファイルは、Csync2による認証で必要になります。ただし、すべてのノードで同じファイルでなければならないので、他のノードではファイルを再生成しないでください。

  4. すべてのノード上で次のコマンドを実行して、サービスを今すぐ有効にして開始します。

    # systemctl enable --now csync2.socket

次の手順を使用して、設定ファイルをすべてのクラスタノードに転送します。

手順 7.10: Csync2を使用した変更内容の同期
  1. すべてのファイルを一度同期させるには、設定のコピー元であるマシン上で次のコマンドを実行します。

    # csync2 -xv

    これによって、すべてのファイルをその他のノードにプッシュすることで、一度に同期を行います。すべてのファイルが正常に同期されると、Csync2がエラーなしで終了します。

    同期対象の1つ以上のファイルが(現在のノードだけでなく)他のノード上で変更されている場合は、Csync2から、以下のものと同様の出力との衝突が報告されます。

    While syncing file /etc/corosync/corosync.conf:
    ERROR from peer hex-14: File is also marked dirty here!
    Finished with 1 errors.
  2. 現在のノードのファイルバージョンが最良だと確信する場合は、そのファイルを強制して再同期を行い、競合を解決できます。

    # csync2 -f /etc/corosync/corosync.conf
    # csync2 -xv

Csync2オプションの詳細については、次のコマンドを実行してください

# csync2 --help
重要
重要: 変更後の同期のプッシュ

Csync2は変更のみをプッシュします。Csync2はマシン間でファイルを絶えず同期しているわけではありません

同期が必要なファイルを更新する際はいつも、変更を加えたマシン上でcsync2 -xvを実行することで、変更をその他のマシンにプッシュする必要があります。変更されていないファイルが配置された他のマシン上でこのコマンドを実行しても、何も起こりません。

7.10 クラスタをオンラインにする

最初のクラスタ設定が完了した後、すべてのクラスタノード上でクラスタサービスを開始し、スタックをオンラインにします。

手順 7.11: クラスタサービスの開始および状態の確認
  1. 既存のノードにログインします。

  2. すべてのクラスタノード上でクラスタサービスを開始します。

    # crm cluster start --all

    このコマンドにはノード間のパスワード不要のSSHアクセスが必要です。crm cluster startを使用して個々のノードを起動することもできます。

  3. クラスタのステータスをcrm statusコマンドで確認します。すべてのノードがオンラインの場合、出力は次のようになります。

    # crm status
    Cluster Summary:
      * Stack: corosync
      * Current DC: alice (version ...) - partition with quorum
      * Last updated: ...
      * Last change:  ... by hacluster via crmd on bob
      * 2 nodes configured
      * 1 resource instance configured
    
    Node List:
      * Online: [ alice bob ]
    ...

    この出力は、クラスタリソースマネージャが起動し、リソースを管理できる状態にあることを示しています。

サポートされるには、SUSE Linux Enterprise High AvailabilityクラスタでSTONITH (ノードフェンシング)が有効になっている必要があります。ノードフェンシングメカニズムは、物理デバイス(電源スイッチ)でも、SBDのようなメカニズムとウォッチドッグを組み合わせたものでも構いません。クラスタの使用を続ける前に、1つ以上のSTONITHデバイスを第16章 「フェンシングとSTONITHまたは第17章 「ストレージ保護とSBDの説明に従って設定してください。

Documentation survey