読者です 読者をやめる 読者になる 読者になる

/var/log/smzksts

ITインフラと牧場についての備忘録

CloudStackとOpenStack Swiftの連携

あけましておめでとうございます。それはさておき、

CloudStackの資料等々を見ているとしばしば、OpenStack Swiftをセカンダリストレージとして使用できると書かれていますね。しかし私、動いている実機を見たことがありませんでした。というわけで今回はとりあえず連携できるのかを試してみて、動くことを確認しました:)

■OpenStack Swiftとは

@irix_jp さんの資料を見ておきましょう。

■CloudStack連携の情報を探してみた
CloudStackのドキュメントページのところで"Swift"で検索してみました。
以下がヒットしました。
●Admin Guide
13.4. Using Swift for Secondary Storage
→んー、Swiftの説明は書いてないぞ…。
●Installation Guide
2.6. About Secondary Storage
→CloudStack環境におけるSwiftについては、こちらに書かれていました。大まかにいうと、以下のような役割になるようです。

  • Swiftを追加すると、Cloud全体で共有されるストレージとして動作する
    (※通常のNFSセカンダリストレージはゾーンごとに必要)
  • テンプレートをNFSセカンダリストレージに格納すると、Swiftへ転送される
  • Swiftへ転送されたテンプレートは、すべてのゾーンで使用できる

6.2. Adding a Zone
→手順はこちらにありました。
6.7. Add Secondary Storage
> 6.7.2. Adding Secondary Storage
> If you are going to use Swift for cloud-wide secondary storage, you must add the Swift storage to CloudStack before you add the local zone secondary storage servers. See Section 6.2, “Adding a Zone”.

→ということなので、手順については6.2を見るのがよさそうです。

■Swiftを動かす
Swift関連の情報は公式サイトで確認しました。
こちらにSAIO - Swift All in Oneというものがあり、単一ホストにSwiftを設定する手順書になっています。
本来Swiftは複数ホストで動かす分散オブジェクトストレージですが、今回はとにかく連携させてみる、ということでSAIOの手順にならいました。ちなみに、SAIOでも結構設定に時間がかかりました…。

■連携させる
6.2にも下記のように記載があるとおり、CloudStackでSwiftを使用する場合には、CloudStack管理サーバーにゾーンが未作成の状態で、あらかじめSwift連携設定をしておく必要があります。
> If you are going to use Swift for cloud-wide secondary storage, you need to add it before you add zones.

1.adminでログインする。
2.グローバル設定の"enable.swift"の値を"false"から"true"に変更する。

f:id:smzksts:20121231233327p:plain

3.管理サーバーサービスを再起動する。
# service cloud-management restart
4.管理UIへのセッションがいったん切れるので、再度adminでログインする。

5.[インフラストラクチャ] > [ゾーン]を開き、[Swiftの有効化]をクリックする。

f:id:smzksts:20121231233414p:plain

6.Swiftへの接続設定を入力し、[OK]をクリックする。
スクリーンショットの例では、SAIOの手順に従ってSwiftを設定した際に作成している、テスト用のユーザーを使ってSwfitに接続をしています。

f:id:smzksts:20121231233436p:plain

7.状態メッセージが表示されるので[Close]をクリック。
"Swiftが構成されました。注、このページを閉じると、Swiftを再構成することはできません。"出るとおり、Swiftの設定画面は出てこなくなってしまうので、設定は慎重に。
8.ゾーンを構成する。
通常通りにゾーンを構成します。

■確認する
・ログを見る
Swiftの動作ログは/var/log/syslogに格納されます。
セカンダリストレージVMやSwiftのノード間でオブジェクト(ファイル)のやりとりが行われている様子が確認できます。
・ストレージに格納されたデータの比較
ゾーンを構成・有効化するとセカンダリストレージの中身がSwiftに転送されるようになります。セカンダリストレージの中身とSwiftの中身を確認してみましょう。同じファイルが転送されているのが確認できます。

====================
[root@nfssvr home]# ls -R secondary/
secondary/:
snapshots  template  volumes

secondary/snapshots:

secondary/template:
tmpl

secondary/template/tmpl:
1

secondary/template/tmpl/1:
1  5

secondary/template/tmpl/1/1:
8b382a50-e4a2-45d8-887d-70aaecd822fd.vhd  template.properties

secondary/template/tmpl/1/5:
d5a259e7-9d77-3580-97db-74ce5fcf5b99.vhd  dnld4447498382030525902tmp_  template.properties

secondary/volumes:

====================

root@swift31:~# swift -A http://127.0.0.1:8080/auth/v1.0 -U test:tester -K testing list
T-1
T-5
container-1c0fe6ad-2bf2-4fc2-a23a-520cc6635c53
root@swift31:~# swift -A http://127.0.0.1:8080/auth/v1.0 -U test:tester -K testing list T-1
8b382a50-e4a2-45d8-887d-70aaecd822fd.vhd
template.properties
root@swift31:~# swift -A http://127.0.0.1:8080/auth/v1.0 -U test:tester -K testing list T-5
d5a259e7-9d77-3580-97db-74ce5fcf5b99.vhd
dnld4447498382030525902tmp_
template.properties
root@swift31:~#

====================

以上です。今年もCitrix日本CloudStackユーザ会をよろしくお願いします。