11.13. ha_cluster 変数を使用して SBD ノードフェンシングを使用する高可用性クラスターを設定する


クラスター内の 1 つのノードに問題が発生した場合でも、クラスターが提供するサービスを引き続き利用可能にするには、1 つの以上フェンスデバイスを使用して Red Hat 高可用性クラスターを設定する必要があります。ご使用の環境で、リモートアクセス可能な電源スイッチによりクラスターノードをフェンスできない場合は、STONITH ブロックデバイス (SBD) を使用してフェンシングを設定できます。このデバイスは、共有ブロックストレージによるメッセージの交換を通じて、Pacemaker ベースのクラスターにノードフェンシングメカニズムを提供します。SBD は、Pacemaker、ウォッチドッグデバイス、および必要に応じて共有ストレージと統合し、フェンシングが必要なときにノードが確実に自己終了するように調整します。

ha_cluster RHEL システムロールを使用すると、SBD フェンシングを自動的に設定できます。ha_cluster では、次のどちらかの変数を使用して、ノードごとにウォッチドッグおよび SBD デバイスを設定できます。

  • ha_cluster_node_options: (RHEL 9.5 以降) これは Playbook ファイルで定義する単一の変数です。これはディクショナリーのリストです。各ディクショナリーで 1 つのノードのオプションを定義します。
  • ha_cluster: (RHEL 9.1 以降) 1 つのノードのみのオプションを定義するディクショナリー。ha_cluster 変数はインベントリーファイルで設定します。各ノードに異なる値を設定するには、各ノードに変数を個別に定義します。

ha_cluster_node_options 変数と ha_cluster 変数の両方に SBD オプションが含まれている場合、ha_cluster_node_options のオプションが優先されます。

ha_cluster_node_options 変数と ha_cluster 変数の両方に SBD オプションが含まれている場合、ha_cluster_node_options のオプションが優先されます。

次の手順の例では、ha_cluster システムロールを使用して、SBD フェンシングを使用する高可用性クラスターを作成します。この手順の例では、インベントリーファイルの ha_cluster 変数を使用して、ノードごとにノードアドレスと SBD オプションを設定します。Playbook ファイルで ha_cluster_node_options 変数を使用する手順の例については、ha_cluster_nodes_options 変数を使用して SBD ノードフェンシングを使用する高可用性クラスターを設定する を参照してください。

警告

ha_cluster システムロールは、指定されたノードの既存のクラスター設定を置き換えます。Playbook に指定されていない設定はすべて失われます。

前提条件

  • コントロールノードと管理対象ノードの準備が完了している
  • 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
  • 管理対象ノードへの接続に使用するアカウントに、そのノードに対する sudo 権限がある。
  • クラスターメンバーとして使用するシステムには、RHEL および RHEL High Availability Add-On のアクティブなサブスクリプションがある。

手順

  1. 次の例のように、ha_cluster 変数を使用して各ノードのウォッチドッグデバイスと SBD デバイスを設定するクラスターのインベントリーファイルを作成します。

    all:
      hosts:
        node1:
          ha_cluster:
            sbd_watchdog_modules:
              - iTCO_wdt
            sbd_watchdog_modules_blocklist:
              - ipmi_watchdog
            sbd_watchdog: /dev/watchdog1
            sbd_devices:
              - /dev/disk/by-id/000001
              - /dev/disk/by-id/000001
              - /dev/disk/by-id/000003
        node2:
          ha_cluster:
            sbd_watchdog_modules:
              - iTCO_wdt
            sbd_watchdog_modules_blocklist:
              - ipmi_watchdog
            sbd_watchdog: /dev/watchdog1
            sbd_devices:
              - /dev/disk/by-id/000001
              - /dev/disk/by-id/000002
              - /dev/disk/by-id/000003
    Copy to Clipboard

    インベントリーの例で指定されている SBD およびウォッチドッグ設定には、次のものが含まれています。

    sbd_watchdog_modules
    /dev/watchdog* デバイスを作成するためにロードするウォッチドッグカーネルモジュール。
    sbd_watchdog_modules_blocklist
    アンロードおよびブロックするウォッチドッグカーネルモジュール。
    sbd_watchdog
    SBD が使用するウォッチドッグデバイス。
    sbd_devices
    SBD メッセージの交換と監視に使用するデバイス。一定の長いデバイス名 (/dev/disk/by-id/) を常に使用してデバイスを参照します。

    インベントリーファイルの作成に関する一般的な情報については、RHEL 9 でのコントロールノードの準備 を参照してください。

  2. 機密性の高い変数を暗号化されたファイルに保存します。

    1. vault を作成します。

      $ ansible-vault create ~/vault.yml
      New Vault password: <vault_password>
      Confirm New Vault password: <vault_password>
      Copy to Clipboard
    2. ansible-vault create コマンドでエディターが開いたら、機密データを <key>: <value> 形式で入力します。

      cluster_password: <cluster_password>
      Copy to Clipboard
    3. 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
  3. 次の例のように、~/playbook.yml などの Playbook ファイルを作成します。インベントリーで SBD 変数と watchog 変数を指定しているため、Playbook にそれらを含める必要はありません。

    ---
    - name: Create a high availability cluster
      hosts: node1 node2
      vars_files:
        - ~/vault.yml
      tasks:
        - name: Configure a cluster with sbd fencing devices configured in an inventory file
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.ha_cluster
          vars:
              ha_cluster_cluster_name: my-new-cluster
              ha_cluster_hacluster_password: "{{ cluster_password }}"
              ha_cluster_manage_firewall: true
              ha_cluster_manage_selinux: true
              ha_cluster_sbd_enabled: true
              ha_cluster_sbd_options:
                - name: delay-start
                  value: 'no'
                - name: startmode
                  value: always
                - name: timeout-action
                  value: 'flush,reboot'
                - name: watchdog-timeout
                  value: 30
              # Best practice for setting SBD timeouts:
              # watchdog-timeout * 2 = msgwait-timeout (set automatically)
              # msgwait-timeout * 1.2 = stonith-timeout
              ha_cluster_cluster_properties:
                - attrs:
                    - name: stonith-timeout
                      value: 72
              ha_cluster_resource_primitives:
                - id: fence_sbd
                  agent: 'stonith:fence_sbd'
                  instance_attrs:
                    - attrs:
                        # taken from host_vars
                        # this only works if all nodes have the same sbd_devices
                        - name: devices
                          value: "{{ ha_cluster.sbd_devices | join(',') }}"
                        - name: pcmk_delay_base
                          value: 30
    Copy to Clipboard

    サンプル Playbook で指定されている設定は次のとおりです。

    ha_cluster_cluster_name: cluster_name
    作成するクラスターの名前。
    ha_cluster_hacluster_password: password
    hacluster ユーザーのパスワード。hacluster ユーザーには、クラスターへのフルアクセス権が付与されます。
    ha_cluster_manage_firewall: true
    ha_cluster RHEL システムロールがファイアウォールを管理するかどうかを決定する変数。
    ha_cluster_manage_selinux: true
    ha_cluster RHEL システムロールが selinux RHEL システムロールを使用してファイアウォール高可用性サービスのポートを管理するかどうかを決定する変数。
    ha_cluster_sbd_enabled: true
    クラスターが SBD ノードフェンシングメカニズムを使用できるかどうかを決定する変数。
    ha_cluster_sbd_options: sbd options
    SBD オプションを指定する名前と値のディクショナリーのリスト。これらのオプションの詳細は、システム上の sbd(8) man ページの Configuration via environment セクションを参照してください。
    ha_cluster_cluster_properties: cluster properties
    Pacemaker クラスター全体を対象とした設定のクラスタープロパティーセットのリスト。
    ha_cluster_resource_primitives: cluster resources
    ha_cluster RHEL システムロールによって設定される Pacemaker リソース (フェンシングリソースを含む) のリソース定義のリスト

    Playbook で使用されるすべての変数の詳細は、コントロールノードの /usr/share/ansible/roles/rhel-system-roles.ha_cluster/README.md ファイルを参照してください。

  4. Playbook の構文を検証します。

    $ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
    Copy to Clipboard

    このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。

  5. Playbook を実行します。

    $ ansible-playbook --ask-vault-pass ~/playbook.yml
    Copy to Clipboard
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat