11.12. ha_cluster_node_options 変数を使用して 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 のオプションが優先されます。
この手順の例では、Playbook ファイル内の ha_cluster_node_options 変数を使用して、ノードごとにノードアドレスと SBD オプションを設定します。インベントリーファイルで ha_cluster 変数を使用する手順の例については、ha_cluster 変数を使用して SBD ノードフェンシングを使用する高可用性クラスターを設定する を参照してください。
ha_cluster RHEL システムロールは、指定されたノードの既存のクラスター設定を置き換えます。Playbook に指定されていない設定はすべて失われます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - クラスターメンバーとして使用するシステムには、RHEL および RHEL High Availability Add-On のアクティブなサブスクリプションがある。
- ha_cluster RHEL システムロールのインベントリーの指定 で説明されているように、インベントリーファイルでクラスターノードが指定されている。インベントリーファイルの作成に関する一般的な情報については、RHEL 9 でのコントロールノードの準備 を参照してください。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。cluster_password: <cluster_password>- 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。--- - name: Create a high availability cluster hosts: node1 node2 vars_files: - ~/vault.yml tasks: - name: Configure a cluster with SBD fencing ansible.builtin.include_role: name: redhat.rhel_system_roles.ha_cluster vars: my_sbd_devices: # This variable is indirectly used by various variables of the ha_cluster RHEL system role. # Its purpose is to define SBD devices once so they do not need # to be repeated several times in the role variables. - /dev/disk/by-id/000001 - /dev/disk/by-id/000002 - /dev/disk/by-id/000003 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 ha_cluster_node_options: - node_name: node1 sbd_watchdog_modules: - iTCO_wdt sbd_watchdog_modules_blocklist: - ipmi_watchdog sbd_watchdog: /dev/watchdog1 sbd_devices: "{{ my_sbd_devices }}" - node_name: node2 sbd_watchdog_modules: - iTCO_wdt sbd_watchdog_modules_blocklist: - ipmi_watchdog sbd_watchdog: /dev/watchdog1 sbd_devices: "{{ my_sbd_devices }}" # 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: - name: devices value: "{{ my_sbd_devices | join(',') }}" - name: pcmk_delay_base value: 30サンプル Playbook で指定されている設定は次のとおりです。
ha_cluster_cluster_name: <cluster_name>- 作成するクラスターの名前。
ha_cluster_hacluster_password: <password>-
haclusterユーザーのパスワード。haclusterユーザーには、クラスターへのフルアクセス権が付与されます。 ha_cluster_manage_firewall: true-
ha_clusterRHEL システムロールがファイアウォールを管理するかどうかを決定する変数。 ha_cluster_manage_selinux: true-
ha_clusterRHEL システムロールがselinuxRHEL システムロールを使用してファイアウォール高可用性サービスのポートを管理するかどうかを決定する変数。 ha_cluster_sbd_enabled: true- クラスターが SBD ノードフェンシングメカニズムを使用できるかどうかを決定する変数。
ha_cluster_sbd_options: <sbd options>-
SBD オプションを指定する名前と値のディクショナリーのリスト。これらのオプションの詳細は、システム上の
sbd(8) man ページのConfiguration via environmentセクションを参照してください。 ha_cluster_node_options: <node options>クラスターノードごとに異なる設定を定義する変数。次の SBD およびウォッチドッグ項目を設定できます。
-
sbd_watchdog_modules-/dev/watchdog*デバイスを作成するためにロードするモジュール。 -
sbd_watchdog_modules_blocklist- アンロードおよびブロックするウォッチドッグカーネルモジュール。 -
sbd_watchdog- SBD が使用するウォッチドッグデバイス。 -
sbd_devices- SBD メッセージの交換と監視に使用するデバイス。一定の長いデバイス名 (/dev/disk/by-id/) を常に使用してデバイスを参照します。
-
ha_cluster_cluster_properties: <cluster properties>- Pacemaker クラスター全体を対象とした設定のクラスタープロパティーセットのリスト。
ha_cluster_resource_primitives: <cluster resources>-
ha_clusterRHEL システムロールによって設定される Pacemaker リソース (フェンシングリソースを含む) のリソース定義のリスト
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.ha_cluster/README.mdファイルを参照してください。Playbook の構文を検証します。
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.ymlこのコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
$ ansible-playbook --ask-vault-pass ~/playbook.yml