OpenStack Grizzly構築 on Wheezy (7) Cinder+Ceph設定

Cinderもそれなりにイイ子なのですが、ちょっと原因を人に伝えるのが苦手だったり、よくlibvirtdクンと喧嘩したりするので、ハマらずイケるといいですね!

ここではあえて修羅道であるCeph連携の手順を紹介しています。



パッケージ

ここまでで既に入っているはずですが、念のため見逃しそうな関連パッケージをおさらい。
  • sysfsutils がないと systool is not installed というエラーが出ます

  • Cephの設定

    特に指定がない箇所は、ControllerNodeでの作業となります。

    pool作成

    Glance:images と同様、役割を名前にしたので volumes です。

    keyringの作成

    Ceph設定

    追記して・・・

    /etc/ceph/ceph.conf

    他のComputeNodeにも送っておきます。


    libvirtの設定

    1台でlibvirtに client.volumes の secret を登録し、UUIDをゲットします。
    同じUUIDで、他のサーバにも virsh で登録します。

    1台目

    鍵を取得
    鍵を落として、他のサーバにも送っておきます。

    secretを登録


    2台目以降

    secretを登録

    鍵の一致確認
    ComputeNode全てにkeyを送って、全て1台目と同じuuidでvirshに登録しました。
    ここで全台でCephとlibvirtの鍵の値が一致しているか確認しておきます。

    値が異なっていると、ボリュームのアタッチに失敗して、CommandNotFound drive_add という一見関係のないエラーになり、原因の特定が難しくなるので確実に設定しておきます。


    Cinderの設定

    cinder.conf

    Cephをストレージとして設定します。

    rbd_user は無視されてしまい
  • Bug #1083540 “RBD driver option rbd_user is confusing” : Bugs : Cinder
  • こんなエラーになって cinder-volumes が起動しないので、後述の /etc/default/cinder-common を設定します。

    /etc/cinder/cinder.conf

    api-paste.ini

    特に注意点はないです。

    /etc/cinder/api-paste.ini

    環境変数

    rbd_user を使ってくれないエラー回避で、環境変数を設定します。

    /etc/default/cinder-common

    再起動

    反映します。

    iscsiの設定

    設定しないとComputeが怒るので適当な値を設定します。
  • Could not determine iscsi initiator name get_volume_connector. No Volume Connector found.
  • 設定を追加しておくだけです。

    /etc/iscsi/initiatorname.iscsi


    動作確認

    Cinder

    Cinderでボリュームの作成と削除ができればOKです。

    インスタンスへのアタッチ

    あとは、nova create で作ったインスタンスに、cinder create で作ったボリュームをアタッチできれば完成です。(※Horizonで作成・アタッチしてもOK)

    手順としては少々先のものになりますが、関連強いので書いておきます。

    失敗する場合は、nova, cinder, libvirtd のログを確認してください。
    鍵周りなど、ここまでの設定が間違っている可能性もありますし、使っているKVMがRBDに対応していない場合もあります。ここで失敗すると、ログから原因を特定するのが非常に難しいのですが、そこは頑張ってください。

    バグっぽい動作

    アタッチ時のデバイス指定について2点ほど怪しい動きを確認済みです。
  • 例えば /dev/vda しかないインスタンスに /dev/vdc と指定しても勝手に /dev/vdb と詰めてVMで認識されます。しかしCinder上では /dev/vdc の表示
  • 例えば /dev/vdc にアタッチ成功後、デタッチ => アタッチすると /dev/vdd、再度リタッチすると /dev/vde と1つずつ後ろにズレていく。これはVMの再起動で元に戻ります


  • 私はCephとの連携は非常に手間取りました。ログから推測できないことがほとんどなので、いっぱいソースを眺めに行ってはデバッグを仕込むハメになります。

    特に変なストレージを選択すると、かなり苦労すること間違いなしなので、覚悟してから修羅道にお入りくださいませ。