⏱この記事を読むのに必要な時間は約 6 分です。
あけましておめでとうございます。それはさておき、
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”に変更する。
3.管理サーバーサービスを再起動する。
# service cloud-management restart
4.管理UIへのセッションがいったん切れるので、再度adminでログインする。
5.[インフラストラクチャ] > [ゾーン]を開き、[Swiftの有効化]をクリックする。
6.Swiftへの接続設定を入力し、[OK]をクリックする。
スクリーンショットの例では、SAIOの手順に従ってSwiftを設定した際に作成している、テスト用のユーザーを使ってSwfitに接続をしています。
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ユーザ会をよろしくお願いします。