このマニュアルに記載されている手順に従うと、次のプロパティを持つ2ノードクラスタの最小セットアップになります。
ネットワーク経由で相互に接続された2つのノード: alice
(IP: 192.168.1.1
)およびbob
(IP: 192.168.1.2
)。
実行している物理ノードがどれであれ、クライアントからの該当サービスへの接続を可能にする浮動仮想IPアドレス(192.168.2.1
)。
SBDフェンシングメカニズムとして使用される共有ストレージデバイス。これにより、スプリットブレインシナリオを回避します。
アクティブなホストが停止した場合における、一方のノードから他方のノードへのリソースのフェールオーバー(「アクティブ/パッシブ」セットアップ)。
ブートストラップスクリプトを使用してクラスタをセットアップした後、グラフィカルなHA Web Konsole (Hawk)を使用してクラスタを監視します。Hawkは、SUSE® Linux Enterprise High Availability Extensionに付属するクラスタ管理ツールの1つです。リソースのフェールオーバーが機能するかどうかの基本的なテストとして、一方のノードをスタンバイモードにし、仮想IPアドレスが2つ目のノードに移行されるかどうかを確認します。
この2ノードクラスタは、テスト目的で使用することも、後で拡張可能な最小クラスタ設定として使用することもできます。運用環境でクラスタを使用する前に、ご自分の要件に従ってクラスタを変更してください。
この項では、1項 「使用シナリオ」で説明されているシナリオの重要なシステム要件について説明します。運用環境で使用するためにクラスタを調整する場合は、第2章 「システム要件と推奨事項」の「System Requirements and Recommendations」に記載されているリスト全体をお読みください。
ソフトウェアの必要条件で指定されているソフトウェアがインストールされた2台のサーバ。
サーバはベアメタルでも仮想マシンでも構いません。各サーバが同一のハードウェア設定(メモリ、ディスクスペースなど)になっている必要はありませんが、アーキテクチャは同じである必要があります。クロスプラットフォームのクラスタはサポートされていません。
クラスタノードあたり、少なくとも2つのTCP/IP通信メディア。ネットワーク機器は、クラスタ通信に使用する通信手段(マルチキャストまたはユニキャスト)をサポートする必要があります。通信メディアは100Mbit/s以上のデータレートをサポートする必要があります。サポートされるクラスタセットアップでは、2つ以上の冗長通信パスが必要です。これは次のように実行できます。
ネットワークデバイスボンディング(推奨)。
Corosync内の2つ目の通信チャネル。
インフラストラクチャ層のネットワークの耐障害性(ハイパーバイザーなど)。
「スプリットブレイン」シナリオを回避するため、クラスタにはノードフェンシングメカニズムが必要です。スプリットブレインシナリオでは、クラスタノードは、お互いを認識していない2つ以上のグループに分割されます(ハードウェアまたはソフトウェアの障害か、ネットワーク接続の切断による)。フェンシングメカニズムにより、問題のあるノードを分離します(通常はノードをリセットするか、ノードの電源をオフにすることによって分離します)。これをSTONITH (「Shoot the other node in the head」)と呼びます。ノードフェンシングメカニズムは、物理デバイス(電源スイッチ)でも、SBD (ディスクによるSTONITH)のようなメカニズムとウォッチドッグを組み合わせたものでも構いません。SBDを使用するには共有ストレージが必要です。
クラスタに参加するすべてのノードに次のソフトウェアがインストールされている必要があります。
SUSE® Linux Enterprise Server 12 SP5 (利用可能なすべてのオンラインアップデートが適用されていること)
SUSE Linux Enterprise High Availability Extension 12 SP5 (利用可能なすべてのオンラインアップデートが適用されていること)
クラスタノードはクラスタ外のNTPサーバに同期する必要があります。詳細については、https://documentation.suse.com/sles-12/html/SLES-all/cha-netz-xntp.htmlを参照してください。
ノードが同期されていない場合、クラスタが正常に動作しないことがあります。また、同期が行われていないと、ログファイルとクラスタレポートの分析が非常に困難になります。ブートストラップスクリプトを使用する場合、NTPがまだ設定されていないと、警告が表示されます。
静的IPアドレスを使用します。
/etc/hosts
ファイルにあるすべてのクラスタノードを、完全修飾ホスト名およびショートホスト名で一覧表示します。クラスタのメンバーが名前で互いを見つけられることが重要です。名前を使用できない場合、内部クラスタ通信は失敗します。
すべてのクラスタノードはSSHによって互いにアクセスできる必要があります。crm report
(トラブルシューティング用)などのツールおよびHawk2の は、ノード間でパスワード不要のSSHアクセスを必要とします。それがない場合、現在のノードからしかデータを収集できません。
クラスタのセットアップにブートストラップスクリプトを使用した場合、SSHキーは自動的に作成されてコピーされます。
パッケージ ha-cluster-bootstrap のすべてのコマンドは、最低限の時間と手動介入しか必要のないブートストラップスクリプトを実行します。
ha-cluster-init
を使用して、クラスタ通信に必要な基本パラメータを定義します。これによって1ノードクラスタの実行が可能になります。
ha-cluster-join
で、他のノードをクラスタに追加します。
ha-cluster-remove
で、クラスタからノードを削除します。
すべてのブートストラップスクリプトは/var/log/ha-cluster-bootstrap.log
にログを記録します。ブートストラッププロセスの詳細については、このファイルを確認してください。ブートストラッププロセス中に設定されたオプションは、YaSTクラスタモジュールで後で変更できます。詳細については、3.1項 「手動インストール」を参照してください。
各スクリプトには、さまざまな機能、スクリプトのオプション、およびスクリプトで作成、変更できるファイルの概要を説明したマニュアルページが付属します。
ブートストラップスクリプトha-cluster-init
が確認および設定するコンポーネントは、次のとおりです。
NTPがブート時に開始するよう設定されていない場合、メッセージが表示されます。
クラスタノード間でパスワード不要のログインを行うためのSSHキーを作成します。
クラスタ内のすべてのノードで設定ファイルを複製するようにCsync2を設定します。
クラスタ通信システムを設定します。
ウォッチドッグが存在するかどうかをチェックし、SBDをノードフェンシングメカニズムとして設定するかどうか確認メッセージを表示します。
Hawk2でのクラスタ管理用の仮想IPアドレスを設定するかどうか確認メッセージを表示します。
クラスタ通信に必要なポートをファイアウォールで開きます。
クラスタの名前を定義します。デフォルトではclusterNUMBER
です。これはオプションで、主にGeoクラスタで役立ちます。通常、クラスタ名は場所を反映し、Geoクラスタ内のサイトを識別しやすくします。
High Availability Extensionによるクラスタの設定と管理のためのパッケージは、High Availability
インストールパターンに含まれています。このパターンは、SUSE Linux Enterprise High Availability ExtensionがSUSE® Linux Enterprise Serverの拡張としてインストールされている場合にのみ使用できます。
拡張のインストール方法については、『SUSE Linux Enterprise 12 SP5導入ガイド』 (https://documentation.suse.com/sles-12/html/SLES-all/cha-add-ons.html)を参照してください。
パターンがまだインストールされていない場合は、コマンドzypper install -t pattern ha_sles
を使用してインストールします。または、YaSTを使用してパターンをインストールします。次の手順に従います。
YaSTを起動して、
› の順に選択します。タブをクリックし、パターンリストで パターンをアクティブ化します。
をクリックして、パッケージのインストールを開始します。
クラスタの一部になるすべてのマシンにHigh Availabilityパターンをインストールします。
SUSE Linux Enterprise Server 12 SP5およびSUSE Linux Enterprise High Availability Extension 12 SP5を自動インストールする場合は、AutoYaSTを使用して既存のノードをクローンします。詳細については、3.2項 「AutoYaSTによる大量インストールと展開」を参照してください。
SUSEカスタマーセンターにマシンを登録します。詳細については、https://documentation.suse.com/sles-12/html/SLES-all/cha-update-offline.html#sec-update-registersystemを参照してください。
SAN (ストレージエリアネットワーク)などの共有ストレージを使用している場合、SBDをノードフェンシングメカニズムとして設定することにより、その共有ストレージを使用してスプリットブレインシナリオを回避できます。SBDは、ウォッチドッグサポートとexternal/sbd
STONITHリソースエージェントを使用します。
ha-cluster-init
で最初のノードをセットアップする際に、SBDを使用するかどうかを決定できます。使用する場合、共有ストレージデバイスのパスを入力する必要があります。デフォルトで、ha-cluster-init
は、SBDに使用するデバイス上に自動的に小容量のパーティションを作成します。
SBDを使用するには、次の要件を満たしている必要があります。
共有ストレージデバイスのパスが永続的で、クラスタ内のすべてのノードで一致している必要があります。/dev/disk/by-id/dm-uuid-part1-mpath-abcedf12345
などの固定デバイス名を使用してください。
SBDデバイスでホストベースのRAIDやcLVM2を使用したり、SBDデバイスをDRBD*インスタンス上に存在させることは「できません」。
共有ストレージの設定方法の詳細については、SUSE Linux Enterprise Server 12 SP5の『Storage Administration Guide』 (https://documentation.suse.com/sles-12/html/SLES-all/stor-admin.html)を参照してください。
SUSE Linux Enterprise Serverでは、カーネル内のウォッチドッグサポートはデフォルトで有効化されています。これは、ハードウェア固有のウォッチドッグドライバを提供する、さまざまなカーネルモジュールを標準装備しています。High Availability Extensionはウォッチドッグに「フィード」するソフトウェアコンポーネントとしてSBDデーモンを使用します。
次の手順では、softdog
ウォッチドッグを使用します。
softdogドライバはCPUが最低1つは動作中であることを前提とします。すべてのCPUが固まっている場合、システムを再起動させるsoftdogドライバのコードは実行されません。それとは対照的に、ハードウェアウォッチドッグは、すべてのCPUがスタックしても動作し続けます。
運用環境でクラスタを使用する前に、softdog
モジュールを、ご使用のハードウェアに最適な各ハードウェアモジュールに置き換えることを強くお勧めします。
ただし、ウォッチドッグがご使用のハードウェアに一致しない場合は、softdog
はカーネルウォッチドッグモジュールとして使用できます。
5.1項 「SBDの要件」の説明に従って、永続的な共有ストレージを作成します。
softdogウォッチドッグを有効にします。
root #
echo
softdog > /etc/modules-load.d/watchdog.confroot #
systemctl
restart systemd-modules-load
softdogモジュールが正しくロードされているかどうかをテストします。
root #
lsmod
| egrep "(wd|dog)" softdog 16384 1
bob
で、SBDパーティションを初期化します。
root #
sbd
-d /dev/SBDDEVICE create
SBDを起動してSBDデバイスをリッスンします。
root #
sbd
-d /dev/SBDDEVICE watch
alice
で、テストメッセージを送信します。
root #
sbd
-d /dev/SBDDEVICE message bob test
bob
で、systemctl
を使用して状態を確認します。受信メッセージが表示されます。
root #
systemctl
status sbd [...] info: Received command test from alice on disk SBDDEVICE
次のコマンドを入力して、bob
上でのSBDデバイスの監視を停止します。
root #
systemctl
stop sbd
スプリットブレイン状況の発生に備えて、SBDフェンシングメカニズムが適切に機能するかどうかテストすることを強くお勧めします。このテストを実行するには、Corosyncクラスタ通信をブロックします。
ha-cluster-init
スクリプトを使用して最初のノードを設定します。ここでは最小限の時間と手動介入しか必要ありません。
ha-cluster-init
を使用した最初のノードの設定(alice
) #
クラスタノードとして使用したい物理または仮想マシンにroot
としてログインします。
実行によって、ブートストラップスクリプトを開始します。
root #
ha-cluster-init
--name CLUSTERNAME
CLUSTERNAMEプレースホルダを、クラスタの地理的な場所のような、意味のある名前で置き換えます(たとえば、amsterdam
)。これによってサイトを識別しやすくなるため、後でGeoクラスタを作成する場合に特に役立ちます。--name
オプションを使用しないでコマンドを実行する場合、デフォルト名はhacluster
です。
クラスタ通信にマルチキャスト(デフォルト)の代わりにユニキャストが必要な場合は、オプション-u
を使用します。インストール後、ファイル/etc/corosync/corosync.conf
で値udpu
を見つけます。ha-cluster-init
がAmazon Web Services (AWS)で実行しているノードを検出する場合、スクリプトはクラスタ通信のデフォルトとして自動的にユニキャストを使用します。
このスクリプトは、NTP設定とハードウェアウォッチドッグサービスを確認します。また、SSHアクセスとCsync2の同期に使用される公開および秘密SSHキーが生成され、それぞれのサービスが起動されます。
クラスタ通信層(Corosync)を設定します。
バインドするネットワークアドレスを入力します。デフォルトでは、スクリプトはeth0
のネットワークアドレスを提案します。または、たとえばbond0
のアドレスなど、別のネットワークアドレスを入力します。
マルチキャストアドレスを入力します。スクリプトはデフォルトとして使用できるランダムなアドレスを提案します。もちろん、ご使用の特定のネットワークがマルチキャストアドレスをサポートしている必要があります。
マルチキャストポートを入力します。スクリプトはデフォルトとして5405
を提案します。
最後に、スクリプトはPacemakerサービスを開始し、1ノードクラスタをオンラインにして、Hawk2を有効にします。Hawk2に使用するURLが画面に表示されます。
SBDをノードフェンシングメカニズムとして設定します。
<y
>キーを押して、SBDを使用することを確認します。
SBDに使用するブロックデバイスのパーティションの永続的なパスを入力します。5項 「フェンシングメカニズムとしてのSBDの使用」を参照してください。パスはクラスタ内のすべてのノード全体で一致している必要があります。
Hawk2でクラスタを管理するための仮想IPアドレスを設定します(この仮想IPリソースは、後でフェールオーバーが正常に実行されるかどうかをテストするために使用します)。
<y
>キーを押して、仮想IPアドレスを設定することを確認します。
Hawk2の管理IPとして使用する、未使用のIPアドレス(192.168.2.1
)を入力します。
Hawk2で個々のクラスタノードにログインする代わりに、その仮想IPアドレスに接続できるようになります。
1ノードクラスタが実行するようになります。状態を表示するには、次の手順に従います。
任意のコンピュータで、Webブラウザを起動し、JavaScriptとクッキーが有効なことを確認します。
URLとして、Hawk Webサービスを実行するクラスタノードのIPアドレスまたはホスト名を入力します。または、手順2「ha-cluster-init
を使用した最初のノードの設定(alice
)」のステップ 6で設定した仮想IPアドレスのアドレスを入力します。
https://HAWKSERVER:7630/
初めてURLにアクセスしようとするときに証明書の警告が表示される場合は、自己署名証明書が使用されています。自己署名証明書は、デフォルトでは信頼されません。
証明書を検証するための詳細情報については、クラスタのオペレータに問い合わせてください。
続行するには、ブラウザに例外を追加して警告をバイパスします。
Hawk2のログイン画面で、ブートストラップ手順で作成されたユーザのhacluster
、パスワードlinux
)。
デフォルトのパスワードはできるだけ早くセキュリティ保護されたパスワードに変更します。
root #
passwd
hacluster
をクリックします。ログイン後、Hawk2 Webインタフェースに[ステータス]画面がデフォルトで表示され、クラスタの現在の状態の概要が表示されます。
1ノードクラスタが正常に稼働している場合、手順 4に従って、ha-cluster-join
ブートストラップスクリプトを使用して2つ目のクラスタノードを追加します。スクリプトは既存のクラスタノードへのアクセスのみが必要で、ご使用のマシンで自動的に基本セットアップを完了します。詳細については、ha-cluster-join
マニュアルページを参照してください。
ブートストラップスクリプトは、SBDやCorosyncなど、2ノードクラスタに固有な設定を変更します。
ha-cluster-join
を使用した2つ目のノード(bob
)の追加 #
クラスタを参加させることになる物理または仮想マシンにroot
としてログインします。
実行によって、ブートストラップスクリプトを開始します。
root #
ha-cluster-join
NTPがブート時に開始するよう設定されていない場合、メッセージが表示されます。スクリプトはハードウェアウォッチドッグデバイス(SBDを設定する場合に重要)も確認し、何もない場合は警告します。
それでも継続を選択する場合、既存のノードのIPアドレスが求められます。最初のノードのIPアドレス(alice
、192.168.1.1
)を入力します。
両方のマシン間にパスワードなしのSSHアクセスを設定していない場合、既存のノードのroot
パスワードも求められます。
指定されたノードにログインした後、スクリプトはCorosync設定をコピーし、SSHおよびCsync2を設定して、新しいクラスタノードとしてご使用のマシンをオンラインにします。それとは別に、Hawk2に必要なサービスを開始します。
Hawk2でクラスタの状態を確認します。図2「2ノードクラスタの状態」を参照してください)。
› に、2つのノードが緑色の状態で表示されます(
手順5「リソースフェールオーバーのテスト」は、現在リソースを実行しているノードをstandby
に設定した場合に、クラスタによって仮想IPアドレスが他方のノードに移動されるかどうかを確認する簡単なテストです。
ただし、現実的なテストでは、スプリットブレイン状況を回避するフェンシングメカニズムのテストなど、特定のユースケースとシナリオが含まれます。フェンシングメカニズムを正しく設定していない場合、クラスタは正常に動作しません。
運用環境でクラスタを使用する前に、ご自分のユースケースに従ってクラスタを十分にテストしてください。
ターミナルを開き、使用している仮想IPアドレス192.168.2.1
に対してpingを実行します。
root #
ping
192.168.2.1
手順3「Hawk2 Webインタフェースへのログイン」の説明に従って、クラスタにログインします。
Hawk2のadmin_addr
)がどのノードで実行されているかを確認します。ここでは、リソースがalice
で実行されていることを想定しています。
alice
を モードにします(図3「スタンバイモードのノードalice
」を参照してください)。
alice
#
admin_addr
がbob
に移行されています。
マイグレーション中は、仮想IPアドレスに対して連続してpingが実行されます。これは、クラスタセットアップと浮動IPが正常に機能していることを示します。Ctrl–Cを押してping
コマンドをキャンセルします。
本製品のその他のマニュアルについては、https://documentation.suse.com/sle-ha-12を参照してください。ここに掲載されているマニュアルの中には、SUSE Linux Enterprise High Availability Extensionの包括的な管理ガイドもあります。設定および管理タスクの詳細については、このマニュアルを参照してください。
Copyright © 2006– 2024 SUSE LLC and contributors. All rights reserved.
この文書は、GNUフリー文書ライセンスのバージョン1.2または(オプションとして)バージョン1.3の条項に従って、複製、頒布、および/または改変が許可されています。ただし、この著作権表示およびライセンスは変更せずに記載すること。ライセンスバージョン1.2のコピーは、「GNUフリー文書ライセンス」セクションに含まれています。
SUSEの商標については、http://www.suse.com/company/legal/を参照してください。その他の製品名および会社名は、各社の商標または登録商標です。商標記号(®、 ™など)は、SUSEおよび関連会社の商標を示します。アスタリスク(*)は、第三者の商標を示します。
本書のすべての情報は、細心の注意を払って編集されています。しかし、このことは絶対に正確であることを保証するものではありません。SUSE LLC、その関係者、著者、翻訳者のいずれも誤りまたはその結果に対して一切責任を負いかねます。