目次

はじめに

概要

DRBDの基礎的な動作設定を行う。

環境情報

OSCentOS Linux release 7.3.1611
KernelLinux version 3.10.0-514.10.2.el7.x86_64
DRBDdrbd84-utils-8.9.8-1.el7.elrepo.x86_64
DRBD Kernel Modulekmod-drbd84-8.4.9-1.el7.elrepo.x86_64

設定

設定ファイル

DRBDの動作設定は /etc/drbd.d/ 配下のファイルにて行う。
DRBDは起動時に /etc/drbd.d/global_common.conf を読み、更に同ファイルが指定したリソースファイル(初期状態では/etc/drbd.d/*.res)を読み込む動作をしている。

各セクションの設定に関する公式情報は以下のサイトを参照のこと。
https://blog.3ware.co.jp/drbd-users-guide-8.3/re-drbdconf.html

セクション

設定ファイルの中身は複数のセクションで区切られており、セクション内に動作内容を設定する。
global_common.confには何も設定をせずにリソース設定ファイル(*.res)にのみ設定を行うことで動作させることも可能である。

  • セクション
    globalグローバルパラメータの定義
    common全てのセクションに引き継がれるオプションの定義
    handlers特定のイベントに応じた処理の定義
    startupDRBD起動時のタイムアウトに関する定義
    disk物理ストレージに関する定義
    netネットワークに関する定義
    syncerDRBDの同期処理に関する定義
    redourceDRBDリソース(同期するパーティション)に関する定義

設定内容

globalセクション

usage-count yes;DRBDプロジェクトにDRBDの利用状況の統計情報を送信する設定

handlersセクション

pri-on-incon-degr自身がプライマリで、セカンダリと切断されておりかつデータに不整合があった時、指定コマンドを実行
pri-lost-after-sb自身がプライマリで、スプリットブレイン(※2)後の修復が失敗した場合に指定したコマンドを実行
local-io-errorローカルディスクのI/Oでエラーが発生した場合に指定したコマンドを実行

startupセクション

wfc-timeout起動時の相手DRBDノードとの接続タイムアウトを秒で指定。0はタイムアウトしない(デフォルト)
degr-wfc-timeout指定した秒数のタイムアウト後デグレードモードになる(相手ノードの障害時と同じ状態)
become-primary-on起動時にプライマリにするノードを指定。未指定(デフォルト)の場合、両方ともセカンダリとして起動する。

diskセクション

on-io-errorIOエラーが発生した場合の動作を設定。
disk-flushesディスクフラッシュの確認。
disk-barrierネイティブ・コマンド・キューイング(NCQ)の使用有無の指定。カーネル2.6.36以降及びRHEL6の2.6.32では、オプションを使ってはならないとの事。
md-flushesメタデバイスへのディスクフラッシュの有無。
  • on-io-error
    call-local-io-errorhandlersのlocal-io-erroeを呼び出す
    pass_on上位(MWやOS)にI/Oエラーを返す
    detach該当のデバイスを切り離し継続
  • disk-flushes
    yesディスクへの書き込まれた時点で書き込み完了とみなす
    noキャッシュに書き込まれた時点で書き込み完了とみなす

netセクション

protocol同期に使用するプロトコルタイプの定義(protocolを参照)
csums-alg対向ノードの認証を行いたい場合、HMACアルゴリズムを指定する。
verify-algverifyサブコマンドでディスク内容をオンライン照合する際、DRBDはビット単位の比較ではなく、ブロックごとのハッシュ値を計算し、対向ノードのハッシュ値と比較する。(md5、sha1、crc32cが使用可能)
after-sb-0priスプリットブレインが検出されたときに両ノードともセカンダリロールの場合に適用されるポリシーを定義
after-sb-1priスプリットブレインが検出されたときにどちらか1つのノードがプライマリロールである場合に適用されるポリシーを定義
after-sb-2priスプリットブレインが検出されたときに両ノードともプライマリロールである場合に適用されるポリシーを定義
  • protocol
    使用する同期のアルゴリズムを選択する。通常はProtocol Cが推奨。(以下、マニュアルからの転記)
    A非同期レプリケーションプロトコル。プライマリノードでのディスクへの書き込みは、自機のディスクに書き込んだ上でレプリケーションパケットを自機のTCP送信バッファに送った時点で、完了したと判断されます。システムクラッシュなどの強制的なフェイルオーバが起こると、データを紛失する可能性があります。クラッシュが原因となったフェイルオーバが起こった場合、待機系ノードのデータは整合性があると判断されますが、クラッシュ直前のアップデート内容が反映されない可能性があります。
    Bメモリ同期(半非同期)レプリケーションプロトコル。プライマリノードでのディスクへの書き込みは、自機のディスクに書き込んだ上でレプリケーションパケットが他機に届いた時点で、完了したと判断されます。通常、システムクラッシュなどの強制的なフェイルオーバでのデータ紛失は起こりません。しかし、両ノードに同時に電源障害が起こり、プライマリノードのストレージに復旧不可能な障害が起きると、プライマリ側にのみ書き込まれたデータを失う可能性があります。
    C同期レプリケーションプロトコル。プライマリノードでのディスクへの書き込みは、両ノードのディスクへの書き込みが終わった時点で完了したと判断されます。このため、どちらかのノードでデータを失っても、系全体としてのデータ紛失には直結しません。当然ながら、このプロトコルを採用した場合であっても、両ノードまたはそのストレージサブシステムに復旧できない障害が同時に起こると、データは失われます。
  • after-sb-0pri
    disconnect自動復旧は実行せず、split-brain ハンドラスクリプト(設定されている場合)を呼び出し、コネクションを切断して切断モードで続行。
    discard-younger-primary最後にプライマリロールだったホストに加えられた変更内容を破棄してロールバック。
    discard-least-changes変更が少なかったほうのホストの変更内容を破棄してロールバック。
    discard-zero-changes変更がなかったホストがある場合は、他方に加えられたすべての変更内容を適用して続行。
  • after-sb-1pri
    disconnect自動復旧は実行せず、split-brain ハンドラスクリプト(設定されている場合)を呼び出し、コネクションを切断して切断モードで続行。
    consensusafter-sb-0priで指定したものと同じ復旧ポリシーが適用。
    call-pri-lost-after-sbafter-sb-0priで指定した復旧ポリシーが適用。
    discard-secondaryクラスタからノードを強制的に削除。
  • after-sb-2pri
    disconnect自動復旧は実行せず、split-brain ハンドラスクリプト(設定されている場合)を呼び出し、コネクションを切断して切断モードで続行。
    call-pri-lost-after-sbafter-sb-0priで指定した復旧ポリシーが適用。

syncerセクション

rateDRBDのデータ同期で使用する帯域の上限値の設定(単位はbps)
after優先して同期処理するリソースの指定
verify-algディスク内容をオンライン検証するためのハッシュアルゴリズムを指定。(md5、sha1、crc32cが使用可能)

resourceセクション

設定サンプル

  • global_common.conf
    global {
            usage-count yes;
    }
    
    common {
            handlers {
            }
    
            startup {
            }
    
            disk {
            }
    
            net {
                    protocol C;
                    csums-alg sha1;
                    verify-alg sha1;
                    after-sb-0pri discard-zero-changes;
                    after-sb-1pri discard-secondary;
                    after-sb-2pri disconnect;
            }
            syncer {
                    rate 300M;
            }
    }

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS