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のデフォルト設定と同じではない場合があります。ブートストラップスクリプトが変更した設定は/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サーバのセットアップ」を参照してください。
crm cluster init
を使用して最初のノードを設定する #最初のクラスタノードに
root
として、またはsudo
特権を持つユーザとしてログインします。ブートストラップスクリプトを起動します。
スクリプトは、オプションを指定しなくても起動できます。この場合、特定の設定については入力を求められ、他の設定については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
コマンドに追加のオプションを含めた場合、以下の手順の一部は多少異なる場合があります。クラスタ通信層(Corosync)を設定します。
バインドするネットワークアドレスを入力します。デフォルトでは、スクリプトは
eth0
のネットワークアドレスを提案します。または、たとえばbond0
のアドレスなど、別のネットワークアドレスを入力します。提案されたポート(
5405
)を受け入れるか、別のポートを入力します。冗長通信チャンネルを設定するオプションを指定してスクリプトを開始した場合は、「
y
」と入力して2番目のハートビートラインを受け入れてから、提案されたネットワークアドレスとポートを受け入れるか、別のアドレスとポートを入力します。
SBDをノードフェンシングメカニズムとして設定するかどうかを選択します。別のフェンシングメカニズムを使用している場合、または後でSBDを設定する場合は、「
n
」と入力して、この手順をスキップします。y
を選択した場合は、使用するSBDのタイプを選択します。ディスクレスSBDを使用するには、「
none
」と入力します。ディスクベースのSBDを使用するには、使用するブロックデバイスのパーティションの永続的なパスを入力します。パスはクラスタ内のすべてのノード全体で一致している必要があります。例:
/dev/disk/by-id/ID
。
Hawk2でのクラスタ管理用の仮想IPアドレスを設定するかどうかを選択します。Hawk2で個々のクラスタノードにログインする代わりに、その仮想IPアドレスに接続できるようになります。
y
を選択した場合、Hawk2に使用する未使用のIPアドレスを入力します。QDeviceおよびQNetdを設定するかどうかを選択します。QDeviceを使用する必要がない場合、またはQNetdサーバをまだ設定していない場合は、「
n
」と入力して、この手順をスキップします。QDeviceおよびQNetdは後で必要に応じて設定できます。y
を選択した場合、次の情報を入力します。QNetdサーバのホスト名またはIPアドレスを入力します。設定を完了するには、クラスタノードがこのサーバにSSHでアクセスできる必要があります。
残りのフィールドについては、デフォルト値を受け入れるか、必要に応じて変更できます。
提案されたポート(
5403
)を受け入れるか、別のポートを入力します。投票の割り当て方法を決定するアルゴリズムを選択します。
タイブレーカが必要な場合に使用する方法を選択します。
TLSを有効にするかどうかを選択します。
投票の決定方法に影響を与えるヒューリスティックスコマンドを入力します。この手順をスキップするには、フィールドを空白のままにします。
このスクリプトは、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項 「ウォッチドッグのセットアップ」を参照してください。
crm cluster join
によるノードの追加 #最初のノードの設定に使用したユーザと同じユーザとして、このノードにログインします。
ブートストラップスクリプトを起動します。
スクリプトの開始方法は、最初のノードの設定方法によって異なります。次のオプションを確認し、最初のノードの設定に一致するコマンドを使用します。必要に応じて、同じコマンドに複数のオプションを含めることができます。
最初のノードを
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がブート時に開始するよう設定されていない場合、メッセージが表示されます。スクリプトは、ハードウェアウォッチドッグデバイスもチェックします。デバイスがないときは警告が表示されます。
まだ
-c
オプションを使用して最初のクラスタノードを指定していない場合は、そのIPアドレスの入力を求められます。クラスタノード間にパスワード不要の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
を実行してください。