スタックリソースでは、マルチノードクラスタの多重冗長性のために、あるいはオフサイトのディザスタリカバリ機能を確立するためにDRBDを使用できます。このセクションでは、そのような構成におけるDRBDおよびPacemakerの設定方法について説明します。
この構成シナリオでは、1つのサイトの2ノードの高可用性クラスタと、一般的には別のサイトに設置する独立した1つのノードについて説明します。第3のノードは、ディザスタリカバリノードとして機能するスタンドアロンサーバです。次の図で概念を説明します。
図8.1 Pacemakerクラスタの DRBD リソースのスタック
![]() |
この例では、aliceとbobが2ノードのPacemakerクラスタを形成し、 charlieはPacemakerで管理されないオフサイトのノードです。
このような構成を作成する場合は、 「3ノード構成」で説明されているように、まずDRBDリソースの設定および初期化を行います。そして、次のCRM構成でPacemakerを設定します。
primitive p_drbd_r0 ocf:linbit:drbd \
params drbd_resource="r0"
primitive p_drbd_r0-U ocf:linbit:drbd \
params drbd_resource="r0-U"
primitive p_ip_stacked ocf:heartbeat:IPaddr2 \
params ip="192.168.42.1" nic="eth0"
ms ms_drbd_r0 p_drbd_r0 \
meta master-max="1" master-node-max="1" \
clone-max="2" clone-node-max="1" \
notify="true" globally-unique="false"
ms ms_drbd_r0-U p_drbd_r0-U \
meta master-max="1" clone-max="1" \
clone-node-max="1" master-node-max="1" \
notify="true" globally-unique="false"
colocation c_drbd_r0-U_on_drbd_r0 \
inf: ms_drbd_r0-U ms_drbd_r0:Master
colocation c_drbd_r0-U_on_ip \
inf: ms_drbd_r0-U p_ip_stacked
colocation c_ip_on_r0_master \
inf: p_ip_stacked ms_drbd_r0:Master
order o_ip_before_r0-U \
inf: p_ip_stacked ms_drbd_r0-U:start
order o_drbd_r0_before_r0-U \
inf: ms_drbd_r0:promote ms_drbd_r0-U:start
この構成を/tmp/crm.txtという一時ファイルに保存し、次のコマンドで現在のクラスタにインポートします。
crm configure < /tmp/crm.txt
この構成では、以下のアクションがalice/bobクラスタで正しい順番で実行されます。
PacemakerはDRBDリソースr0を両方のクラスタノードで開始し、 1つのノードをマスター(DRBD プライマリ)ロールに昇格させます。
下位レイヤ(r0 DRBD)リソースがマスター(プライマリ)に昇格した方のノードで、上位レイヤのDRBDが第3ノードとのレプリケーションのために使うIPアドレス192.168.42.1を開始します。
r0がプライマリになっていて、 r0-Uのレプリケーション用IPアドレスも持つノード側で、オフサイトノードに接続およびレプリケートするr0-U DRBDリソースをPacemakerが開始します。
最後に、Pacemakerがr0-Uリソースもプライマリロールに昇格させるため、ディザスタリカバリノードとのレプリケーションが始まります。
このように、このPacemaker構成では、クラスタノード間だけではなく第3のオフサイトノードでも完全なデータ冗長性が確保されます。
![]() | 注記 |
|---|---|
このタイプの構成は、 DRBD Proxyを併用するのが一般的です。 |
この構成では、全部で3つのDRBDリソース(2つの非スタック、1つのスタック)を使って、4台のストレージによる冗長化を実現します。4ノードクラスタの意義と目的は、3ノードまで障害が発生しても、可用なサービスを提供し続けられるということです。
次の例で概念を説明します。
図8.2 Pacemakerクラスタの DRBD リソースのスタック
![]() |
この例では、alice、bob、charlie、daisy が 2セットの 2ノードPacemaker クラスタを構成しています。aliceとbobはleftという名前のクラスタを構成し、互いにDRBDリソースを使ってデータをレプリケートします。一方、charlieとdaisyもrightという名前のクラスタを構成し、別のDRBDリソースでレプリケートします。3番目に、DRBDリソースをスタックし、2つのクラスタを接続します。
![]() | 注記 |
|---|---|
Pacemaker バージョン 1.0.5 のPacemakerクラスタの制限により、CIBバリデーションを有効にしたままで4ノードクラスタをつくることはできません。CIBバリデーションは汎用的に使うのには向かない特殊な高度な処理です。これは、今後のペースメーカーのリリースで解決されることが予想されます。 |
このような構成を作成するには、 「3ノード構成」の説明に従って、まずDRBDリソースを設定して初期化します (ただし、ローカルがクラスタになるだけでなく、リモート側にもクラスタになる点が異なります)。そして、次のCRM構成でPacemakerを設定し、 leftクラスタを開始します。
primitive p_drbd_left ocf:linbit:drbd \
params drbd_resource="left"
primitive p_drbd_stacked ocf:linbit:drbd \
params drbd_resource="stacked"
primitive p_ip_stacked_left ocf:heartbeat:IPaddr2 \
params ip="10.9.9.100" nic="eth0"
ms ms_drbd_left p_drbd_left \
meta master-max="1" master-node-max="1" \
clone-max="2" clone-node-max="1" \
notify="true"
ms ms_drbd_stacked p_drbd_stacked \
meta master-max="1" clone-max="1" \
clone-node-max="1" master-node-max="1" \
notify="true" target-role="Master"
colocation c_ip_on_left_master \
inf: p_ip_stacked_left ms_drbd_left:Master
colocation c_drbd_stacked_on_ip_left \
inf: ms_drbd_stacked p_ip_stacked_left
order o_ip_before_stacked_left \
inf: p_ip_stacked_left ms_drbd_stacked_left:start
order o_drbd_left_before_stacked_left \
inf: ms_drbd_left:promote ms_drbd_stacked_left:start
この構成を/tmp/crm.txtという一時ファイルに保存し、次のコマンドでleftクラスタ構成にインポートします。
crm configure < /tmp/crm.txt
Pacemakerは以下のアクションを実行します。
aliceとbob間をレプリケートするDRBDリソースleftを起動し、これらのノードのいずれかをマスターにします。
IPアドレス10.9.9.100が開始し(alice または bobのいずれか。リソースleftでマスターの役割を担っている方)。
IPアドレスを設定したのと同じノード上で、DRBDリソースstackedが起動します。
target-role="Master"が指定されているため、スタックしたDRBDリソースがプライマリになります。
さて、以下の設定を作り、クラスタrightに進みましょう。
primitive p_drbd_right ocf:linbit:drbd \
params drbd_resource="right"
primitive p_drbd_stacked ocf:linbit:drbd \
params drbd_resource="stacked"
primitive p_ip_stacked_right ocf:heartbeat:IPaddr2 \
params ip="10.9.10.101" nic="eth0"
ms ms_drbd_right p_drbd_right \
meta master-max="1" master-node-max="1" \
clone-max="2" clone-node-max="1" \
notify="true"
ms ms_drbd_stacked p_drbd_stacked \
meta master-max="1" clone-max="1" \
clone-node-max="1" master-node-max="1" \
notify="true" target-role="Slave"
colocation c_drbd_stacked_on_ip_right \
inf: ms_drbd_stacked p_ip_stacked_right
colocation c_ip_on_right_master \
inf: p_ip_stacked_right ms_drbd_right:Master
order o_ip_before_stacked_right \
inf: p_ip_stacked_right ms_drbd_stacked_right:start
order o_drbd_right_before_stacked_right \
inf: ms_drbd_right:promote ms_drbd_stacked_right:start
Pacemakerは以下のアクションを実行します。
charlieとdaisy間をレプリケートするDRBDリソースrightを起動し、これらのノードのいずれかをマスターにします。
IPアドレス10.9.10.101を開始します(charlie または daisyのいずれか。リソースrightでマスターの役割を担っている方)。
IPアドレスを設定したのと同じノード上で、DRBDリソースstackedが起動します。
target-role="Slave"が指定されているため、スタックリソースはセカンダリのままになります。