SUSE Linux Enterprise High Availabilityの概要
- 概要
この記事では、SUSE Linux Enterprise High Availabilityの機能、アーキテクチャ、コアコンセプト、および利点について説明します。
- 目的
SUSE Linux Enterprise High Availabilityについて習得してそれを使用するかどうか判断するのに役立てるか、初めてクラスタを設定する際にこの記事をお読みください。
- 所要時間
この記事の理解には20分ほどを要します。
1 SUSE Linux Enterprise High Availabilityとは #
SUSE® Linux Enterprise High Availabilityは、オープンソースクラスタリング技術の統合スイートです。高可用性クラスタとは、データ、アプリケーション、およびサービスの可用性を最大にするために連携するサーバ(ノード)のグループです。あるノードに障害が発生した場合、そのノードで実行されていたリソースは、ダウンタイムをほとんどまたは全く発生させることなく別のノードに移動します。また、負荷分散のため、またはダウンタイムを最小限に抑えて保守タスクを実行するために、ノード間でリソースを手動で移動することもできます。クラスタリソースには、Webサイト、メールサーバ、データベース、ファイルシステム、仮想マシン、およびユーザが常時使用できる必要があるその他のサーバベースのアプリケーションまたはサービスなどが含まれます。
1.1 製品出荷スケジュール #
SUSE Linux Enterprise High Availabilityは以下の製品で利用できます。
- SUSE Linux Enterprise Server
High Availabilityは拡張機能として利用できます。これには追加の登録コードが必要です。
- SUSE Linux Enterprise Server for SAP applications
High Availabilityはモジュールとして含まれています。追加の登録コードは必要ありません。
1.2 機能と利点 #
SUSE Linux Enterprise High Availabilityは、単一障害点を排除して、重要なリソースの可用性と管理性を向上させます。これにより、ビジネスの継続性を維持し、データの整合性を保護し、クリティカルなワークロードでの予期せぬダウンタイムを削減できます。
- 複数のクラスタリングオプション
SUSE Linux Enterprise High Availabilityクラスタは、さまざまな方法で設定できます。
ローカルクラスタ: 1つのロケーション内の単一のクラスタ(たとえば、すべてのノードが1つのデータセンターにある)。ネットワークの遅延は最小限です。ストレージは通常、すべてのノードに同時にアクセスされます。
メトロクラスタ(「ストレッチ」クラスタ): すべてのサイトがファイバチャンネルで接続された、複数の建物またはデータセンターにわたってストレッチできる単一のクラスタ。ネットワークの遅延は通常低いです。ストレージはミラーリングまたは同期レプリケーションを使用して頻繁にレプリケートされます。
ハイブリッドクラスタ: 仮想サーバを物理サーバと一緒にクラスタ化できます。これによって、サービスの可用性とリソースの使用状況が向上します。
重要: 混在アーキテクチャのサポートなし混在アーキテクチャのクラスタはサポートされていません。同じクラスタ内のすべてのノードは、同じプロセッサプラットフォームを搭載している必要があります:AMD64/Intel 64、IBM Z、またはPOWER。
- 柔軟でスケーラブルなリソース管理
SUSE Linux Enterprise High Availabilityは、最大32ノードのクラスタをサポートします。現在のノードに障害が発生した場合にリソースを別のノードに自動的に移動できます。また、ハードウェアのトラブルシューティングやワークロードのバランスをとるために、リソースを手動で移動することもできます。リソースを、特定の時間に修復されたノードに戻るように設定することもできます。クラスタは、設定可能なルールに基づいてリソースを停止および起動できます。
- 幅広いリソースエージェント
クラスタはリソースエージェント(RA)を介してリソースを管理します。SUSE Linux Enterprise High Availabilityは、Apache、IPv4、IPv6、NFSなど、特定の種類のアプリケーションやサービスを管理するように設計されたさまざまなリソースエージェントをサポートしています。またIBM WebSphere Application Serverなどのサードパーティアプリケーション用のリソースエージェントも含まれています。
- ストレージとデータレプリケーション
SUSE Linux Enterprise High AvailabilityはファイバチャンネルまたはiSCSIストレージエリアネットワーク(SAN)をサポートしており、必要に応じてサーバストレージを動的に割り当てたり、割り当てを変更したりできます。また、GFS2とクラスタ論理ボリュームマネージャ(Cluster LVM)も付属しています。データレプリケーションには、DRBD*を使用して、リソースのデータをアクティブノードからスタンバイノードにミラーリングします。
- 仮想化環境のサポート
SUSE Linux Enterprise High Availabilityは、物理Linuxサーバと仮想Linuxサーバの混合クラスタリングをサポートしています。クラスタは、仮想サーバや物理サーバで実行されているリソースを認識して管理することができ、KVM仮想マシンをリソースとして管理することもできます。
- 障害回復
SUSE Linux Enterprise High Availabilityには、システムのバックアップと復元を支援する障害復旧フレームワークであるRelax-and-Recover (ReaR)が付属しています。
- ユーザフレンドリな管理ツール
SUSE Linux Enterprise High Availabilityには、設定と管理のためのツールが含まれています。
CRMシェル (
crmsh) は、高可用性クラスタのインストールと設定、リソースの設定、監視と管理タスクの実行のためのコマンドラインインタフェースです。Hawkは、高可用性クラスタを監視および管理するためのWebベースのグラフィカルインタフェースです。Hawkには、Webブラウザを使用して、クラスタノードに接続できる任意のLinuxまたはLinux以外のマシンからアクセスできます。
1.3 高可用性はどのように機能しますか? #
次の図は、3ノードのクラスタを示しています。各ノードにはWebサーバがインストールされており、2つのWebサイトをホストしています。各Webサイトのすべてのデータ、グラフィックス、Webページコンテンツは、各ノードに接続された、共有ディスクサブシステムに保存されています。
通常のクラスタ操作では、クラスタ内の各ノードが他のノードと常に通信し、定期的リソースを確認して、障害を検出します。
次の図は、ハードウェアまたはソフトウェアの問題でWebサーバ1に障害が発生した場合に、クラスタがどのようにリソースを移動するかを示しています。
WebサイトAがWebサーバ2に、WebサイトBがWebサーバ3に移動します。Webサイトは引き続き利用可能で、残りのクラスタノードに均等に分散されます。
Webサーバ1で障害が発生したとき、High Availabilityソフトウェアは次のタスクを実行しました。
障害を検出し、Webサーバ1が本当にダウンしていることを検証。
Webサーバ1にマウントされていた共有データディレクトリを、Webサーバ2および3に再マウント。
Webサーバ1で動作していたアプリケーションを、Webサーバ2および3で再起動。
証明書とIPアドレスをWebサーバ2および3に転送。
この例では、フェールオーバーが迅速に実行され、ユーザはWebサイトへのアクセスを数秒程度で回復できます。通常、再度ログインする必要はありません。
Webサーバ1が通常の動作状態に戻ると、WebサイトAとWebサイトBは自動的にWebサーバ1に戻る(「フェールバックする」)ことができます。これには、ある程度のダウンタイムが発生するので、代わりに、サービスの中断を最小限に抑えるために、指定した時間にのみフェールバックするようにリソースを設定することもできます。
2 コアコンセプト #
このセクションでは、SUSE Linux Enterprise High Availabilityのコアコンセプトについて説明します。
2.1 クラスタとノード #
高可用性クラスタとは、アプリケーションまたはサービスの可用性を確保するために連携するサーバのグループです。クラスタのメンバーとして設定されるサーバはノードと呼ばれます。あるノードに障害が発生した場合、そのノードで実行されているリソースはクラスタ内の別のノードに移動できます。SUSE Linux Enterprise High Availabilityは、最大32ノードのクラスタをサポートします。ただし、クラスタは通常、2ノードクラスタ、または奇数ノード(通常は3または5)のクラスタの2つのカテゴリのいずれかに分類されます。
2.2 通信チャネル #
クラスタ内部の通信はCorosyncによって処理されます。Corosync Cluster Engineは、クラスタに関するメッセージング、メンバーシップ、クォーラム情報を提供するグループ通信システムです。SUSE Linux Enterprise High Availability 16では、kronosnet (knet)をデフォルトのトランスポートプロトコルとして使用します。
クラスタには少なくとも2つの通信チャネルを設定することを強くお勧めします。推奨される方法は、ネットワークデバイスボンディングを使用することです。ネットワークボンドを使用できない場合は、Corosyncで冗長通信チャネル(第2「リング」とも呼ばれます)を設定できます。
2.3 リソースの管理 #
高可用性を備えたクラスタでは、高い可用性を維持し続ける必要があるアプリケーションとサービスのことをリソースと呼びます。クラスタリソースには、Webサイト、メールサーバ、データベース、ファイルシステム、仮想マシン、およびユーザが常時使用できるその他のサーバベースのアプリケーションまたはサービスなどが含まれます。必要に応じてリソースを起動、停止、監視、移動することができます。また、特定のリソースを同じノード上で同時に実行するか、順次起動および停止するかを指定することもできます。クラスタノードに障害が発生した場合、そのノード上で実行されているリソースは失われるのではなく、別のノードにフェールオーバー(移動)します。
SUSE Linux Enterprise High Availabilityでは、クラスタリソースマネージャ(CRM)はPacemakerであり、すべてのクラスタサービスを管理および調整します。Pacemakerはリソースエージェント(RA)を使用して、リソースを起動、停止、および監視します。リソースエージェントは管理するリソースを抽象化し、その状態をクラスタに提示します。SUSE Linux Enterprise High Availabilityは、特定の種類のアプリケーションやサービスを管理するように設計されたさまざまなリソースエージェントをサポートしています。
2.4 ノードフェンシング #
スプリットブレインシナリオでは、クラスタノードは互いを認識しない2つ以上のグループ(またはパーティション)に分けられます。これは、ハードウェアやソフトウェアの障害、あるいはネットワーク接続の障害などが原因である可能性があります。スプリットブレインシナリオは、1つまたは複数のノードをフェンシング(リセットまたは電源オフ)することで解決できます。ノードレベルフェンシングでは、障害が発生したノードから共有リソースにアクセスできなくなります。また、クラスタリソースがステータスが不明なノードで実行できなくなります。
SUSE Linux Enterprise High Availabilityは、ノードフェンシングメカニズムとしてSTONITHを使用します。サポートされるには、すべてのSUSE Linux Enterprise High Availabilityクラスタに少なくとも1つのSTONITHデバイスが必要です。重要なワークロードには、2つまたは3つのSTONITHデバイスを使用することをお勧めします。STONITHデバイスは、物理デバイス(電源スイッチ)でも、ソフトウェアメカニズム(ウォッチドッグと組み合わせたSBD)でも構いません。
2.5 クォーラムの判断 #
1つ以上のノードとその他のクラスタ間で通信が失敗した場合(スプリットブレインシナリオ)、クラスタパーティションが発生します。ノードは同じパーティション内の他のノードのみと通信可能で、切り離されたノードは認識しません。クラスタパーティションは、ノード(「投票」)の過半数を保有する場合、クォーラムを持ちます(「定足数に達しています」)。これはクォーラム計算によって決定されます。定足数に達していないノードのフェンシングを可能にするには、クォーラムを計算する必要があります。
Corosyncは以下の式に基づいてクォーラムを計算します。
N ≥ C/2 + 1 N = minimum number of operational nodes C = number of cluster nodes
たとえば、5ノードクラスタでは、クォーラムを維持するためには最低3つの動作ノードが必要です。
ノード数が偶数のクラスタ、特に2ノードのクラスタでは、各パーティションのノード数が等しいため、過半数を獲得できない可能性があります。この状況を回避するには、QDeviceをQNetdと組み合わせて使用するようにクラスタを設定できます。QNetdはクラスタの外部で実行されるアービトレータです。これはクラスタノード上で実行されるQDeviceデーモンと通信し、クォーラム計算のために設定可能な投票数を提供します。これにより、クラスタが標準のクォーラムルールが許可するよりも多くのノード障害に耐えることができます。
2.6 ストレージとデータレプリケーション #
高可用性クラスタには、ファイバチャンネルまたはiSCSIを介して接続された共有ディスクサブシステムが含まれる場合があります。ノードの障害時には、クラスタ内の別のノードが、障害の発生したノードにマウントされていた共有ディスクディレクトリを自動的にマウントします。この機能によって、ユーザは、共有ディスクサブシステム上のディレクトリに対するアクセスを中断することなく実行できます。共有ディスクに保存されるコンテンツには、データ、アプリケーション、サービスなどが含まれる場合があります。
次の図は、一般的なファイバチャンネルクラスタの設定を表したものです。緑色の線はEthernet電源スイッチへの接続を示し、pingリクエストが失敗した場合にノードを再起動できます。
次の図は、一般的なiSCSIクラスタの設定を表したものです。
ほとんどのクラスタには共有ディスクサブシステムが含まれていますが、共有ディスクサブシステムなしのクラスタを作成することもできます。次の図は、共有ディスクサブシステムなしのクラスタを表したものです。
3 アーキテクチャの概要 #
このセクションでは、SUSE Linux Enterprise High Availabilityクラスタのアーキテクチャと、さまざまなコンポーネントの相互運用方法について説明します。
3.1 アーキテクチャ層 #
SUSE Linux Enterprise High Availabilityでは、アーキテクチャが階層化されています。次の図は、さまざまな層と関連するコンポーネントを示します。
- メンバーシップとメッセージング(Corosync)
Corosync Cluster Engineは、クラスタに関するメッセージング、メンバーシップ、クォーラム情報を提供するグループ通信システムです。
- クラスタリソースマネージャ(Pacemaker)
Pacemakerは、クラスタ内で発生したイベントへの対応を司るクラスタリソースマネージャです。イベントとは、クラスタにおけるノードの加入と離脱、リソースでの障害発生、保守などの計画的なアクティビティのことを指します。
pacemakerdデーモンは、その他のあらゆる関連デーモンの起動と監視を行います。以下のコンポーネントもPacemaker層の一部です。
CIB (クラスタ情報データベース)
Pacemakerは、ノードごとにCIBを保持しています。CIBとは、クラスタ設定のXML表現のことで、クラスタの各オプション、ノード、リソース、制約、個々の要素間の関係性などが記述されています。CIBには、現在のクラスタのステータスも反映されます。CIBマネージャ(
pacemaker-based)はクラスタ全体でCIBの同期を保ち、クラスタ設定とステータスの読み取りと書き込みを処理します。DC (指定コーディネータ)
pacemaker-controldデーモンは、あらゆるアクションを統括するクラスタコントローラです。このデーモンは各クラスタノード上にインスタンスを持つが、DCとして動作するように選出されるのは1つのインスタンスのみです。DCは、クラスタサービスの開始時、または現在のDCに障害が発生した場合、またはクラスタから離脱した場合に選出されます。DCは、ノードのフェンシングやリソースの移動など、クラスタ全体の変更を実行する必要があるかどうかを決定します。スケジューラ
スケジューラは
pacemaker-schedulerdデーモンとして各ノードで実行されるが、アクティブなのはDC上のみです。クラスタ遷移が必要になると、スケジューラは、クラスタの予想される次の状態を計算し、次の状態を達成するためにどのようなアクションをスケジュールする必要があるかを決定します。
- ローカルエグゼキュータ
ローカルエグゼキュータは、各ノードのPacemaker層とリソース層の間に存在します。
pacemaker-execdデーモンにより、Pacemakerでのリソースの起動、停止、監視が可能になります。- リソースおよびリソースエージェント
高可用性を備えたクラスタでは、高い可用性を維持し続ける必要があるサービスのことをリソースと呼びます。RA (リソースエージェント)とは、これらのクラスタリソースの起動、停止、監視に使用されるスクリプトのことです。
3.2 プロセスフロー #
クラスタ内で実行される多くのアクションは、クラスタリソースの追加や削除、リソース制約の変更など、クラスタ全体に影響を及ぼします。次の例は、このようなアクションを実行する場合は、クラスタ内でどのような変化が発生するのかを示しています。
CRMシェルまたはHawkを使用して、新しいクラスタリソースを追加します。これはクラスタ内のどのノードからでも実行できます。リソースを追加すると、CIBが変更されます。
CIBの変更はすべてのクラスタノードに複製されます。
pacemaker-schedulerdは、CIBの情報に基づいて、クラスタの理想的な状態とその達成方法を計算します。命令のリストをDCにフィードします。DCはCorosync経由でコマンドを送信し、それを他のノードの
pacemaker-controldインスタンスが受信します。各ノードはローカルエクゼキュータ(
pacemaker-execd)を使用してリソースの変更を実行します。pacemaker-execdデーモンはクラスタに対応しておらず、リソースエージェントと直接通信します。すべてのノードは操作結果をDCに返送します。
フェンシングが必要な場合、
pacemaker-fencedはフェンシングエージェントを呼び出してノードをフェンシングします。DCが、すべての必要な操作が成功したことを確認すると、クラスタはアイドル状態に戻り、次のイベントを待機します。
予定どおり実行されなかった操作があれば、CIBに記録された新しい情報を基に、
pacemaker-schedulerdを再度呼び出します。
4 インストールオプション #
このセクションでは、SUSE Linux Enterprise High Availabilityクラスタをインストールするためのさまざまなオプションについて説明し、利用可能なインストールガイドへのリンクを示します。
以下のクイックスタートガイドでは、デフォルト設定で最小クラスタを設定する方法を説明しています。
- Installing a basic two-node High Availability cluster
このクイックスタートガイドでは、QDevice、ディスクレスSBD、ソフトウェアウォッチドッグを使用した基本的な2ノード高可用性クラスタの設定方法について説明しています。ディスクレスSBDが2ノードクラスタのスプリットブレインシナリオを処理できるように、このセットアップにはQDeviceが必要です。
- Installing a basic three-node High Availability cluster
このクイックスタートガイドでは、ディスクレスSBDとソフトウェアウォッチドッグを使用した基本的な3ノード高可用性クラスタの設定方法を説明しています。ディスクレスSBDがQDeviceの助けを借りずにスプリットブレインシナリオを処理できるように、このセットアップには3つのノードが必要です。
5 詳細情報 #
SUSE Linux Enterprise High Availabilityの詳細については、以下のリソースを参照してください。
- https://clusterlabs.org/
SUSE Linux Enterprise High Availabilityの多くのコンポーネントのアップストリームプロジェクト。
- https://www.clusterlabs.org/pacemaker/doc/
Pacemakerのドキュメント。SUSE Linux Enterprise High Availability 16については、Pacemaker 3のドキュメントを参照してください。
6 法的事項 #
Copyright© 2006–2025 SUSE LLC and contributors. All rights reserved.
この文書は、GNU Free Documentation Licenseのバージョン1.2または(オプションとして)バージョン1.3の条項に従って、複製、頒布、および/または改変が許可されています。ただし、この著作権表示およびライセンスは変更せずに記載すること。ライセンスバージョン1.2のコピーは、「GNU Free Documentation License」セクションに含まれています。
SUSEの商標については、https://www.suse.com/company/legal/を参照してください。その他の第三者のすべての商標は、各社の所有に帰属します。商標記号(®、™など)は、SUSEおよび関連会社の商標を示します。アスタリスク(*)は、第三者の商標を示します。
本書のすべての情報は、細心の注意を払って編集されています。しかし、このことは正確性を完全に保証するものではありません。SUSE LLC、その関係者、著者、翻訳者のいずれも誤りまたはその結果に対して一切責任を負いかねます。