12
11

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 5 years have passed since last update.

CentOS7でDRBD9の新機能を試す

Last updated at Posted at 2015-09-30

はじめに

この記事は、CentOS7でDRBD9の環境構築の続きで、構築した環境でDRBD9の新しい機能を試す記事です。

参考

DRBD Client

  • データを読み書きするローカルストレージを割り当てていないDRBDインスタンスを追加する。
  • ストレージを割り当てていないDRBDノードをDRBD Clientと呼ぶ
  • 上で作成したクラスタにdrbd9-04、drbd9-05をDRBD Clientとして追加する
  • drbd9-04のipアドレスは10.255.10.14
  • drbd9-05のipアドレスは10.255.10.15

注意

drbdmanageを使った、DRBD Clientの利用方法は公式ページには執筆時(2015/9/30現在)載っていない(できるとは書いている)ので、公式でClientの作り方が出てきたらそちらの方を参考にした方がいいかもしれません。

前提条件

  • drbd9-04、drbd9-05はdrbdmanageによるリソースのデプロイのポートの解放まで終わっている

クラスタにストレージを持たないノードを追加する

  • addnode に -s オプションをつけるとストレージなしのノードが追加可能

drbd9-04以外のどれか1台で実行

# drbdmanage add-node drbd9-04 10.255.10.14 -s
    Operation completed successfull
    Operation completed successfully
    Host key verification failed.

    Join command for node drbd9-05:
    drbdmanage join -p 6999 10.255.10.14 3 drbd9-01 10.255.10.11 0 {SecretKey}

drbd9-04で実行

# drbdmanage join -p 6999 10.255.10.14 3 drbd9-01 10.255.10.11 0 {SecretKey}

drbd9-05でも同様に行う

ストレージを割り当てていないノードからボリュームの作成

drbd9-04で実行

# drbdmanage add-volume client 5GB --deploy 3
# drbdmanage n
        +------------------------------------------------------------------------------+
       | Name     | Pool Size | Pool Free |                              |      State |
       +------------------------------------------------------------------------------+
       | drbd9-01 |     16380 |      8740 |                              |         ok |
       | drbd9-02 |     16380 |      8740 |                              |         ok |
       | drbd9-03 |     16380 |      8740 |                              |         ok |
       | drbd9-04 |   unknown |   unknown |                              | no storage |
       | drbd9-05 |   unknown |   unknown |                              | no storage |
       +------------------------------------------------------------------------------+

# drbdmanage r
        +------------------------------------------------------------------------------+
        | Name    |                                                            | State |
        +------------------------------------------------------------------------------+
        | backups |                                                            |    ok |
        | client  |                                                            |    ok |
        +------------------------------------------------------------------------------+
  • 注意
    ストレージを割り当てていないノードからvolumeを作成すると、defaultで開けられるvolumeのポート番号が7000番からになってしまう。なのですべてのノードで新たに7000番から7100番くらいまでのポートを開けておく。

drbdmanageのバージョン0.50からはストレージが割り当ての有無に関係なくポート番号7000番から開けられます

    # firewall-cmd --add-port=7000-7100/tcp --zone=public --permanent
    # firewall-cmd --reload

ボリュームにDRBD clientとして割り当て

  • 作成したclientボリュームにdrbd9-04、drbd9-05は割り当てしていないため、割り当てる

  • assignするときに、clientオプションをつけることで、DRBD Clientとしてボリュームにアクセスできるようになる

      # drbdmanage assign client drbd9-04 --client
      # drbdmanage assign client drbd9-05 --client
    

ファイルシステム作成とマウント

  • Minorの番号はclient側から作成すると、100から昇順になる

  • drbd9-04で実行

      # drbdmanage list-volumes --groupby Size --show Port
          +------------------------------------------------------------------------------+
          | Name    | Vol ID | Size | Minor | Port |                             | State |
          +------------------------------------------------------------------------------+
          | backups |      0 | 2861 |    10 | 7700 |                             |    ok |
          | client  |      0 | 4768 |   100 | 7000 |                             |    ok |
          +------------------------------------------------------------------------------+
      # mke2fs -j /dev/drbd100
      # mkdir -p /mnt/drbd/client
      # drbdsetup status
          .drbdctrl role:Secondary
            disk:UpToDate
            drbd9-01 role:Secondary
              peer-disk:UpToDate
            drbd9-03 role:Secondary
              peer-disk:UpToDate
            drbd9-04 role:Secondary
              peer-disk:UpToDate
            drbd9-05 role:Secondary
              peer-disk:UpToDate
    
          backups role:Secondary
            disk:UpToDate
            drbd9-01 role:Primary
              peer-disk:UpToDate
            drbd9-03 role:Secondary
              peer-disk:UpToDate
    
          client role:Secondary
            disk:UpToDate
            drbd9-01 role:Secondary
              peer-disk:UpToDate
            drbd9-03 role:Secondary
              peer-disk:UpToDate
            drbd9-04 role:Secondary
              peer-disk:Diskless
            drbd9-05 role:Secondary
              peer-disk:Diskless
      # mount /dev/drbd100 /mnt/drbd/client
    

データの再配置

  • DRBD9ではスケーラビリティを保障するための、データ再配置機能がある

  • 今回の例では、drbd9-01,02,03のノードがありdrbd clientとしてdrbd9-05がある。

  • すでに、drbd9-01,02,03にはボリュームが作成されている。

  • ここでのコマンド実行は指定がない限りdrbd9-05で行う。

      # drbdmanage list-volumes --groupby Size --show Port
          +------------------------------------------------------------------------------+
          | Name    | Vol ID | Size | Minor | Port |                             | State |
          +------------------------------------------------------------------------------+
          | db      |      0 | 3814 |   102 | 7002 |                             |    ok |
          | backups |      0 | 4768 |   100 | 7000 |                             |    ok |
          | app     |      0 | 6675 |   101 | 7001 |                             |    ok |
          +------------------------------------------------------------------------------+
      # drbdmanage list-assignments
          +------------------------------------------------------------------------------+
          | Node     | Resource | Vol ID |                                       | State |
          +------------------------------------------------------------------------------+
          | drbd9-01 | backups  |      * |                                       |    ok |
          | drbd9-01 | db       |      * |                                       |    ok |
          | drbd9-02 | app      |      * |                                       |    ok |
          | drbd9-02 | backups  |      * |                                       |    ok |
          | drbd9-02 | db       |      * |                                       |    ok |
          | drbd9-03 | app      |      * |                                       |    ok |
          | drbd9-03 | backups  |      * |                                       |    ok |
          +------------------------------------------------------------------------------+
    
  • list-assignmentsオプションは、各ノードにどのリソースが割り当てられているか一覧表示するコマンドである。
  • list-assignmentsオプションは、省略表記aを使用することができる。
  • リソースは上表のように割り当てされている

      # drbdmanage n
          +------------------------------------------------------------------------------+
          | Name     | Pool Size | Pool Free |                              |      State |
          +------------------------------------------------------------------------------+
          | drbd9-01 |     16380 |      7788 |                              |         ok |
          | drbd9-02 |     16380 |      1108 |                              |         ok |
          | drbd9-03 |     16380 |      4924 |                              |         ok |
          | drbd9-05 |   unknown |   unknown |                              | no storage |
          +------------------------------------------------------------------------------+
    
  • ここにdrbd9-04というノードを新たにクラスタへ追加する

      # drbdmanage add-node drbd9-04 10.255.10.14
    
  • drbd9-04で

      # drbdmanage join -p 6999 10.255.10.14 3 drbd9-01 10.255.10.11 0 SecretKey
    
  • appとbackupsのリソースをdrbd9-04へ移動させる

      # drbdmanage n
          +------------------------------------------------------------------------------+
          | Name     | Pool Size | Pool Free |                              |      State |
          +------------------------------------------------------------------------------+
          | drbd9-01 |     16380 |      7788 |                              |         ok |
          | drbd9-02 |     16380 |      1108 |                              |         ok |
          | drbd9-03 |     16380 |      4924 |                              |         ok |
          | drbd9-04 |     16380 |     16376 |                              |         ok |
          | drbd9-05 |   unknown |   unknown |                              | no storage |
          +------------------------------------------------------------------------------+
      # drbdmanage assign-resource backups drbd9-04
      # drbdmanage assign-resource app drbd9-04
      # drbdmanage deploy backups 3
      # drbdmanage deploy app 2
      # drbdmanage n
          +------------------------------------------------------------------------------+
          | Name     | Pool Size | Pool Free |                              |      State |
          +------------------------------------------------------------------------------+
          | drbd9-01 |     16380 |      7788 |                              |         ok |
          | drbd9-02 |     16380 |      7788 |                              |         ok |
          | drbd9-03 |     16380 |      9696 |                              |         ok |
          | drbd9-04 |     16380 |      4924 |                              |         ok |
          | drbd9-05 |   unknown |   unknown |                              | no storage |
          +------------------------------------------------------------------------------+
      # drbdmanage a
          +------------------------------------------------------------------------------+
          | Node     | Resource | Vol ID |                                       | State |
          +------------------------------------------------------------------------------+
          | drbd9-01 | backups  |      * |                                       |    ok |
          | drbd9-01 | db       |      * |                                       |    ok |
          | drbd9-02 | backups  |      * |                                       |    ok |
          | drbd9-02 | db       |      * |                                       |    ok |
          | drbd9-03 | app      |      * |                                       |    ok |
          | drbd9-04 | app      |      * |                                       |    ok |
          | drbd9-04 | backups  |      * |                                       |    ok |
          +------------------------------------------------------------------------------+
    
  • drbdmanageを用いて、明示的にリソースを動かす方法(drbd9-01のbackupをdrbd9-04に動かすみたいな)は無い?

  • 今のところ、新しくassignしたノードが優先的にdeployされているようだ。

    • 空きストレージ量を考慮して行っているのではない?
    • 上記の状態から、dbボリュームもdrbd9-04へassignした後deployしたところ、04へdbが移っていることを確認した。

終わりに

まだ、drbdmanageを使った、DRBD client、データの再配置の公式な手順が示されていないのですが、なんとなく新機能の利用方法がわかった気がします。

12
11
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
12
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?