Drbd9資料 osc発表
Transcript of Drbd9資料 osc発表
1
新しくなったDRBD 9.0
くろきひろし
2013-02
株式会社サードウェア
2
! DRBD – Distributed – 分散して – Replicated – レプリケート(同期)する – Block Device – ブロックデバイス
DRBDとは
ディスク
Host2 スケジューラ
ディスク
Network
リプリケート
Host1 スケジューラ
3
DRBDとは
! 最大4台への リアルタイムレプリケーション
ディスク ディスク
Host3 Host4
ディスク ディスク
Host1 スケジューラ
Host2 スケジューラ
Stacked スケジューラ
Stacked スケジューラ
4
DRBDとは ! ブロックデバイス・レベルで動作 ! /dev/drbdNを使ってアクセス ! 普通のデバイスと変わらない使い勝手 ! LVM、MDとの組み合わせも可能
! 使う時には状態をPrimaryにする ! Secandayのデバイスは待機中
! 多くの採用事例と実績
5
新機能の目玉.1:多ノード同期
6
多ノード同期
Primary
Secondary
Secondary
! これまで: リプリケーションは1対1 2台 (スタッキング機能で最大4台まで)
! 新機能: いっぱい・いっぱい接続できます。
7
多ノード同期 ! それぞれにビットマップ情報が必要 (create-md) ! ノードの追加や削除は自在 ! 32個の接続まで試しました ! PrimaryからSecondaryへのミラー ! メッシュ状の設定が必要
8
多ノード同期: フルメッシュ
接続の数
ノード数
1
2
9
多ノード同期: フルメッシュ
3
3
6
4
n ⋅( n − 1 ) 2
n
1
2
10
多ノード vs スタッキング
Secondary Secondary Primary
Stacked
Primary
Stacked
! 多ノードの設定は簡単になった ! アクティビティログのオーバヘッドも少ない
11
多ノード vs スタッキング
Secondary
Primary Secondary
! 多ノードの設定は簡単になった ! アクティビティログのオーバヘッドも少ない
12
バージョン毎のリソースの扱い ! 8.3 現在のバージョン ! リソースの数はデバイス(ボリューム)数と一致
! 8.4 これまでの開発版 ! リソース内に複数のデバイス(ボリューム)を管理できる
! 9.0 今後の開発版 ! 複数のデバイス(ボリューム)に加えて、 複数のノードもサポート
13
8.3 Objects
リソース
ボリューム
14
8.4 Objects
リソース
1
n
ボリューム
15
9.0 Objects
リソース コネクション
1
n
1
n
1 m
1 m
ボリューム 相⼿手のボリューム
16
drbdadm arguments
1
n
1
n
1 m
1 m drbdadm res ... drbdadm conn@res ...
drbdadm conn@res... drbdadm res/0 ...
リソース コネクション
相⼿手のボリューム ボリューム
17
設定ファイルの変更点
18
設定情報: 設定ファイル例 resource example { volume 0 {...} volume 1 {...} on alice { node-id 0; address 10.0.42.1:7001; } on bob { node-id 1; address 10.0.42.2:7002; } on rick { node-id 2; address 10.0.42.3:7003; } connection { host alice port 7001; host bob port 7002; } connection {
host rick port 7003; } connection {...} }
host bob port 7002;
19
設定情報: ノードid ! 0から31までの整数字 ! コネクション毎のメタデータの識別 ! プロトコル内でのノードの識別 ! ノードidは、DRBDがオンラインの場合には 変更できない • すべてのクラスタノードが停止している場合 • 設定ファイルとメタデータの変更ができる
20
設定情報 ! net セクション ! ... コネクションレベルの設定 ! ... リソースレベルまでに継承される コネクションレベルの設定とか
! スタッキングはしばらくサポートを 続けるけど将来は無くするつもり
21
新機能の目玉.2:自動プロモート
22
自動プロモート 8.xの場合
# drbdadm primary res リソースをPrimaryに # mount /dev/drbd0 デバイスのマウント .. 共有ディスクを使った処理 # umount /dev/drbd0 アンマウント # drbdadm secondary res Secondaryにする
23
自動プロモート 9.0の場合
# mount /dev/drbd0 デバイスのマウント .. 共有ディスクを使った処理 # umount /dev/drbd0 アンマウント
# drbdadm primary res リソースをPrimaryに
# drbdadm secondary res Secondaryにする
24
自動プロモート ! デバイスへのアクセスで自動的にPrimary状態に昇格
! 他にPrimaryのノードがない場合 ! 失敗したらアクセスできない ! アクセスが終われば自動でSecondary ! Pacemaker以外の クラスター·マネージャーでの利用が簡単に
25
新機能の目玉.3: 再同期
26
再同期
Source
Target
Target
! 1ノードから複数ノードへ同期ができる ! 一般的に初期の同期時に実行 (--force primary)
27
! 同期先の役割は相手の状況で変わる ! 一時的な障害が発生した場合など
再同期
Paused Source
Target Paused
Source
28
再同期
Primary
Secondary
Secondary
! Primaryノードが故障した時に再同期
29
! Primaryノードが故障した時に再同期 ! 生き残ったセカンダリノードの間で 最も新しいデータを調べ、差分を同期する
再同期
Primary
Secondary
Secondary Target
Source
30
新機能の目玉.4:状態レポート機能
31
状態レポート機能
! drbdsetup status ! --statistics ! --verbose ! drbdadm status ! /proc/drbd はDRBDのバージョンを表示 状態を調べる事はできません
32
実演説明 設定ファイル 3ノードの同期 自動プロモート
33
これからどうなる
34
これからどうなる (順不同、思いつくまま) ! 2ノード間の冗長化接続 ! リレー接続のサポート = メッシュ接続は必要なくなる。
! ノード間の共有ディスクのサポート ! 2つ以上のPrimaryノードサポート ! UDP multicast transportをサポート
35
ご清聴 どうもありがとうございました。
www.3ware.co.jp