1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【2022年11月版】Ubuntu22.04 上での DRBD によるストレージレプリケーション

Last updated at Posted at 2022-11-21

はじめに

  • 絶対に1ミリでもなくしてはいけないデータを手軽に管理したい
  • 共有ディスクによるレプリケーションはお高い・・・ソフトウェアでできないものか
  • オンプレだけでなく、AWS上でもレプリケーションしたい
  • EBS利用である程度保証されるが、A-Zをまたいでストレージレプリケーションしたい
  • そうだ DRBD しよう

image.png

前提条件

  • 2台の ubuntu 22.04
  • Primary を node1、Secndary を node2 とする
  • Primary/Secondary 共に /dev/sda をシステム、/dev/sdb をストレージレプリケーションとして利用
  • node1 の IPアドレスは 192.168.100.101 とする
  • node2 の IPアドレスは 192.168.100.102 とする
  • マウント先は /export とする

物理ボリューム、ボリュームグループと論理ボリュームの作成

# 物理ボリュームの作成
$ sudo pvcreate /dev/sdb
# ボリュームグループ vg1 の作成 
$ sudo vgcreate vg1 /dev/sdb
# vg1 上に論理ボリューム(100GByte)の作成
$ sudo lvgreate -n lv1 --size 100G vg1

DRBD のインストール

$ sudo add-apt-repository ppa:linbit/linbit-drbd9-stack
$ sudo apt update
$ sudo apt install drbd-utils drbd-dkms
$ sudo modprobe drbd
$ cat /proc/drbd
version: 9.2.1 (api:2/proto:86-121)
GIT-hash: ######################################## build by #########, 2022-11-20 07:38:13
Transports (api:18):

hosts の設定

  • Primary/Secondary 共に
$ sudo tee --append /etc/hosts <<EOF > /dev/null
192.168.100.101 node1
192.168.100.102 node2
EOF

DRBD の設定ファイルの作成

  • Primary/Secondary 共に
$ sudo tee /etc/drbd.d/r0.res <<EOF > /dev/null 
resource r0 {
  options
  {
    quorum majority;
    on-no-quorum io-error;
  }

  volume 0
  {
    disk        /dev/vg1/lv1;
    meta-disk   internal;
    device      minor 0;
  }

  on node1
  {
    node-id 0;
  }

  on node2
  {
    node-id 1;
  }

  connection
  {
    net
    {
      protocol C;
    }
    host node1 address ipv4 192.168.100.101:7788;
    host node2 address ipv4 192.168.100.102:7788;
  }

}
EOF

DRBD の起動

  • Primary/Secondary 共に
$ sudo drbdadm up r0
$ sudo drbdadm status r0

Primary 決定

  • Primary だけで
$ sudo drbdadm primary r0
$ sudo drbdadm status r0
$ sudo mount /dev/drbd0 /export

Primary -> Secondary 、 Secondary -> Primary

  • 元 Primary だけで
$ sudo umount /export
$ sudo drbdadm secondary r0
$ sudo drbdadm status r0
  • 元 Secondary だけで
$ sudo drbdadm primary r0
$ sudo drbdadm status r0
$ sudo mount /dev/drbd0 /export

再起動後の DRBD の起動

  • 再起動した側の Primary/Secondary 共に
$ sudo drbdadm up r0
$ sudo drbdadm status r0

Primary が逝った、 Secondary を強制的に Primaryに

  • Secondary で
$ sudo drbdadm --force primary r0
$ sudo drbdadm status r0
$ sudo mount /dev/drbd0 /export
  • 元 Primary が復帰し、up した時点で自動的に Secondary となる

再フォーマットしても反映されるかテスト

  • node1(Primary) で /export/abcd/test1.txt を作成
  • node1(Primary) を降格して Secondary に
$ cd /export
$ mkdir abcd
$ cd abcd
$ date >> test1.txt
$ cd
$ sudo umount /export
$ sudo drbdadm secondary r0
$ sudo drbdadm status r0
  • node2(Secondary) を 昇格して Primary に
  • node2(Primary) で /export/abcd/test1.txt を確認
$ sudo drbdadm primary r0
$ sudo drbdadm status r0
$ sudo mount /dev/drbd0 /export
$ cd /export
$ cd abcd
$ cat test1.txt
  • node2(Primary) で ファイルシステムをフォーマット
  • dd で先頭を飛ばしてフォーマットできるようにする
  • abcd ディレクトリがなくなっていることを確認
  • /export/1111/test2.txt を作成
  • node2(Primary) を Secondary に
$ cd
$ sudo umount /export
$ sudo dd if=/dev/zero of=/dev/drbd0 bs=1M count=1
$ sudo mkfs -t ext4 /dev/drbd0
$ sudo mount /dev/drbd0 /export
$ cd /export
$ cd abcd
-bash: cd: abcd: No such file or directory
$ mkdir 1111
$ cd 1111
$ date >> test2.txt
$ sudo umount /export
$ cd
$ sudo drbdadm secondary r0
$ sudo drbdadm status r0
  • node1(Secondary) を 昇格して Primary に
  • node1(Primary) で /export/1111/test2.txt を確認
$ sudo drbdadm primary r0
$ sudo drbdadm status r0
$ sudo mount /dev/drbd0 /export
$ cd /export
$ cd 1111
$ cat test2.txt

さいごに

  • かんたんでしたね

参考

Ubuntu 22.04 man page drbdadm
Ubuntu 22.04 man page drbd

DRBD9 ユーザーズガイド
LINSTOR ユーザーズガイド

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?