ここで説明する手順で、サービスが無効データにアクセスすることを拒否するように、 DRBDを設定できます。この機能を実装するheartbeatコンポーネントは、 DRBD outdate-peerデーモン(dopd)です。これは、R1対応クラスタと CRMクラスタの両方で同じ構成を使用して動作します。
![]() | 重要項目 |
|---|---|
最低でも2つの独立した heartbeat通信チャネルを設定しなければ、 |
dopdを有効にするには、 /etc/ha.d/ha.cfファイルに次の行を追加します。
respawn hacluster /usr/lib/heartbeat/dopd apiauth dopd gid=haclient uid=hacluster
使用するディストリビューションに応じて、dopdのパスを変更してください。一部のディストリビューションとアーキテクチャでは、正しいパスは/usr/lib64/heartbeat/dopdになります。
必要に応じてパスを変更し、ha.cfを対向ノードにコピーしたら、 /etc/init.d/heartbeat reloadを実行します。 heartbeatが設定ファイルを再度読み込みます。これで、dopdプロセスが実行されていることを検証できます。
![]() | 注記 |
|---|---|
このプロセスを確認するには、ps ax | grep dopdを実行するか、 killall -0 dopdを使用します。 |
次の項目をDRBDリソース構成に追加します。
resource resource {
handlers {
fence-peer "/usr/lib/heartbeat/drbd-peer-outdater -t 5";
...
}
disk {
fencing resource-only;
...
}
...
}dopdと同様に、システムアーキテクチャやディストリビューションによっては、 drbd-peer-outdaterバイナリは/usr/lib64/heartbeatに置かれます。
最後に、drbd.confを対向ノードにコピーし、 drbdadm adjust resourceを実行して、リソースを再構成し、変更内容を反映します。
dopdが正しく機能しているかテストするには、 heartbeatサービスが正常に実行されているときに、構成され接続されているリソースのレプリケーションリンクを遮断します。ネットワークリンクを物理的に取り外すことで簡単にできます。または、一時的にiptablesルールを追加して、DRBD用TCPトラフィックを遮断します。
まず、リソースの接続状態 がConnectedから WFConnectionに変わります。数秒後に、ディスク状態 がOutdated/DUnknownに変化します。これで dopdが機能していることを確認できます。
これ以降は、古いリソースをプライマリロールに切り替えようとしても失敗します。
物理リンクを接続するか、一時的なiptablesルールを削除してネットワーク接続を再確立すると、接続状態が Connectedに変化し、すぐに SyncTargetになります (ネットワーク遮断中に、プライマリノードで変化が起こった場合)。同期が終了すると、無効状態であったリソースに再度 UpToDate のマークが付きます。