/var/log/smzksts

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

移転しました。

約3秒後に自動的にリダイレクトします。

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ユーザ会をよろしくお願いします。

 

知っておくと便利なCloudStackのグローバル設定

CloudStack Advent Calendar jp: 2012

の一環として、CloudStackのグローバル設定について書きます。

 

 CloudStackを入れてみて、皆さんは何を試していますか?

  • インスタンスを作ってみたり
  • サービスオファリングを設定してみたり
  • アカウントを設定してみたり

このあたりはとりあえずGUIで出来て、取っつきやすいと思います。

 

ところで、下のほうに、グローバル設定という箇所がありますよね。

CloudStackの管理者UIにおいて、これほど文字ばかりが並んでいる場所は
他になかなかないと思いますが、けっこう大事そうな設定があるので、
時間があれば目を通してみてはいかがでしょう。

f:id:smzksts:20121216164252p:plain

 

Apache CloudStack 4.0のグローバル設定は238項目あります。
それぞれの項目については[説明]という項目はありますが、残念ながら個々の設定項目を詳細に説明したドキュメントは特にありません。
しかし、CloudStackの基本的な概念や動きを理解した上で、項目名と[説明]を読めば、大体の項目は何のためのものか、わかると思います。

 

以下は、検証環境で使うと便利なグローバル設定の紹介です。

 

1.インスタンスの完全削除

CloudStackでは、インスタンスの削除操作をしても、実際にはなかなか削除が行われません。(インスタンスがゴミ箱に捨てられて、ゴミ箱をきれいにする操作は一定間隔ごとに行われるため、なかなか完全削除してもらえないようなイメージ)

完全削除の処理間隔を定義しているのが以下のパラメータです。

●expunge.interval

破棄されたインスタンスを削除する処理を行う間隔。
デフォルトは86400秒(1日)。

●expunge.delay
破棄されたインスタンスを削除せずに保持する時間。この時間が経過するまでは、削除する処理の実行間隔が訪れても、削除が行われない。
デフォルトは86400秒(1日)。

 

2.リソースのオーバープロビジョニング

こちらの設定は、仮想化の世界でいうところの、いわゆるオーバーコミットの倍率です。CloudStackはIaaSサービス提供を前提としているため、各ユーザーの展開したインスタンスが、オファリングの設定値どおりにリソースを確実に得られるように、リソースはオーバーコミットされず、リソース不足時にはそれ以上インスタンスが起動されなくなります。インスタンスを高集約で動かしたい場合などには、以下の設定が便利です。

●cpu.overprovisioning.factor
CPUのオーバープロビジョニングの倍率

●storage.overprovisioning.factor
プライマリストレージのオーバープロビジョニングの倍率

 

なお、これらの設定を反映させるには、CloudStack管理サーバーのサービス(cloud-management)再起動が必要です。

 

また、蛇足(?)ですがCloudStackのグローバル設定は、CloudStackのデータベースのconfigurationテーブルに格納されています。一覧は下記のコマンドで出力できます。

# mysql cloud --user="root" --password="パスワード" -e "select * from configuration"

 f:id:smzksts:20121216164110p:plain

configurationのうち、すべてがグローバル設定なわけではなく、24個ほどHiddenカテゴリに分類されたものがあり、グローバル設定には表示されていません。これらはシステム側で自動的にセットされたり、CloudStack管理UIの別の個所で設定可能な項目のようです。

 

ちなみにHiddenカテゴリの皆さんはこちら…

cloud.identifier
init
kvm.guest.network.device
kvm.private.network.device
kvm.public.network.device
ovm.guest.network.device
ovm.private.network.device
ovm.public.network.device
router.ram.size
secondary.storage.vm
secstorage.copy.password
security.hash.key
ssh.privatekey
ssh.publickey
ssl.keystore
vmware.guest.vswitch
vmware.private.vswitch
vmware.public.vswitch
xen.create.pools.in.pod
xen.guest.network.device
xen.private.network.device
xen.public.network.device
xen.storage.network.device1
xen.storage.network.device2

トラフィックと物理ネットワークの紐づけをしている辺りなどは、CloudStackをインストールしたことがある人なら、なんとなく見覚えのあるパラメーターですね。

 

CloudStackデータベース(MySQL)のほかのテーブルは、
# mysql cloud --user="root" --password="パスワード" -e "show tables"

で一覧表示できますので、CloudStackの内側の覗いてみるヒントになるかと思います。

 

OSC.cloudで力尽きましたので、今日はここまで…。

はてなダイアリーからはてなブログへ移行しました

5/31にはてなダイアリーからのインポート機能が実装されたということで、ようやくはてなブログへ移行しました。

 

記事の編集がWYSIWYGになったので、ものぐさな私には大変ありがたいです:)

OpenFlow勉強会(#sdnstudy)第2回に参加しました

ゴールデンウィーク2日目はOpenFlow勉強会その2に参加しました。

当日のセッションや各種資料はATNDに掲載されています。

        • -

今回、個人的に興味深かったのはTremaのハンズオン。
なんと、自分でOpenFlow Controllerを作れてしまいます。

当日はいくつかのサンプルコードをもとにOpenFlowコントローラを設定し、OpenFlowスイッチおよび接続するホストはTremaの持つシミュレータを使って動作をチェックする、といった内容でした。

ここで試したくなるのが、シミュレータではないOpenFlowスイッチでの動作。現在個人で用意できそうなOpenFlowスイッチと言えば、Open vSwitchかSRCHACK.orgさんのBuffalo無線LANルータのファーム差し替えによるものの、どちらか2択。

自宅ラック勉強会のおかげで私は後者も持っているのですが、中の人としてはCitrix XenServer 6.0から標準となった、Open vSwitchを使いたい!

もちろん、OSS XenKVMが使えるLinuxディストリビューションで、Open vSwitchを導入可能なものもありますが、インストール〜初期セットアップが10分ちょっとで終わるXenServerのほうが遥かに楽です。

なお、本来Citrix XenServerには有償版の機能として vSwitch ControllerというNOXベースのOpenFlowコントローラが用意されていますが、無償版でもOpen vSwitchそのものは動いているので、これをTremaに接続してみよう…ということで、要するにCitrix XenServerの機能というよりも、純粋にOpen vSwitchの機能を使ってみました。


実際どうやるのかというと、とりあえず接続のチェック方法は以下のとおり
【前提】
1.ATNDからリンクされているOpenFlow勉強会で使ったハンズオンのサンプルを参考に、OpenFlowスイッチを作成
2.XenServerをインストールし、XenServerのローカルCLIを開く
【方法】
・XenServerをControllerに接続する
1.仮想スイッチの名前を確認
# ovs-vsctl list-br
xenbr0※XenServerに標準で作成される仮想スイッチ名

2.仮想スイッチをコントローラに接続
# ovs-vsctl set-controller xenbr0 tcp:

成功すると、Tremaハンズオン資料11ページのswitch_readyメソッドによって、Trema側のコンソールに↓が表示されました。
ifswitch_ready => 0x3aa9528617d6

3.仮想スイッチをコントローラから切断
switch_disconnected => 0x3aa9528617d6

注意点として、Flowを全然設定していないControllerにxenbr0をつないでしまうと、SSHやXenCenterでの接続ができなくなってしまいます。最低限Tremaハンズオン24ページに掲載されているリピータHUBとして動作する機能をコントローラに持たせるか、XenServerをローカルコンソールで操作するか、いずれかの対応をできる状態にしておくと良いでしょう。

ちゃんとした制御をするにはまだまだ勉強が必要ですが、こつこつ試してみたいと思います。

雑誌記事を執筆しました(SoftwareDesign 6月号)

発売からちょっと経ってしまいましたが、
SoftwareDesign6月号に記事を寄稿しました。

テーマは、在宅勤務とデスクトップ仮想化について、です。
第1特集の一部となっています。

まだまだ日本では普及途上な在宅勤務。

私自身が実際に経験し、感じたことをベースに、
在宅勤務が普及すれば、企業も個人も幸せになれるのでは?
という思いで書かせて頂きました。

VMware vSphereの仮想マシンは複数のデータストアに仮想ディスクを配置できる?

結論:OK。

では、Storage vMotionのときはどうなるか?

●答え
移行先データストアの選択時、詳細表示をすると
仮想マシン構成ファイルや仮想ディスクの移行先を
個別に選択するためのメニューが現れる!

f:id:smzksts:20110404234828p:image

よくできてますね〜。