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

6 ブートストラップスクリプトの使用

SUSE Linux Enterprise High Availabilityには、クラスタのインストールを簡素化するブートストラップスクリプトが含まれています。これらのスクリプトを使用して、最初のノードにクラスタを設定したり、クラスタにノードを追加したり、クラスタからノードを削除したり、既存のクラスタで特定の設定を調整したりすることができます。

6.1 crm cluster initスクリプトの概要

crm cluster initコマンドは、クラスタ通信に必要な基本パラメータを定義するブートストラップスクリプトを実行し、その結果、動作する1ノードクラスタが作成されます。このスクリプトが確認および設定するコンポーネントは、次のとおりです。

NTP/Chrony

NTP/Chronyがブート時に開始するように設定されているかどうかをチェックします。設定されていない場合は、メッセージが表示されます。

SSH

クラスタノード間でパスワード不要のログインを行うためのSSHキーを検出または生成します。

Csync2

クラスタ内のすべてのノードで設定ファイルを複製するようにCsync2を設定します。

Corosync

クラスタ通信システムを設定します。

SBD/ウォッチドッグ

ウォッチドッグが存在するかどうかをチェックし、SBDをノードフェンシングメカニズムとして設定するかどうか確認メッセージを表示します。

仮想浮動IP

Hawk2でのクラスタ管理用の仮想IPアドレスを設定するかどうか確認メッセージを表示します。

ファイアウォール

クラスタ通信に必要なポートをファイアウォールで開きます。

クラスタ名

クラスタの名前を定義します。デフォルトではhaclusterです。これは基本クラスタではオプションですが、DLMを使用する場合は必須です。一意のクラスタ名はGeoクラスタにも便利です。通常、クラスタ名は地理的な場所を反映し、Geoクラスタ内のサイトを識別しやすくします。

QDevice/QNetd

QDevice/QNetdを設定してクォーラムの決定に参加するかどうか確認メッセージを表示します。ノード数が偶数であるクラスタ、特に2ノードクラスタについては、QDeviceおよびQNetdの使用をお勧めします。

注記
注記: Pacemakerのデフォルト設定

ブートストラップスクリプトによって設定されるオプションは、Pacemakerのデフォルト設定と同じではない場合があります。ブートストラップスクリプトが変更した設定は/var/log/crmsh/crmsh.logで確認できます。ブートストラッププロセス中に設定されたオプションは、YaSTまたはcrmshで後で変更できます。

注記
注記: さまざまなプラットフォームに対するクラスタ設定

crm cluster initスクリプトは、システム環境(Microsoft Azureなど)を検出し、その環境のプロファイルに基づいて特定のクラスタ設定を調整します。詳細については、ファイル/etc/crm/profiles.ymlを参照してください。

6.2 crm cluster initを使用して最初のノードを設定する

crm cluster initスクリプトを使用して最初のノードを設定すると、最小限の時間と手動介入しか必要ありません。

この手順では、複数の設定オプションについて説明します。スクリプトを開始する前に、手順全体を確認することをお勧めします。または、デフォルトのオプションのみを使用した最小限のセットアップについては、 インストールとセットアップクイックスタートを参照してください。

要件
  • ブートストラップスクリプトを使用してSBD (STONITHブロックデバイス)を設定するには、クラスタを初期化する前に各ノードにウォッチドッグを設定する必要があります。17.6項 「ウォッチドッグのセットアップ」を参照してください。

  • ブートストラップスクリプトを使用してQDeviceを設定するには、クラスタを初期化する前にQNetdサーバを設定する必要があります。18.3項 「QNetdサーバのセットアップ」を参照してください。

手順 6.1: crm cluster initを使用して最初のノードを設定する
  1. 最初のクラスタノードにrootとして、またはsudo特権を持つユーザとしてログインします。

  2. ブートストラップスクリプトを起動します。

    スクリプトは、オプションを指定しなくても起動できます。この場合、特定の設定については入力を求められ、他の設定についてはcrmshのデフォルト値が使用されます。

    • rootとしてログインした場合は、追加のパラメータなしで次のコマンドを実行できます。

      # crm cluster init
    • SSHエージェント転送を使用せずにsudoユーザとしてログインした場合は、sudoを使用して次のコマンドを実行します。

      > sudo crm cluster init
    • SSHエージェント転送が有効になっている状態でsudoユーザとしてログインした場合は、環境変数SSH_AUTH_SOCKを保持し、ノードでキーを生成するのではなくローカルSSHキーを使用するようにスクリプトに指示する必要があります。

      > sudo --preserve-env=SSH_AUTH_SOCK crm cluster init --use-ssh-agent

    または、追加のオプションを初期化コマンドの一部として指定することもできます。同じコマンドに複数のオプションを含めることができます。いくつかの例を以下に示します。その他のオプションについては、crm cluster init --helpを実行してください。

    クラスタ名

    デフォルトのクラスタ名はhaclusterです。別の名前を選択するには、オプション--name (または-n)を使用します。次に例を示します。

    # crm cluster init --name CLUSTERNAME

    クラスタの地理的な場所など、わかりやすい名前を選択します。これによってサイトを識別しやすくなるため、後でGeoクラスタを作成する場合に特に役立ちます。

    マルチキャスト

    ユニキャストは、クラスタ通信のデフォルトのトランスポートタイプです。代わりにマルチキャストを使用するには、オプション--multicast (または-U)を使用します。次に例を示します。

    # crm cluster init --multicast
    SBDディスク

    後の手順で、スクリプトにより、SBDを設定するかどうかを尋ねられ、使用するディスクを指定するように求められます。複数のSBDディスクを使用してクラスタを設定するには、オプション--sbd-device (または-s) を複数回使用します。次に例を示します。

    # crm cluster init -s /dev/disk/by-id/ID1 -s /dev/disk/by-id/ID2

    このオプションは、タブ補完を使用してデバイスIDを入力できるという点でも便利です。タブ補完は、スクリプトによってパスの入力を求められたときには使用できません。

    冗長通信チャンネル

    サポートされるクラスタには、通信チャンネルが2つ必要です。推奨される方法は、ネットワークデバイスボンディングを使用することです。ボンディングを使用できない場合は、Corosyncで冗長通信チャンネル(第2リングまたはハートビート回線とも呼ばれます)を設定できます。デフォルトでは、1つのリングのネットワークアドレスの入力を求められます。クラスタを2つのリングで設定するには、オプション--interface (または-i)を2回使用します。次に例を示します。

    # crm cluster init -i eth0 -i eth1

    スクリプトを開始すると、次の情報の入力を求められます。initコマンドに追加のオプションを含めた場合、以下の手順の一部は多少異なる場合があります。

  3. クラスタ通信層(Corosync)を設定します。

    1. バインドするネットワークアドレスを入力します。デフォルトでは、スクリプトはeth0のネットワークアドレスを提案します。または、たとえばbond0のアドレスなど、別のネットワークアドレスを入力します。

    2. 提案されたポート(5405)を受け入れるか、別のポートを入力します。

    3. 冗長通信チャンネルを設定するオプションを指定してスクリプトを開始した場合は、「y」と入力して2番目のハートビートラインを受け入れてから、提案されたネットワークアドレスとポートを受け入れるか、別のアドレスとポートを入力します。

  4. SBDをノードフェンシングメカニズムとして設定するかどうかを選択します。別のフェンシングメカニズムを使用している場合、または後でSBDを設定する場合は、「n」と入力して、この手順をスキップします。

    yを選択した場合は、使用するSBDのタイプを選択します。

    • ディスクレスSBDを使用するには、「none」と入力します。

    • ディスクベースのSBDを使用するには、使用するブロックデバイスのパーティションの永続的なパスを入力します。パスはクラスタ内のすべてのノード全体で一致している必要があります。例: /dev/disk/by-id/ID

  5. Hawk2でのクラスタ管理用の仮想IPアドレスを設定するかどうかを選択します。Hawk2で個々のクラスタノードにログインする代わりに、その仮想IPアドレスに接続できるようになります。

    yを選択した場合、Hawk2に使用する未使用のIPアドレスを入力します。

  6. QDeviceおよびQNetdを設定するかどうかを選択します。QDeviceを使用する必要がない場合、またはQNetdサーバをまだ設定していない場合は、「n」と入力して、この手順をスキップします。QDeviceおよびQNetdは後で必要に応じて設定できます。

    yを選択した場合、次の情報を入力します。

    1. QNetdサーバのホスト名またはIPアドレスを入力します。設定を完了するには、クラスタノードがこのサーバにSSHでアクセスできる必要があります。

      残りのフィールドについては、デフォルト値を受け入れるか、必要に応じて変更できます。

    2. 提案されたポート(5403)を受け入れるか、別のポートを入力します。

    3. 投票の割り当て方法を決定するアルゴリズムを選択します。

    4. タイブレーカが必要な場合に使用する方法を選択します。

    5. TLSを有効にするかどうかを選択します。

    6. 投票の決定方法に影響を与えるヒューリスティックスコマンドを入力します。この手順をスキップするには、フィールドを空白のままにします。

このスクリプトは、NTP/Chrony設定とハードウェアウォッチドッグサービスを確認します。必要な場合、パスワード不要のSSHアクセスとCsync2の同期に使用される公開SSHキーおよび秘密SSHキーが生成され、それぞれのサービスが起動されます。最後に、スクリプトはクラスタサービスを開始し、クラスタをオンラインにして、Hawk2を有効にします。Hawk2に使用するURLが画面に表示されます。

Hawk2にログインするには、9.4.2項 「ログイン」を参照してください。

重要
重要: haclusterのセキュリティ保護されたパスワード

crm cluster initスクリプトはデフォルトのユーザ(hacluster)とパスワード(linux)を作成します。デフォルトのパスワードはできるだけ早くセキュリティ保護されたパスワードに変更します。

# passwd hacluster

6.3 crm cluster joinによるノードの追加

crm cluster joinブートストラップスクリプトを使用して、クラスタにノードを追加できます。スクリプトは既存のクラスタノードへのアクセスのみが必要で、ご使用のマシンで自動的に基本セットアップを完了します。

詳細については、crm cluster join --helpコマンドを実行してください。

要件
  • クラスタがSBD (STONITHブロックデバイス)を使用する場合は、crm cluster joinスクリプトを実行する前にこのノードにウォッチドッグを設定する必要があります。17.6項 「ウォッチドッグのセットアップ」を参照してください。

手順 6.2: crm cluster joinによるノードの追加
  1. 最初のノードの設定に使用したユーザと同じユーザとして、このノードにログインします。

  2. ブートストラップスクリプトを起動します。

    スクリプトの開始方法は、最初のノードの設定方法によって異なります。次のオプションを確認し、最初のノードの設定に一致するコマンドを使用します。必要に応じて、同じコマンドに複数のオプションを含めることができます。

    • 最初のノードをrootとして、1つのネットワークインタフェース(またはボンドデバイス)のだけで設定した場合、追加のパラメータなしで次のコマンドを実行できます。

      # crm cluster join
    • 最初のノードを2つのネットワークインタフェースで設定した場合は、オプション--interface (または-i)を2回使用して、このノードに同じインタフェースを指定する必要があります。

      # crm cluster join -i eth0 -i eth1
    • 必要に応じて、--cluster-node (または-c)を使用して最初のノードを指定できます。

      # crm cluster join -c [USER]@NODE1

      最初のノードをrootとして設定した場合は、ユーザを指定する必要はありません。

    • 最初のノードをsudoユーザとして設定した場合は、-cオプションでそのユーザとノードを指定する必要があります

      > sudo crm cluster join -c USER@NODE1
    • 最初のノードをSSHエージェント転送を使用してsudoユーザとして設定した場合は、ノードでキーを生成するのではなくローカルSSHキーを使用するようにスクリプトに指示する必要があります。

      > sudo --preserve-env=SSH_AUTH_SOCK \
      crm cluster join --use-ssh-agent -c USER@NODE1

    NTP/Chronyがブート時に開始するよう設定されていない場合、メッセージが表示されます。スクリプトは、ハードウェアウォッチドッグデバイスもチェックします。デバイスがないときは警告が表示されます。

  3. まだ-cオプションを使用して最初のクラスタノードを指定していない場合は、そのIPアドレスの入力を求められます。

  4. クラスタノード間にパスワード不要のSSHアクセスをまだ設定していない場合、最初のノードのパスワードの入力を求められます。

    指定したノードへのログイン後、スクリプトは、Corosync設定をコピーし、SSHおよびCsync2を設定し、現在のマシンを新しいクラスタノードとしてオンラインにし、Hawk2に必要なサービスを起動します。

各ノードでこの手順を繰り返します。クラスタの状態は、crm statusコマンドを使用するか、Hawk2にログインして状態 › ノードに移動することでいつでも確認できます。

6.4 crm cluster removeによるノードの削除

crm cluster removeブートストラップスクリプトを使用して、クラスタからノードを削除できます。

追加のパラメータを指定せずにcrm cluster removeを実行すると、削除するノードのIPアドレスまたはホスト名の入力を求められます。または、コマンドの実行時にノードを指定することもできます。

# crm cluster remove NODE

指定したノードでは、すべてのクラスタサービスが停止され、ローカルクラスタ設定ファイルが削除されます。残りのクラスタノードでは、指定したノードがクラスタ設定から削除されます。

ほとんどの場合、crm cluster removeは、削除対象のノードではなく、別のノードから実行する必要があります。ただし、最後のノードを削除してクラスタを削除する場合は、オプション--force (または-F)を使用できます。

# crm cluster remove --force LASTNODE

詳細については、crm cluster remove --helpを実行してください。

Documentation survey