heartbeatとdopdの使用

ここで説明する手順で、サービスが無効データにアクセスすることを拒否するように、 DRBDを設定できます。この機能を実装するheartbeatコンポーネントは、 DRBD outdate-peerデーモン(dopd)です。これは、R1対応クラスタCRMクラスタの両方で同じ構成を使用して動作します。

[重要項目]重要項目

最低でも2つの独立した heartbeat通信チャネルを設定しなければ、 dopdは正しく機能しません。

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の構成

次の項目を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機能のテスト

dopdが正しく機能しているかテストするには、 heartbeatサービスが正常に実行されているときに、構成され接続されているリソースのレプリケーションリンクを遮断します。ネットワークリンクを物理的に取り外すことで簡単にできます。または、一時的にiptablesルールを追加して、DRBD用TCPトラフィックを遮断します。

まず、リソースの接続状態 Connectedから WFConnectionに変わります。数秒後に、ディスク状態 Outdated/DUnknownに変化します。これで dopdが機能していることを確認できます。

これ以降は、古いリソースをプライマリロールに切り替えようとしても失敗します。

物理リンクを接続するか、一時的なiptablesルールを削除してネットワーク接続を再確立すると、接続状態が Connectedに変化し、すぐに SyncTargetになります (ネットワーク遮断中に、プライマリノードで変化が起こった場合)。同期が終了すると、無効状態であったリソースに再度 UpToDate のマークが付きます。