DRBD · 3 min read · Jan 30, 2026

DRBD 8.3 第三ノードのレプリケーションと Debian Etch

DRBD 8.3 第三ノードのレプリケーションと Debian Etch

DRBD 8.3 + Debian Etch のインストールとセットアップガイド

第三ノードのセットアップ

by Brian Hellman

最近リリースされた DRBD 8.3 には、第三ノード 機能が自由に利用できるコンポーネントとして含まれています。この文書では、標準の Debian Etch インストールでの第三ノードのセットアップの基本を説明します。このチュートリアルの最後には、SAN、iSCSI ターゲット、ファイルサーバー、またはデータベースサーバーとして利用できる DRBD デバイスが作成されます。

注: LINBIT サポートの顧客はセクション 1 をスキップし、パッケージリポジトリを利用できます。

LINBIT は第三ノードソリューションをホストしています。詳細については、[email protected] までお問い合わせください。

前書き:

セットアップは次のようになります:

  • 三つのサーバー: alpha, bravo, foxtrot
  • alpha と bravo はプライマリおよびセカンダリのローカルノード
  • foxtrot はリモートネットワーク上の第三ノード
  • alpha と bravo は外部接続用に 192.168.1.x ネットワーク (eth0) にインターフェースを持っています。
  • alpha と bravo にはレプリケーション用に 172.16.6.10 と .20 を使用するクロスオーバーリンク (eth1) があります。
  • Heartbeat は、地理的に多様な場所にあるディザスタリカバリノードと通信するために 192.168.5.2 の仮想 IP を提供します。

セクション 1: ソースのインストール

これらの手順は、3 つのノードそれぞれで実行する必要があります。

前提条件:

  • make
  • gcc
  • glibc 開発ライブラリ
  • flex スキャナー生成器
  • 現在のカーネルのヘッダー

特権ユーザーとしてコマンドラインに次のコマンドを入力して、これらの依存関係を満たします:

apt-get install make gcc libc6 flex linux-headers-uname -r libc6-dev linux-kernel-headers

依存関係がインストールされたら、DRBD をダウンロードします。最新バージョンは常に http://oss.linbit.com/drbd/ から入手できます。現在のバージョンは 8.3 です。

cd /usr/src/
wget http://oss.linbit.com/drbd/8.3/drbd-8.3.0.tar.gz

ダウンロードが完了したら:

  • DRBD を解凍します。
  • ソースディレクトリに移動します。
  • ソースをコンパイルします。
  • DRBD をインストールします。

tar -xzvf drbd-8.3.0.tar.gz
cd /usr/src/drbd-8.3.0/
make clean all
make install

モジュールをロードして確認します:

modprobe drbd
cat /proc/drbd

version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by root@alpha, 2009-02-05 10:36:11

この手順が 3 つのノードそれぞれで完了したら、次のセクションに進みます。

セクション 2: Heartbeat の設定

第三ノードのセットアップには、DRBD の上に DRBD をスタックする必要があります。第三ノードが接続するための仮想 IP が必要です。これには、シンプルな Heartbeat v1 設定を設定します。このセクションは alpha と bravo のみで実行されます。

Heartbeat をインストールします:

apt-get install heartbeat

authkeys ファイルを編集します:

vi /etc/ha.d/authkeys

auth 1
1 sha1 yoursupersecretpasswordhere

ファイルが作成されたら、ファイルの権限を変更します。このステップを実行しないと、Heartbeat は起動しません。

chmod 600 /etc/ha.d/authkeys

authkeys ファイルを bravo にコピーします:

scp /etc/ha.d/authkeys bravo:/etc/ha.d/

ha.cf ファイルを編集します:

vi /etc/ha.d/ha.cf
debugfile /var/log/ha-debug
    logfile /var/log/ha-log
    logfacility     local0
    keepalive 1
    deadtime 10
    warntime 5
    initdead 60
    udpport 694
    ucast eth0 192.168.1.10
    ucast eth0 192.168.1.20
    auto_failback off
    node alpha
    node bravo

ha.cf ファイルを bravo にコピーします:

scp /etc/ha.d/ha.cf bravo:/etc/ha.d/

haresources ファイルを編集します。ここで作成された IP は、第三ノードが参照する IP になります。

vi /etc/ha.d/haresources
alpha IPaddr::192.168.5.2/24/eth0

haresources ファイルを bravo にコピーします:

scp /etc/ha.d/haresources bravo:/etc/ha.d/

両方のサーバーで Heartbeat サービスを起動して、仮想 IP を立ち上げます:

alpha:/# /etc/init.d/heartbeat start
bravo:/# /etc/init.d/heartbeat start

Heartbeat は新しいインターフェース (eth0:0) を立ち上げます。

注: Heartbeat がインターフェースを立ち上げるのに最大 1 分かかる場合があります。

alpha:/# ifconfig eth0:0

eth0:0 Link encap:Ethernet HWaddr 00:08:C7:DB:01:CC
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

セクション 3: DRBD の設定

DRBD の設定は drbd.conf ファイルを介して行います。これはすべてのノード (alpha, bravo, foxtrot) で同じである必要があります。使用カウントが yes に設定されていることに注意してください。これは、DRBD をインストールしたことを Linbit に通知します。個人情報は収集されません。詳細については、こちらのページをご覧ください:

global { usage-count yes; }

resource data-lower {
  protocol C;
  net {
    shared-secret "LINBIT";
  }
syncer {
    rate 12M;
}

  on alpha {
    device     /dev/drbd1;
    disk       /dev/hdb1;
    address    172.16.6.10:7788;
    meta-disk  internal;
  }

  on bravo {
    device    /dev/drbd1;
    disk      /dev/hdd1;
    address   172.16.6.20:7788;
    meta-disk internal;
  }
}

  resource data-upper {
  protocol A;
  syncer {
    after data-lower;
    rate 12M;
    al-extents 513;
  }
  net {
        shared-secret "LINBIT";
  }
  stacked-on-top-of data-lower {
        device /dev/drbd3;
        address 192.168.5.2:7788; # Heartbeat によって提供された IP
        }

  on foxtrot {
    device     /dev/drbd3;
    disk       /dev/sdb1;
    address    192.168.5.3:7788; # バックアップノードのパブリック IP
    meta-disk  internal;
  }
}

セクション 4: DRBD デバイスの準備

設定が整ったので、alpha と bravo でメタデータを作成します。

alpha:/usr/src/drbd-8.3.0# drbdadm create-md data-lower

メタデータを書き込み中…
アクティビティログを初期化中
ビットマップは初期化されていません
新しい drbd メタデータブロックが正常に作成されました。

bravo:/usr/src/drbd-8.3.0# drbdadm create-md data-lower

メタデータを書き込み中…
アクティビティログを初期化中
ビットマップは初期化されていません
新しい drbd メタデータブロックが正常に作成されました。

次に、alpha と bravo で DRBD を起動します:

alpha:/usr/src/drbd-8.3.0# /etc/init.d/drbd start
bravo:/usr/src/drbd-8.3.0# /etc/init.d/drbd start

下位レベルの DRBD デバイスが接続されていることを確認します:

cat /proc/drbd

version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by root@alpha, 2009-02-05 10:36:11
0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r—
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:19530844

alpha にプライマリノードになるように指示します:

注: コマンドが示すように、これは bravo のデータを上書きします。今はお気に入りの飲み物を取りに行く良い時期です。

alpha:/# drbdadm – –overwrite-data-of-peer primary data-lower
alpha:/# cat /proc/drbd

version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by root@alpha, 2009-02-05 10:36:11
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r—
ns:3088464 nr:0 dw:0 dr:3089408 al:0 bm:188 lo:23 pe:6 ua:53 ap:0 ep:1 wo:b oos:16442556
[==>……………..] sync’ed: 15.9% (16057/19073)M
finish: 0:16:30 speed: 16,512 (8,276) K/sec

データの同期が完了したら、alpha で data-upper のメタデータを作成し、次に foxtrot で作成します。

リソースは data-upper であり、–stacked オプションは alpha のみで有効です。

alpha:~# drbdadm –stacked create-md data-upper

メタデータを書き込み中…
アクティビティログを初期化中
ビットマップは初期化されていません
新しい drbd メタデータブロックが正常に作成されました。
成功

foxtrot:/usr/src/drbd-8.3.0# drbdadm create-md data-upper

メタデータを書き込み中…
アクティビティログを初期化中
ビットマップは初期化されていません
新しい drbd メタデータブロックが正常に作成されました。

スタックされたリソースを立ち上げ、次に alpha を data-upper のプライマリにします:

alpha:/# drbdadm --stacked adjust data-upper

foxtrot:~# drbdadm adjust data-upper
foxtrot:~# cat /proc/drbd

version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by root@foxtrot, 2009-02-02 10:28:37
1: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent A r—
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:19530208

alpha:~# drbdadm –stacked – –overwrite-data-of-peer primary data-upper
alpha:~# cat /proc/drbd

version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by root@alpha, 2009-02-05 10:36:11
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r—
ns:19532532 nr:0 dw:1688 dr:34046020 al:1 bm:1196 lo:156 pe:0 ua:0 ap:156 ep:1 wo:b oos:0
1: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent A r—
ns:14512132 nr:0 dw:0 dr:14512676 al:0 bm:885 lo:156 pe:32 ua:292 ap:0 ep:1 wo:b oos:5018200
[=============>……] sync’ed: 74.4% (4900/19072)M
finish: 0:07:06 speed: 11,776 (10,992) K/sec

再び飲み物の時間です!

同期が完了したら、/dev/drbd3 を介して DRBD ブロックデバイスにアクセスします。これにより、両方のローカルノードとリモートの第三ノードに書き込まれます。Heartbeat の設定では、/dev/drbd3 デバイスを立ち上げるために “drbdupper” スクリプトを使用します。楽しんでください!

DRBD® と LINBIT® は、LINBIT, オーストリアの登録商標です。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。