🤖

DRBD

2022/06/07に公開

WEBサーバのシングルポイント

WEBサーバ複数台が同じコンテンツを利用する場合、コンテンツを共有ストレージに配置することが一般的な構成だと思う。

ただ、この構成だと共有ストレージがシングルポイントになり、障害が起きたら困る。
シングルポイントをなくして、障害に強い構成にしたい。

DRDBとは

「NFS 冗長化」などのワードをググっていたところ、「DRBD」なるものを見つけた。

DRBD(Distributed Replicated Block Device)は、ネットワークを通じてハードディスク(ブロックデバイス)をリアルタイムに複製(同時複製)するソフトウェアです。大切なデータを失わないためのバックアップや、サービスの冗長化に役立つソフトウェアとして広く使用されています。

バックアップにもなるし、冗長化にもなるとは良さそうだと思い構築しつつ勉強することに。
ただ、勉強していて分かったことは、上に書いてあることには1つ誤りがあるということだ。
DRBDは冗長化で高可用性を担保できるが、バックアップにはならない。
なぜなら、壊れたファイルも同期してしまうからだ。
なので、DRBDを使うときは高可用性が必要な場合で、バックアップは別の領域に取得しておくとよいだろう。

DRDBの構築

  1. Ubuntu 22.04にDRBD9をインストール
Ubuntu 22.04にDRBD9をインストール
add-apt-repository ppa:linbit/linbit-drbd9-stack
apt-get update
apt install -y drbd-utils drbd-dkms
  1. 再起動後にバージョン確認
reboot
modprobe drbd
cat /proc/drbd

以下のように、version: 9となっていること

version: 9.1.7 (api:2/proto:110-121)
GIT-hash: bfd2450739e3e27cfd0a2eece2cde3d94ad993ae build by root@csps-clm01, 2022-06-04 16:21:44
Transports (api:18): tcp (9.1.7)
  1. DRBDのコンフィグの設定
cd /etc/drbd.d/
vi global_common.conf
以下の通り編集
net { 内に以下を有効化
	protocol C;
}
vi r0.res
以下の通り編集
resource r0 {
	on drbd-server1 {
		device    /dev/drbd0;
		disk      /dev/sdb1;
		address   192.168.0.165:7789;
		meta-disk internal;
	}

	on drbd-server2 {
		device    /dev/drbd0;
		disk      /dev/sdb1;
		address   192.168.0.166:7789;
		meta-disk internal;
	}
}

コンフィグの反映

modprobe drbd
  1. DRBDの設定
wipefs -a /dev/sdb1

DRBDのメタデータを作成

drbdadm create-md r0

DRBDを起動

systemctl start drbd

プライマリの設定(プライマリにするサーバで実行)

drbdadm primary --force r0
  1. ステータスの確認
    DRBDのステータスの確認
drbdadm status r0

r0 role:Primary
  disk:UpToDate
  csps-clm02 role:Secondary
    replication:SyncSource peer-disk:Inconsistent done:4.66 ← 同期中

同期完了すると下記のようになる(同期は結構時間かかる)

r0 role:Primary
  disk:UpToDate
  csps-clm02 role:Secondary
    peer-disk:UpToDate
  1. フォーマット
mkfs.ext4 /dev/drbd0
  1. マウント
    プライマリでマウント
mount /dev/drbd0 /Contents

参考サイト

https://1x4x9.net/2018/08/drbd9.html
https://tech-lab.sios.jp/archives/19863
https://nkhnd.hatenablog.jp/entry/20210508/1620410916
https://ksawada.hatenablog.com/entry/2017/05/01/110545
https://knowledge4linux.blogspot.com/2012/12/drbd-84x.html
https://sky-joker.tech/2018/12/09/elk-stack-drbd-pacemaker-nfsで冗長化システムを作ってみた/#DRBD-2

Discussion