OpenStack Folsom構築 on Wheezy (9) Swift+Glance

Glanceイメージの保存先は、基本はGlanceが動いているサーバのローカルファイルですが、分散ストレージなどに変更することができます。

今回は分散ストレージSwiftを構築し、Glanceで利用する手順になります。
ただ、Swiftは面倒なわりに、OpenStackにおいてはGlanceの保存場所としてしか利用しないので、VMイメージ/スナップショットの重要性を考慮した上で手がけるとよいと思います。



サーバ構成

Swiftは分散ストレージなので、堅牢性を考慮して最低3台となります。

インストールにはPuppetの力を借りるので、ControllerNodeをPuppetMaster+PuppetAgent、他の2台をPuppetAgentのみとします。


Puppetの準備

Wheezy+Folsomでは、公開されているPuppetマニフェストを用いてインストールします。
まずは、ControllerNodeにPuppetMasterを用意します。

PuppetMaster+Agentのインストール

設定

/etc/puppet/puppet.conf

このエラーが出る場合、追記設定します。

  • err: /File[/var/lib/puppet/lib]: Could not evaluate: Could not retrieve information from environment production source(s)

  • /etc/puppet/fileserver.conf

    MySQLの設定

    既に入っているMySQLを利用するので、DBとユーザだけ作ります。

    Puppet用OpenStackモジュールのインストール

    Gitから落として配置します。

    マニフェスト編集

    /etc/puppet/manifests/site.pp

    Puppet設定内変数のベースは
    facter -p
    で確認できます


    あとは好みで名前を変えました。
    /etc/puppet/modules/swift/manifests/init.pp

    /etc/puppet/modules/swift/manifests/storage.pp

    /etc/puppet/modules/swift/manifests/proxy.pp

    再起動

    全ホストのautosignを有効にしておきます。

    いったん再起動します。


    ControllerNodeでデプロイ

    Swift設定をデプロイします。

    cronでエラー出力されたら


    ComputeNodeにデプロイ

    残る2台にもPuppetを入れてSwiftをデプロイします。


    全サーバでSwift設定

    Swift用にloopback deviceを用意

    ディスクイメージと、マウントディレクトリを作成します。

    fstabを編集して、
    /etc/fstab

    マウントしておきます。

    rsync設定

    Swift設定

    devicesを追加します。

    account server
    /etc/swift/account-server.conf

    container server
    /etc/swift/container-server.conf

    object server
    /etc/swift/object-server.conf

    hashの確認

    全台で同じ値になっていること(puppetで配布されています)。

    /etc/swift/swift.conf

    起動


    ControllerNodeでSwift設定

    swift proxyの設定

    設定は変更箇所のみ記載します。
    /etc/swift/proxy-server.conf

    再起動します。

    Ringの作成

    サーバごとにagentを実行しておきます。

    Ringを作成します。

  • Swift/Rings – Eucalyptus linux4u.jp Wiki

  • Swift動作確認

    tempauth版

    ユーザの test:tester は filter:tempauth に直接書かれています。
    pipelineをkeystoneに変更していたら利用できません。


    keystone版

    Swift用のEndpointをKeystoneに追加します。

    接続確認します。

  • .bashrc の環境変数があればオプションは不要です。
  • -U <tenant>:<user> -K <password>

  • Glance + Swiftに変更する

    Glanceのローカル登録を削除しておきます。

    swiftに変更します。

    /etc/glance/glance-api.conf

    再起動します。

    適当にイメージを再登録してみます。



    ここまでで、Puppetを使ったにも関わらずこの面倒くささ・・・Swift自体は単発でも使えそうなくらい悪くないと思いますが、ここからさらにデータのバックアップや移行など運用面も検証しなくてはならず、そのわりにGlanceだけという・・・

    ならばCephを構築してGlanceとCinder両方で使ってしまえ!というのが理想なのですが、そちらもなかなか難しく。Glanceは別に落ちても致命傷にはなりませんし、あまり追求しないのであれば、GlanceのサーバがミラーリングRAIDならば十分とも思いますがどうなんでしょう・・・

    だんだんと書くのが億劫になってきたOpenStack!まだまだ続きます:-)