CephをCinderストレージにする

Glanceの次は、CinderのストレージとしてCephを利用してみます。

ボリュームの保守性・拡張性を得ることができ、気に入ればSwiftが不要となって1つのコンポーネントの運用を減らせるため、ぼちぼちな破壊力の功績となること間違いなしです。



リンク

Glance+Ceph と同じページを参考にしています。
  • Block Devices and OpenStack — Ceph Documentation


  • パッケージのインストール

    とりあえずCinderが欲するパッケージを入れておきます。

    sysfsutils がないと
    systool is not installed
    とコマンドが無いと怒られます。



    Ceph設定

    pool作成

    volumes という名前でpoolを作成します。この名前は cinder.conf で設定できます。

    keyingの作成

    ユーザを作成し、取得します。Glanceイメージを読み込めるように images のRead権限を与えています。

    Ceph設定

    ceph.conf にユーザと鍵ファイルの設定を追記します。

    /etc/ceph/ceph.conf

    設定コピー

    他サーバにも ceph.conf をコピーします。

    libvirtに鍵を登録

    ComputeNode全てに鍵を送って、全て1台目と同じuuidでlibvirtにvirshで登録します。
    1台目でUUIDの取得まで行います。

    全ComputeNodeで、libvirtに鍵ファイルとUUIDを登録します。
    2台目以降では $UUID は値に書き換えてください。

    注意点

    CephAuth と libvirt の鍵が一致していないと、VMへのattachに失敗し、libvirtのデバッグログに CommandNotFound drive_add といったエラーが出ます。エラーログから推測しづらいので確実に設定してください。


    Cinder設定

    cinder.conf

    Cinderの設定にRBDを追加します。rbd_secret_uuid の値は適宜変更してください。

    /etc/cinder/cinder.conf

    環境変数

    上記設定 rbd_user で指定した値は、バグによって無視されてしまいます。
  • Bug #1083540 “RBD driver option rbd_user is confusing” : Bugs : Cinder

  • このようなエラーが出て cinder-volumes が起動しません。

    このエラーを回避するために環境変数を設定します。

    /etc/default/cinder-common

    再起動

    Cinderを再起動します。


    iscsiの設定

    もしCinderがCephを利用する時に、NovaComputeがこのようなエラーで怒る場合、

    iscsiから値を取得し、

    設定に追記します。
    /etc/iscsi/initiatorname.iscsi


    動作確認

    一連の流れが成功すれば、Horizonからでも成功するはずです。



    まとめてみると案外手順は少ないのですが、私はDebianでやっているせいか、動くまでにかなりの時間を要してしまいました。

    それもこれもコンポーネントがいっぱいあったり、ログの内容が原因とほど遠いものだったりして、悪いやつ探しに困ったからなのですが、次回はその中でも一番困ったことについて書きたいと思います。