リアルタイムレプリケーションツール drbd ... -...

39
リアルタイムレプリケーションツール DRBD アドバンスド・チュートリアル 株式会社サードウェア 久保 元治 (LINBIT認定コンサルタント)

Upload: others

Post on 04-Jan-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

リアルタイムレプリケーションツール

DRBDアドバンスド・チュートリアル

株式会社サードウェア

久保 元治(LINBIT認定コンサルタント)

Page 2: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

アジェンダ

• DRBDのおさらい

• スプリットブレインの防止・検出・復旧

• データ整合性の検証

• 3ノード、4ノードへの拡張

Page 3: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

DRBDのおさらい

• ブロックデバイスをレプリケート– ブロック単位

– コピー元(primary)とコピー先(secondary)

アプリケーション

ファイルシステム

DRBD DRBDTCP/IP TCP/IP

Page 4: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

DRBDのおさらい

• 各種障害に対するデータ保護– 片肺運転と再同期

– ストレージ交換後のフル同期

– データ整合性の検証

– スプリットブレインの防止・検出・復旧

Page 5: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

DRBDのおさらい

• HAクラスタ– Pacemaker + Heartbeat (Corosync)

• バックアップ– LVMスナップショットと併用など

• 災害対策– 遠隔地へのリアルタイムバックアップ

– アクセラレータとしてDRBD Proxy

Page 6: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

データ書き込み

プライマリディスクブロック

メタデータ

DRBDのおさらい

0 0 0 1

セカンダリディスクブロック

メタデータ0 0 0 0

正常動作時

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Page 7: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

データ複製

プライマリディスクブロック

メタデータ

DRBDのおさらい

0 0 0 1

セカンダリディスクブロック

メタデータ0 0 0 0

正常動作時

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Page 8: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

完了通知

プライマリディスクブロック

メタデータ

DRBDのおさらい

0 0 0 1

セカンダリディスクブロック

メタデータ0 0 0 0

正常動作時

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Page 9: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

完了通知

プライマリディスクブロック

メタデータ

DRBDのおさらい

0 0 0

セカンダリディスクブロック

メタデータ0 0 0 0

正常動作時

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0

Page 10: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

データ書き込み

プライマリディスクブロック

メタデータ

DRBDのおさらい

0 0 0 1

セカンダリ(停止)

ディスクブロック

メタデータ0 0 0 0

セカンダリ停止

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Page 11: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

完了通知

プライマリディスクブロック

メタデータ

DRBDのおさらい

0 0 0 1

セカンダリ(停止)

ディスクブロック

メタデータ0 0 0 0

セカンダリ停止

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Page 12: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

データ同期(バックグラウンド)

データ書き込み(フォアグラウンド)

プライマリディスクブロック

メタデータ

DRBDのおさらい

0 0 0 1

セカンダリ ディスクブロック

メタデータ0 0 0 0

セカンダリ回復

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

1

Page 13: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

データ複製完了通知(バックグラウンド)

プライマリディスクブロック

メタデータ

DRBDのおさらい

0 0 0

セカンダリ ディスクブロック

メタデータ0 0 0 0

セカンダリ回復

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

10

Page 14: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

完了通知(バックグラウンド)

プライマリディスクブロック

メタデータ

DRBDのおさらい

0 0 0

セカンダリ ディスクブロック

メタデータ0 0 0 0

セカンダリ回復

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

10

Page 15: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

完了通知(バックグラウンド)

プライマリディスクブロック

メタデータ

DRBDのおさらい

0 0 0

セカンダリ ディスクブロック

メタデータ0 0 0 0

セカンダリ回復

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0

Page 16: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

スプリットブレイン

• DRBDは両方がプライマリになることを許さない– デュアルプライマリモードは除く

– 双方が正常に通信できている場合のみ

• 通信が途絶えると– セカンダリはプライマリに昇格できる

• スプリットブレイン発生!– 各ノードに別々のデータを書き込める

Page 17: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

dopd

• スプリットブレイン発生を抑止

• Heartbeatと組み合わせる– drbd-peer-outdaterハンドラ

– fencing resource-only

Page 18: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

64ビットOSでは/usr/lib64ディレクトリを指定

64ビットOSでは/usr/lib64ディレクトリを指定

dopd

• /etc/ha.d/ha.cf

• drbd.conf

respawn hacluster /usr/lib/heartbeat/dopdapiauth dopd gid=haclient uid=hacluster

resource resource { handlers { outdate-peer “/usr/lib/heartbeat/drbd-peer-outdater -t 5”; ..... } disk { fencing resource-only; .... } ....}

Page 19: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

dopd

DRBD(primary)

eth2

eth0

eth1

eth2

eth1

eth0

Heartbeat

Pacemaker

アプリケーション

DRBD(secondary)

Heartbeat

Pacemaker

アプリケーション

drbd-peer-outdater

dopd

Page 20: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

dopd

• Heartbeat通信経路の冗長化が必須(シリアル回線もOK、これを推奨)

• DRBD通信経路が途絶えると– drbd-peer-outdaterがdoptdにシグナル送信

– セカンダリ側がds: Outdatedに変わる

– Outdatedだとプライマリになれない

• DRBD通信経路が回復すると– 自動的にOutdatedは解除される

Page 21: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

スプリットブレインの検出

• メタデータのGI (世代識別子)– ノード間の接続/切断履歴を記録

– 過去にスプリットブレインが生じたことを確実に検出できる

Page 22: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

スプリットブレインになったら

• DRBDは相手との接続を拒否– cs:StandAloneまたはcs:WFConnection

• スプリットブレイン状態の解除が必要– 2ノードの状態変化履歴や

– 2ノードのデータ状態にもとづいて

– どちらかのノードのデータを修復

– 他方のノードのデータを破棄

Page 23: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

discard-my-data

• データを破棄するノードで

• 他ノードで

• DRBD間の接続が回復し、データ同期が始まる

drbdadm -- --discard-my-data connect <リソース>drbdadm -- --discard-my-data connect <リソース>

drbdadm disconnect <リソース>drbdadm connect <リソース>

Page 24: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

discard-my-data

ノードA

ノードB

0 1 0 0 1 0 0 1 1 0 0 0

0 0 0 1 1 0 0 0 1 1 0 0

0 1 0 1 1 0 0 1 1 1 0 0

OR

再同期対象ブロック

Page 25: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

データ整合性

• データ整合性に疑いが生じた場合– ネットワークトラブルがあった

– 間違って下位ブロックデバイスをいじった

– データ整合性の保証が必要なアプリケーション

Page 26: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

drbdadm verify

• DRBD 8.2.5から

• バックグラウンドで全ブロックを照合– verify-algが必要

– カーネルのダイジェストアルゴリズムを指定(md5、sha1、crc32cなど)

• 照合結果はsyslogに表示される

Page 27: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

drbdadm verify

• データ不整合が見つかったら– drbdadm disconnect、drbdadm connect– 再接続時にバックグラウンドで同期しなおす

Page 28: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

3ノードレプリケーション

• DRBD 8.3.0から

• DRBDをスタックする

DRBD(primary)

DRBD(secondary)

DRBD(primary)

DRBD(secondary)

Page 29: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

3ノードレプリケーション

• 下位DRBD– HAクラスタの両ノードで動作

• 上位DRBD– 下位プライマリDRBDの上で動作

– HAクラスタのリソースとして登録、実行

Page 30: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

drbd.conf

resource r0 { protocol C; .... on node1 { device /dev/drbd0; disk /dev/sda5; address 10.0.0.1:7788; meta-disk internal; } on node2 { device /dev/drbd0; disk /dev/sda5; address 10.0.0.2:7788; meta-disk internal; }}

resource r0U { protocol A; .... stacked-on-top-of r0 { device /dev/drbd10; address 222.22.2.2:7778; } on node3 { device /dev/drbd10; disk /dev/vg00/lv00; meta-disk internal; }}

Page 31: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

3ノードレプリケーション

DRBD

DRBD

DRBD

DRBD

DRBD

DRBD

DRBD

DRBD

DRBDDRBD

DRBD DRBD

クラスタとバックアップ

バックアップサーバからデータをリストア

クラスタとバックアップ(フェールオーバ)

Page 32: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

おまけ

DRBDを使ってバックアップするのに

Page 33: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

おまけ

LVMスナップショットとの併用がお勧め

だと

Page 34: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

おまけ

言ってきました。

Page 35: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

おまけ

朗報です!!朗報です!!

Page 36: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

おまけ

もっといい方法がありました

Page 37: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

おまけ

• --discard-my-dataをうまく活用

• セカンダリノードをdisconnect• セカンダリノードをprimaryに変更

(意図的にスプリットブレイン状態にする)• バックアップを実行

• セカンダリノードをsecondaryに戻す

• --discard-my-data付きで再接続

Page 38: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

おまけ

ただし

Page 39: リアルタイムレプリケーションツール DRBD ... - …linux-ha.osdn.jp/wp/wp-content/uploads/297249828379edfdf...スプリットブレインになったら • DRBDは相手との接続を拒否

おまけ

• /dev/drbdn経由でアクセスすることは必須です。

• dopdは使えません。

• バックアップ中、プライマリサーバのデータが単一障害点になります。

• 3ノード構成の3台目で使うのに向いたソリューションです。