この初心者向けチュートリアルでは、SUSE Linux Enterprise High Availability (SLE HA) 15 を使用して、基本的な 2 ノードのアクティブ/パッシブ クラスタを構築します。サポートされている CRM Shell ブートストラップ スクリプトを使用し、最初のノードを初期化しcrm cluster init、2 番目のノードを追加しcrm cluster join、メンバーシップを確認し、管理仮想 IP の計画されたフェイルオーバーをテストします。これらの例は、2026 年 9 月 24 日に公開された SUSE の SLE HA 15 SP7 ドキュメントに準拠しています。プロンプトは、サービス パック、ハードウェア、およびプラットフォームによって異なる場合があります。
「HAE」は、高可用性拡張機能の略称として非公式によく使われます。SUSEの現在の製品ドキュメントでは、SUSE Linux Enterprise High Availability、略してSLE HAと呼ばれています。この手順では、動作するクラスタ基盤とHawk2管理アクセスを提供します。ただし、アプリケーション、データベース、またはそのデータを自動的に高可用性にするものではありません。それらには、それぞれ独自のPacemakerリソース、ストレージ設計、およびワークロード固有のテストが必要です。
以下の端末およびHawk2の画面図は、実際のシステムからキャプチャしたものではなく、代表的なインターフェース画面を示しています。名前とアドレスは例です。ご自身のネットワーク上の値に置き換えてください。
このクラスターは何をするのか?
クラスタとは、ノード と呼ばれるサーバーのグループであり、選択されたサービスの実行を維持するために連携します。Corosyncはノードのメンバーシップとクラスタメッセージングを処理します。クラスタリソースマネージャであるPacemakerは、管理対象リソースの実行場所を決定し、障害に対応します。リソースと は、Pacemakerが起動、停止、監視、移動できるサービスまたはアドレスのことです。
このチュートリアルでは、ノードaliceとノードがbob2ノードクラスタを構成します。フローティング管理IPにより、管理者はSUSEのWebインターフェースであるHawk2に安定したアドレスを割り当てることができます。いずれかのノードがスタンバイ状態になると、PacemakerはそのIPアドレスをもう一方のノードに移動できます。本番環境の2ノードクラスタでは、SUSEはクォーラム決定のためにQDevice/QNetdを追加することを推奨しており、ノードフェンシングも必須としています。
インストール前に準備すべきことは何ですか?
同じサービスパックとプロセッサアーキテクチャを実行する、サポート対象のSUSE Linux Enterprise Server 15システム2台(rootアカウントまたは適切な権限を持つsudoアカウントを使用)。
有効なSUSE登録と、各ノードにおけるSLE HAの利用権限が必要です。拡張機能とパッケージパターンは、SLESサービスパックおよびアーキテクチャと一致している必要があります。
静的ノードアドレス、ワーキングネーム解決、同期クロック、そして信頼性の高いクラスタネットワーク接続。使用するCorosyncインターフェースは慎重に選択してください。本番環境の設計では、分離パスや冗長パスが有効です。
フェンシング計画。フェンシング (STONITH、「Shoot the Other Node in the Head」の略)は、異常なノードを強制的に隔離または再起動し、ネットワークが分断された両側が共有データに書き込むことを防ぎます。サポートされているクラスタでは、フェンシングが有効になっている必要があります。
SBD(STONITHブロックデバイス)を使用する場合は、各ノードに適切なウォッチドッグと、安定したデバイスパスを備えた適切に設計された共有ブロックストレージが必要です。本番環境ではハードウェアウォッチドッグの使用が推奨されます。物理的な電源フェンスを使用する場合は、サポートされているSTONITHデバイスを設定してテストしてください。
2ノード構成の場合、ブートストラップフローを通じてQDevice/QNetdウィットネスを設定する予定であれば、初期化前にウィットネスを計画してください。ウィットネスは、接続が失われた際に、どちらのノードがクォーラムを持っているかをクラスタが判断するのに役立ちます。
ラボ環境の構成を本番環境で使用できる状態として扱わないでください。SUSEのSLE HA 15 SP7システム要件では フェンシングが必須であり、インストール概要 では、拡張する前に2つまたは3つのノードでセットアップをテストすることを推奨しています。
ステップ1:SLE HA拡張機能とパッケージをインストールします。
SLESのインストール時にSLE HAが選択されなかった場合は、各ノードで拡張機能を有効にしてください。登録済みのx86_64 SLES 15 SP7ホストの場合、ドキュメントに記載されている手順は次のとおりです。
SUSEConnect -p sle-ha/15.7/x86_64 -r ADDITIONAL_REGCODE
zypper install -t pattern ha_sles
SLE HA 登録コードに置き換えてくださいADDITIONAL_REGCODE。ご自身のサービス パックとアーキテクチャに一致するアクティベーション 製品識別子を使用してください。SP7 の例を別の SLES 15 サービス パックにコピーしないでください。両方のノードで package-pattern コマンドを実行します。SUSE では、ha_slesパターンをクラスタの構成と管理に使用されるパッケージのセットとして説明しています。
最初のノードにおける高可用性パターンインストールコマンドのターミナル画面。
ステップ2:名前、時間、ネットワークアクセスを準備する
両方のノードに安定したホスト名と静的なプライマリIPアドレスを割り当ててください。各ノードが、短い名前と完全修飾名の両方で互いを解決できることを確認してください。SUSEのセットアップガイドでは、/etc/hosts名前解決の失敗によって内部通信が途絶える可能性があるため、必要に応じてクラスタメンバーをリストアップすることを推奨しています。たとえば、次のようなエントリをDNSとアドレスプランに合わせて変更してください。
10.20.0.11 alice.example.net alice
10.20.0.12 bob.example.net bob
両方のクロックをクラスタ外の NTP ソースに同期させ、タイムゾーンを一致させてください。SLES 15 では、Chrony がデフォルトの NTP 実装です。Corosync に使用する予定のネットワークの接続性を確認してください。ブートストラップ スクリプトはクラスタ通信に必要なファイアウォール ポートを開くことができますが、ホストおよびネットワーク ファイアウォールが選択したトポロジに必要なトラフィックを許可していることを確認してください。ブートストラップ フローでは、ユニキャストがデフォルトです。Corosync のデフォルト ポートは 5405 です。
事前チェックでは、サンプルノード名、同期されたクロック、およびピア接続を確認します。
ステップ3:最初のノードを初期化する
上でalice、root権限でブートストラップコマンドを実行します。
crm cluster init --name demo-ha
プロンプトを承認する前に内容を確認してください。Corosync に使用するインターフェースとネットワーク アドレスを選択し、ポートを確認します。スクリプトは時刻同期とウォッチドッグの可用性をチェックし、SSH キーと関連するクラスタ構成を準備できます。SBD、Hawk2 管理仮想 IP、および QDevice/QNetd を構成するかどうかを尋ねます。SBD を使用するには、ウォッチドッグと共有デバイスが既に準備されている必要があります。このブートストラップで QDevice を構成する場合は、まず QNetd サーバーを準備してください。スクリプトは実行中の 1 ノード クラスタを作成します。bobこの段階では追加は行いません。
SBD には、ランダムな共有ディスクまたはデバイスパスを選択しないでください。パスは、すべてのノードで同じ適切なストレージを識別する必要があり、障害発生時の動作とタイムアウトはストレージ設計と一致している必要があります。SUSE は、softdogすべての CPU がスタックしている場合、マシンを再起動できないと警告しています。そのため、可能な限り本番環境では適切なハードウェア ウォッチドッグを使用してください。
最初のノードのブートストラップでは、クラスタ通信ネットワークとCorosyncポートの設定を求められます。
ステップ4:2番目のノードに参加する
最初のノードが初期化されたら、ログインしてbob以下を実行してください。
crm cluster join
プロンプトに従って既存のクラスタノードを特定してくださいalice。最初のノードでrootではなくsudoアカウントを使用した場合は、SUSEのドキュメントでそのアカウントを次のように指定してください-c。例:
sudo crm cluster join -c USER@alice
参加スクリプトは、Corosyncの設定をコピーし、SSHとCsync2を設定し、現在のマシンをクラスタノードとしてオンラインにし、Hawk2に必要なサービスを開始します。両方のマシンを個別に初期化しないでください。2番目のノードは、最初のノードによって作成されたクラスタに参加する必要があります。
2番目のノードで結合ワークフローを実行し、初期化済みの1番目のノードを指定します。
ステップ5:両方のノードがオンラインであることを確認します。
どちらのノードからでも、クラスタの概要を確認してください。
crm status
ノード名Onlineとクォーラムを持つクラスタパーティションの両方を探してください。続行する前に、失敗したアクションやオフラインのノードがないか確認してください。初期化時に選択した管理 VIP を使用して Hawk2 にサインインすることもできます (通常は ) https://ADMIN-VIP:7630/。自己署名証明書を使用している場合、初回訪問時に証明書の警告が表示されることがあります。本番環境では、不明な証明書を無視するのではなく、クラスタ管理者と証明書の詳細を確認してください。
フェイルオーバーをテストする前に、クラスタの状態チェックで両方のノードがオンラインになっていることを確認してください。 ノードリストは、クラスタへの所属を確認する2つ目の方法を提供する。
ステップ6:管理アカウントを保護する
ブートストラップ手順では、haclusterHawk2 のアカウントが作成されます。SUSE のセットアップガイドには、基本セットアップ時のデフォルトパスワードが記載されているため、システムへのアクセスを終了する前にすぐに変更してください。
passwd hacluster
固有の強力なパスワードを使用し、組織の認証情報ポリシーに従ってください。Hawk2管理ネットワークへのアクセスを制限し、必要に応じて信頼できる証明書をインストールし、管理インターフェースをパブリックインターネットに直接公開しないでください。
ステップ7:計画されたフェイルオーバーを安全にテストする
計画されたスタンバイ テストでは、1 つのノードが意図的にリソース配置から削除された場合に、管理仮想 IP が移動できるかどうかを確認します。テストの前に、両方のノードが正常であること、クラスタにクォーラムがあること、予期しない動作が発生した場合に備えてコンソールまたは帯域外アクセスが可能であることを確認してください。同じネットワーク上のクライアントから、管理 VIP に対して継続的に ping を実行します。例:
ping 10.20.0.20
Hawk2で、現在管理IPアドレスをホストしているノードを開き、「スタンバイ」 を選択します。次に、「ステータス」>「リソース」 を確認します。SUSEのクイックスタートガイドでは、pingが継続している間、フローティングリソースが別のノードに移動することが説明されています。テストが完了したら、Hawk2の対応するアクションを使用してノードをサービスに戻し、両方のノードがオンラインであることを確認し、リソースが想定される場所にあることを確認します。
クラッシュをシミュレートすることなくリソースの移動をテストするには、アクティブノード上で計画的なスタンバイ動作を使用します。 待機後、管理IPが他のノードで動作していることを確認してください。
このテストは何を証明し、何を証明しないのか?
両方のノードが可視状態を維持し、管理IPがピアに移動した場合、基本的なクラスタメンバーシップとフローティングIPリソースがこの計画されたシナリオで機能していることを示す証拠となります。pingだけでは、アプリケーションが利用可能であること、クライアントセッションが維持されていること、共有データが保護されていること、またはクラスタがネットワーク、ストレージ、電源、ソフトウェアのあらゆる障害から復旧できることを証明するものではありません。
アプリケーションごとに、適切なリソースエージェントを追加し、アプリケーションの設計に従って、順序付け、コロケーション、監視、ストレージアクセス、およびフェンシングを構成してください。2つのノードが同時に通常の共有ストレージに書き込むことは絶対に避けてください。本番環境に移行する前に、現実的なノード障害やネットワーク障害を含むステージング環境で、ワークロードの復旧とデータ整合性をテストしてください。
避けるべきよくある間違い
フェンシングをスキップする: STONITH が正常に動作しないクラスターでは、スプリットブレインを安全に解決できず、SUSE のサポート要件を満たしません。
2つのノードが単独で決定できると仮定して、 偶数ノードのクラスタ、特に2ノードクラスタ向けにQDevice/QNetdを計画してください。
不安定な、または不一致なノードIDを使用する場合は、 静的アドレス、一貫性のあるホスト名、順方向および逆方向の名前解決、および同期された時刻を使用してください。
誤ったネットワークを再利用している場合: 目的のCorosyncインターフェースを選択し、すべてのネットワークパスでファイアウォールポリシーを確認してください。
クラスターがアプリケーションを自動的に保護すると仮定すると、 クラスターは構成およびテスト済みのリソースのみを管理できます。
初期ブートストラップを「本番環境対応」と呼ぶのは、 クイックスタートが基本的なセットアップに過ぎないことを意味します。本番環境への対応には、ワークロード固有の復旧テスト、フェンシングの検証、監視、バックアップと復元の手順、および文書化された運用が必要です。
SUSE公式リファレンス