【2023年05月版】Ubuntu22.04 上での DRBD によるストレージレプリケーション ホスト追加編

# はじめに

- DRBDで対象ホストを追加したい・・・

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143127/e2708e2c-99b9-7e8f-5d62-e976cabbe37c.png)

まとめはこちら

[【2023年05月版】Ubuntu22.04 上での DRBD によるストレージレプリケーション](https://qiita.com/nouernet/items/31536b9f63837b0c9001)

# 前提条件

- 3台の ubuntu 22.04
- 2台の ubuntu 22.04 で、すでにDRBD稼働中、1台を追加
- Primary を node1 、Secndary を node2 とする
- 今回追加する Secondary を node3 とする
- Primary/Secondary 共に /dev/sda をシステム、/dev/sdb, /dev/sdc をストレージレプリケーションとして利用
- node1 の IPアドレスは 192.168.100.101 とする
- node2 の IPアドレスは 192.168.100.102 とする
- node2 の IPアドレスは 192.168.100.103 とする
- 既存デバイスは、/dev/drbd0, /dev/drbd1 とする
- 既存のマウント先は /export, /export2 とする

# 手順

## 既存の node1, node2
- 設定の追加
- 設定の読み込み

## 新規の node3
- DRBDのインストール
- 設定の作成
- メタデータの作成
- DRBD の開始

## 既存の node1
- Primary の決定　〜　自動的に同期

# 作業
## 既存の node1, node2 で作業

### 設定の追加
#### 既存の設定ファイル

```/etc/drbd.d/global_common.conf
global {
    usage-count no;
}
common {
    net {
        protocol C;
    }
}
```

```/etc/drbd.d/r0.res
resource r0 {
    volume 0 {
      device /dev/drbd0;
      disk /dev/sdb;
      meta-disk internal;
    }
    volume 1 {
      device /dev/drbd1;
      disk /dev/sdc;
      meta-disk internal;
    }
    on node1 {
        address 192.168.100.101:7789;
    }
    on node2 {
        address 192.168.100.102:7799;
    }
}
```

#### ホストを追加した設定ファイル

```/etc/drbd.d/r0.res
resource r0 {
    volume 0 {
      device /dev/drbd0;
      disk /dev/sdb;
      meta-disk internal;
    }
    volume 1 {
      device /dev/drbd1;
      disk /dev/sdc;
      meta-disk internal;
    }
    on node1 {
        node-id 0;
        address 192.168.100.101:7789;
    }
    on node2 {
        node-id 1;
        address 192.168.100.102:7789;
    }
    on node3 {
        node-id 2;
        address 192.168.100.103:7809;
    }
    connection {
        host node1;
        host node2;
    }
    connection {
        host node1;
        host node3;
    }
    connection {
        host node2;
        host node3;
    }

}
```

### DRBD の設定ファイル変更の読み込み

- Primary/Secondary 共に

```terminal
$ sudo drbdadm adjust r0
```

## 新規の node3 で作業

### DRBD のインストール

```terminal
$ 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.2 (api:2/proto:86-121)
GIT-hash: 8435da3ec2a0a70dee0fedf354276d6f1c6ba708 build by root@drbd1, 2023-05-26 13:01:35
Transports (api:18): tcp (9.2.2)
```

### 設定の作成

```terminal
$ sudo tee /etc/drbd.d/global_common.conf <<EOF > /dev/null 
global {
    usage-count no;
}
common {
    net {
        protocol C;
    }
}
EOF
```

```terminal
$ sudo tee /etc/drbd.d/r0.res <<EOF > /dev/null 
resource r0 {
    volume 0 {
      device /dev/drbd0;
      disk /dev/sdb;
      meta-disk internal;
    }
    volume 1 {
      device /dev/drbd1;
      disk /dev/sdc;
      meta-disk internal;
    }
    on node1 {
        node-id 0;
        address 192.168.100.101:7789;
    }
    on node2 {
        node-id 1;
        address 192.168.100.102:7789;
    }
    on node3 {
        node-id 2;
        address 192.168.100.103:7809;
    }
    connection {
        host node1;
        host node2;
    }
    connection {
        host node1;
        host node3;
    }
    connection {
        host node2;
        host node3;
    }

}
EOF
```

### メタデータの作成

```terminal
$ sudo drbdadm create-md r0
```

### DRBDの開始

```terminal
$ sudo drbdadm up r0
$ sudo drbdadm status r0
```

## 既存の node1 で作業

### Primary 決定

```terminal
$ sudo drbdadm primary r0
$ sudo drbdadm status r0
$ sudo mount /dev/drbd0 /export
$ sudo mount /dev/drbd0 /export2
```

# さいごに

- かんたんでしたね

# 参考

[Ubuntu 22.04 man page drbdadm](https://manpages.ubuntu.com/manpages/jammy/ja/man8/drbdadm.8.html)
[Ubuntu 22.04 man page drbd](https://manpages.ubuntu.com/manpages/jammy/ja/man8/drbd.8.html)

[DRBD9 ユーザーズガイド](https://linbit.com/drbd-user-guide/drbd-guide-9_0-ja/)
[LINSTOR ユーザーズガイド](https://linbit.com/drbd-user-guide/linstor-guide-1_0-ja/)