LoginSignup
7
7

More than 5 years have passed since last update.

OpenStack LIBERTY + DRBD9 で出来る事

Last updated at Posted at 2015-12-24

OpenStack LIBERTY で DRBD Cinder Volume Driver 事始め、では簡単に少しだけ動作確認を行った。もう少し動作を確認するためエンタープライズ構成のミニチュアを作った。
DRBD9 のための Cinder Volume Driver のできる範囲がだいたい確認できたので以下に記す。

環境

  • OpenStack LIBERTY RDO allinone
    • OpenStack Controller , Compute , Network
    • Cinder-Volume
    • DRBD Primary Node
    • 192.168.0.3
  • DRBD9 Node1
    • DRBD Secondary
    • 192.168.0.21
    • sdb(10GB), sdc(10GB) ... VG(drbdpool) for DRBD Volume
    • sdd ... VG(thinvg) for ThinPoolLV
  • DRBD9 Node2
    • DRBD Secondary
    • 192.168.0.21
    • sdb(10GB), sdc(10GB) ... VG(drbdpool) for DRBD Volume
    • sdd ... VG(thinvg) for ThinPoolLV

qitta-2.jpg

DRBD バージョン

  • drbd-8.9.4-1.el7.x86_64
  • drbdmanage-0.50-1.noarch
  • kmod-drbd-9.0.0_3.10.0_229.7.2-3.el7.x86_64

    結論として確認できたこと

  • Cinder からのボリューム作成・Novaインスタンスへのアタッチ

  • Cinder からのボリューム削除・Novaインスタンスからのデタッチ

  • Cinder スナップショット作成

  • Cinder スナップショットからのボリューム作成

  • Cinder スナップショット削除

スナップショット利用時の注意点

ストレージプラグイン

スナップショットを実行した場合、DRDB と連携するわけだが、DRBD 側でスナップショットを利用する場合の条件をみたしている場合がある。通常の LVM ではなく ThinPoolLV を作っておく必要がある。これは DRBD からみると Storage-Plugin として ThinLV を適用する必要がある。

スナップショットの作成先

スナップショットが作成されるのはその時に、DRBD Primary のノードだけである。ボリュームレプリケーションされている他のノードには作成されない。ただし、スナップショットからボリュームを作成する場合、そのボリュームは同じレプリケーションカウントを持つボリュームとなる。つまりミラーリングされたボリュームが作られる。

できなかったこと(できておくべき事)

  • Cinder ボリュームの拡張機能には未対応(Cinder 側は成功となるが DRBD ボリューム実体に反映されていない)
  • Cinder ボリュームを削除しても、DRBD 側でできたボリュームは消えるが、Resourceが消えない
    • Workaround : drbdmanage コマンドによる手動削除
  • Cinder スナップショットを削除しても、DRBD 側でできた ThinPool のスナップショットが消えない

    • Workaround : drbdmanage コマンドによる手動削除
  • Cinder スナップショットからボリュームを作成すると、作ったボリュームの同期がペンディングになる

    • Workaround : スナップショットを消すと同期が開始される

その他わかったこと

  • Cinder-Volume ノードを増やすことで、ボリュームの作成先を増やすことはできるが、マルチ DRBDmanage instance(DRBDクラスタ複数によるマルチバックエンド)はまだ未対応
  • drbdmanage modify-config でのStorage Plugin の変更はオンザフライをサポートしていない。ただし、ログレベルなどはオンザフライで有効になる http://drbd.linbit.com/users-guide-9.0/s-dm-set-config.html
    • Workaround : ノードを追加し、設定変更した後に、一度使用する(ボリュームを作るなど)ことで変更が有効になる
  • DRBD Client を Primary(OpenStack Cinder-Volume のノード)にする事はできるが Cinder ボリュームを作成したあとにそのボリュームは 自動的に Primary ノードに Client としてアサインされない、つまり DRBD Client を想定されていない
    • Workaround : Cinder ボリューム作成後、手動でアサインすることはできるが・・・

検証環境

ホスト名 IPアドレス
akira.tk.net 192.168.0.3
drbd9-01.tk.net 192.168.0.21
drbd9-02.tk.net 192.168.0.22

DRBD Controller Node 準備

  • DNS登録
  • ノード間でSSH-KEY登録
[root@drbd9-01 ~]# vgcreate drbdpool /dev/sdb /dev/sdc
  Physical volume "/dev/sdb" successfully created
  Physical volume "/dev/sdc" successfully created
  Volume group "drbdpool" successfully created

[root@drbd9-02 ~]# vgcreate drbdpool /dev/sdb /dev/sdc
  Physical volume "/dev/sdb" successfully created
  Physical volume "/dev/sdc" successfully created
  Volume group "drbdpool" successfully created

初期設定

[root@drbd9-01 ~]# drbdmanage init 192.168.0.21

You are going to initalize a new drbdmanage cluster.
CAUTION! Note that:
  * Any previous drbdmanage cluster information may be removed
  * Any remaining resources managed by a previous drbdmanage installation
    that still exist on this system will no longer be managed by drbdmanage

Confirm:

  yes/no: yes
  Failed to find logical volume "drbdpool/.drbdctrl_0"
  Failed to find logical volume "drbdpool/.drbdctrl_1"
  Logical volume ".drbdctrl_0" created.
  Logical volume ".drbdctrl_1" created.
initializing activity log
NOT initializing bitmap
Writing meta data...
New drbd meta data block successfully created.
initializing activity log
NOT initializing bitmap
Writing meta data...
New drbd meta data block successfully created.
empty drbdmanage control volume initialized.
empty drbdmanage control volume initialized.
Operation completed successfully

[root@drbd9-01 ~]# drbdmanage list-nodes
+------------------------------------------------------------------------------------------------------------+
| Name            | Pool Size | Pool Free | Site |                                                   | State |
+------------------------------------------------------------------------------------------------------------+
| drbd9-01.tk.net |     20472 |     20464 |  N/A |                                                   |    ok |
+------------------------------------------------------------------------------------------------------------+

[root@drbd9-01 ~]# drbdmanage add-node drbd9-02.tk.net 192.168.0.22
Operation completed successfully
Operation completed successfully

Executing join command using ssh.
IMPORTANT: The output you see comes from drbd9-02.tk.net
IMPORTANT: Your input is executed on drbd9-02.tk.net
You are going to join an existing drbdmanage cluster.
CAUTION! Note that:
  * Any previous drbdmanage cluster information may be removed
  * Any remaining resources managed by a previous drbdmanage installation
    that still exist on this system will no longer be managed by drbdmanage

Confirm:

  yes/no: yes
  Logical volume ".drbdctrl_0" successfully removed
  Logical volume ".drbdctrl_1" successfully removed
  Logical volume ".drbdctrl_0" created.
  Logical volume ".drbdctrl_1" created.
You want me to create a v09 style flexible-size internal meta data block.
There appears to be a v09 flexible-size internal meta data block
already in place on /dev/drbdpool/.drbdctrl_0 at byte offset 4190208

Do you really want to overwrite the existing meta-data?
*** confirmation forced via --force option ***
NOT initializing bitmap
initializing activity log
Writing meta data...
New drbd meta data block successfully created.
You want me to create a v09 style flexible-size internal meta data block.
There appears to be a v09 flexible-size internal meta data block
already in place on /dev/drbdpool/.drbdctrl_1 at byte offset 4190208

Do you really want to overwrite the existing meta-data?
*** confirmation forced via --force option ***
NOT initializing bitmap
initializing activity log
Writing meta data...
New drbd meta data block successfully created.
Operation completed successfully

[root@drbd9-01 ~]# drbdmanage list-nodes
+------------------------------------------------------------------------------------------------------------+
| Name            | Pool Size | Pool Free | Site |                                                   | State |
+------------------------------------------------------------------------------------------------------------+
| drbd9-01.tk.net |     20472 |     20464 |  N/A |                                                   |    ok |
| drbd9-02.tk.net |     20472 |     20464 |  N/A |                                                   |    ok |
+------------------------------------------------------------------------------------------------------------+

ホスト準備

Openstack Cinder Volume 側 も DRBD ノードとして追加登録

[root@drbd9-01 ~]# drbdmanage add-node akira.tk.net 192.168.0.3
Operation completed successfully
Operation completed successfully

Executing join command using ssh.
IMPORTANT: The output you see comes from akira.tk.net
IMPORTANT: Your input is executed on akira.tk.net
You are going to join an existing drbdmanage cluster.
CAUTION! Note that:
  * Any previous drbdmanage cluster information may be removed
  * Any remaining resources managed by a previous drbdmanage installation
    that still exist on this system will no longer be managed by drbdmanage

Confirm:

  yes/no: yes
  Logical volume ".drbdctrl_0" successfully removed
  Logical volume ".drbdctrl_1" successfully removed
  Logical volume ".drbdctrl_0" created.
  Logical volume ".drbdctrl_1" created.
You want me to create a v09 style flexible-size internal meta data block.
There appears to be a v09 flexible-size internal meta data block
already in place on /dev/drbdpool/.drbdctrl_0 at byte offset 4190208

Do you really want to overwrite the existing meta-data?
*** confirmation forced via --force option ***

Do you want to proceed?
*** confirmation forced via --force option ***
NOT initializing bitmap
md_offset 4190208
al_offset 4157440
bm_offset 4153344

Found some data

 ==> This might destroy existing data! <==
initializing activity log
Writing meta data...
New drbd meta data block successfully created.
You want me to create a v09 style flexible-size internal meta data block.
There appears to be a v09 flexible-size internal meta data block
already in place on /dev/drbdpool/.drbdctrl_1 at byte offset 4190208

Do you really want to overwrite the existing meta-data?
*** confirmation forced via --force option ***

Do you want to proceed?
*** confirmation forced via --force option ***
NOT initializing bitmap
md_offset 4190208
al_offset 4157440
bm_offset 4153344

Found some data

 ==> This might destroy existing data! <==
initializing activity log
Writing meta data...
New drbd meta data block successfully created.
Operation completed successfully
[root@drbd9-01 ~]# drbdmanage list-nodes
+------------------------------------------------------------------------------------------------------------+
| Name            | Pool Size | Pool Free | Site |                                                   | State |
+------------------------------------------------------------------------------------------------------------+
| akira.tk.net    |      9992 |      9984 |  N/A |                                                   |    ok |
| drbd9-01.tk.net |     20472 |     20464 |  N/A |                                                   |    ok |
| drbd9-02.tk.net |     20472 |     20464 |  N/A |                                                   |    ok |
+------------------------------------------------------------------------------------------------------------+

以降は
OpenStack LIBERTY で DRBD Cinder Volume Driver 事始め、と同様。

  • drbdmanage driver 設定
    1. cinder.conf
    2. ボリュームタイプ作成
    3. dbus へのアクセス許可
    4. cinder-volume 再起動

動作確認ログ

順次アップデート

参考

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