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

/var/log/smzksts

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

あけましておめでとうございます。

ひどいもので、2014年は1つもブログを書きませんでした。

気付いたら2015年になっていたので、今年はちょこちょこ試したものをここに書いていこうかと思います。

特に意味はありませんが、うちで飼っているヤギの写真を貼ります。

f:id:smzksts:20150107104015j:plain

CloudStackがDaaSの基盤になる?

注意:現時点で公開されている情報などから推測できる内容をまとめているだけであり、会社としての正式な情報ではなく、完全に個人の見解ですのでご了承ください。

 

Q: CloudStackDaaSの基盤として使えるようになるって話は、どうなったの?

A: 「うーん、良い質問なんだけど、今は言えないんだよね」

http://footballnet.2chblog.jp/archives/34498073.html

 

糸冬 了

 

これでバッサリ終わるのもあんまりなので、これまですでに出てきている情報を軽くまとめてみたいと思います。(言えない、というより単に知らない部分も多々…)

Apache CloudStackというより、Citrixが出している商用版のCitrix CloudPlatformの話になると思いますが、1年半ぐらい前からDaaS (Desktop-as-a-Service) の基盤として使えるようになるという計画が発表されていました。DaaSというのはクラウドサービスの一形態で、Windowsの仮想デスクトップ環境をオンデマンドで提供するものです。最近ではAmazon Web ServicesDaaSを開始したことが話題になっていました。

仮想デスクトップといえば、Citrixのメインビジネスの1つです。Citrix自身がDaaSを提供しているわけではありませんが、Citrixの技術を用いてDaaSを提供しているサービス事業者が多数あります。下記リンク先の記事にいくつかの国内事業者名が出ていましたが、これで全てではありません。(http://www.desktop2cloud.jp/market/daas.html

さて、話を戻してCloudStackDaaSの基盤として使う、という話ですが、1年半ほど前に発表されたのは下記のリリースでした。

シトリックス、新コンセプト「Project Avalon」を発表し「Windows as a Cloud Service」を実現
http://www.citrix.co.jp/company/press/releases/20120531_4.html

"Project AvalonXenDesktopCloudStack™を高度に最適化、統合化して、複数の場所、複数のクラウドにまたがるマルチテナントの展開を可能とし、ネットワークを経由してどんなデバイスにもサービスを提供します。"

上記の文から解釈すると、CloudStack上にマルチテナントのDaaSを構築できる、ということのように読み取れます。Citrixの仮想デスクトップ基盤製品イコールXenDesktopですが、XenDesktopの構成要素としては、単にデスクトップ用VMが存在するだけではありません。仮想デスクトップ環境は、ユーザーと仮想デスクトップや仮想アプリケーションとの接続を仲介したり、全体の管理を行ったりするための管理サーバー群が必要となります。XenDesktop 7 の構成要素はBlueprint(http://support.citrix.com/article/CTX139606)あたりを見ていただくとして、これをマルチテナント環境で利用するとなれば、テナントごとにこのサーバー群をセットにして展開する必要がありそうですね。

で、半年ぐらい後(今から1年ちょっと前)には以下のようなリリースが出ています。

CitrixSynergyにおいて次期Project Avalonを発表
ExcaliburMerlin2段階の製品リリースを通じてモバイルやクラウドの時代におけるWindowsを提供
http://www.citrix.co.jp/company/press/releases/20121120_2.html

Excaliburは今年出たXenDesktop 7 のことです。そしてMerlinというのがいよいよCloudPlatformに関連したリリースのようですね。XenDesktopは色々なハイパーバイザーに対応していますが、そこに新たな基盤としてCloudPlatformが加わる、というイメージでしょうか。「XenDesktopの基盤となる」イコール「XenDesktop側からAPIで制御可能」となるはずなので、XenDesktopCloudPlatform APIに対応するものと考えられます。

そして先週、DaaSに関連したツールに関する情報がCitrix Blogに出てきていました。

New Tools, Partners, Accelerating Citrix DaaS Adoption | Citrix Blogs:
http://blogs.citrix.com/2013/12/17/new-tools-partners-accelerating-citrix-daas-adoption/

App OrchestrationCloudPortal Services Managerあたりがキーになるように見えますね。(現時点ではどちらも触ったことがない…)

来年はこの辺りがはっきりと見えてくる年になりそうで、個人的には楽しみにしています。もうちょっとまとまった情報が得られたら、また改めてアウトプットしていきたいと思います:)

Apache CloudStack Docsの翻訳に参加してみた

 オープンソースの醍醐味の1つとして、自分もプロジェクトに協力できるという点があります。Apache CloudStackプロジェクトに協力する場合、コードの提供やバグのレポートも貢献の仕方のひとつですが、個人的にもっとも気軽に参加できるのはドキュメントの翻訳だと思います。手探りですが、実際にやってみましたので、情報共有したいと思います。

■翻訳への参加方法

Apache CloudStackのドキュメントは、Transifexというシステムで管理されています。まず前提として、ベースとなるEnglish版のドキュメントがあり、それに対する各国語版の翻訳作業が進められていくという形になっています。現在9つの言語への翻訳作業が行われていますが、日本語版はもっとも進捗率が高くなっています! とはいえ、まだまだ完成までは長い道のりですので、ぜひぜひご参加ください。

Transifex Apache CloudStack Docsプロジェクトページは下記のURLです。
https://www.transifex.com/projects/p/ACS_DOCS/

f:id:smzksts:20130409113203p:plain

翻訳に参加する場合は、まずあらかじめ、右上のリンクからサインアップをします。サインアップしたアカウントでログインしたら、Japanese (Japan)のリンクをクリックして、日本語版プロジェクトのページに移動してみましょう。

f:id:smzksts:20130409113206p:plain

翻訳作業は、ドキュメントを細かいモジュールに分割して行われています。

左がモジュールの名前、真ん中が進捗率、右側に最終更新日時が表示されます。

各列の一番上のバーをクリックすると、項目ごとにソートできます。進捗率が100%に達していないモジュールをクリックして、翻訳をしましょう。

 

 翻訳してみたい項目をクリックすると、↓の画面が出てきます。

f:id:smzksts:20130409113212p:plain

 [翻訳する]をクリックすれば、すぐに翻訳を開始できますが、大人数で作業している場合には同時に同じモジュールに対する翻訳作業をしてしまわないように、[一緒に作業しているほかのメンバーに知らせるためにこの翻訳をロック]できます。

ロックした項目は、項目名の横に鍵マークが付き、ほかのメンバーから編集されなくなります。ロックは48時間で自動解除されますが、編集が終わった際には随時ロックを解除したほうが良いでしょう。

 

[翻訳する]をクリックすると編集用のエディタ画面に切り替わります。

f:id:smzksts:20130409113215p:plain

翻訳対象のモジュールは、さらに複数のセクションに分かれており、左ペインで翻訳対象のセクションを選択、右ペインで編集作業が行えます。セクションの表示は上部の検索ボックスの右にある[未翻訳]のリンクで絞り込むと便利です。

翻訳は一から自力で行うこともできますが、右下の[提案]タブに翻訳の候補が表示される場合があります。提案はユーザーが入力するか、過去のバージョンの翻訳版や類似の翻訳箇所によって自動生成されるようですので、残念ながら新機能についての翻訳を行う場合には出て来づらいと思います(※すみませんが正確な仕組みを確認したわけではありません)。これを利用すると翻訳作業が大幅に楽になりますが、候補の左側に表示されているパーセンテージが100%以外の場合は、候補の生成に使用された文章と実際の翻訳対象の文章に差分がありますので、提案を利用する場合には注意してください。

作業の効率性だけではなく、過去バージョンのドキュメントとの整合性なども考慮すると、特に問題が無い限りは提案された訳をベースに編集していくのが良いと思います。

 

編集が終わったら、右上の保存ボタンをクリックして、翻訳した文章を保存しましょう。

また別のモジュールを翻訳したい場合、左上に表示されている編集中のモジュール名をクリックすると、左ペインに未編集のセクションが残っているモジュールが表示されます。

ただし、この方法では個々のモジュールの進捗状況の一覧性が無いため、進捗を一目で確認したい場合には、[Apache CloudStack Docs]のタイトルをクリックして、トップ画面に戻り、言語ごとのページに進みます(※もっと良いページ遷移方法をご存知の方は、教えてください…)。

■翻訳したドキュメントのビルド方法

翻訳したドキュメントは、HTMLPDFの形式にビルドできます。ビルドの方法は日本CloudStackユーザー会のMLストラトスフィアの川井氏が投稿してくださったTipsがとても参考になります。

http://ml.cloudstack.jp/pipermail/users/2013/000128.html

少し補足すると、私の環境で試した際には tx pullではen版しかダウンロードされなかったので、日本語版もダウンロードする場合には -l オプションで ja_JP(ja-JPではないので注意)を指定しました。

また、-s オプションを付けると進捗状況が見えてよいと思います。これらを組み合わせると↓のようになります。

tx pull -l ja_JP -s

このようにして、ダウンロードしたデータ(POファイル)をpublicanでビルドするのですが、1つ問題があります。publicanでのビルド時に—langsオプションを指定するのですが、ここで指定する値はTransifexからpullしたPOファイルが格納されているディレクトリを指定するので、このまま実行するなら --langs ja_JPとなります。しかし、publicanの仕様上 ja_JPではなくja-JPでないとビルドしたPDFで日本語フォントが正しく指定されず、文字化けします。(https://fedorahosted.org/publican/wiki/FontMatrix

ですので、ja_JPディレクトリをを丸ごと”cp -a ja_JP ja-JP”という具合に丸ごとコピーしてからpublicanでのビルドを行いましょう。(※シンボリックリンクではpublicanがエラーを出しました。cpする以外に何かいい方法をご存知の方は教えてくださいませ…。)

publican build --formats html,pdf --langs ja-JP --config publican-installation.cfg

これでビルドを実行し、少し待てばtmpディレクトリの下にビルドの成果物が出力されます。

図:HTML

f:id:smzksts:20130409114834p:plain

 

f:id:smzksts:20130409114849p:plain

図:ja_JPのままビルドするとPDFの日本語が文字化け…

f:id:smzksts:20130409114916p:plain

f:id:smzksts:20130409114929p:plain

図:ja-JPで指定すれば日本語フォントの表示もOK

f:id:smzksts:20130409114945p:plain

f:id:smzksts:20130409114957p:plain

以上です。ぜひ皆さんもご参加ください!

CloudStack徹底入門

私も出版に携わらせていただいた、『CloudStack徹底入門』が書店に並び始めました。

今回の執筆プロジェクトにおける私自身の役割としては、レビュアーという位置づけで、全体設計・執筆陣にお願いした各章の進捗管理・いただいた原稿の技術/文章チェック・文体統一など、監修的な立場での参加でした。

しかし私の性分のせいもあり、内容チェック後の加筆修正や、いくつかの節の追加執筆などをかなりガッツリと行ったため、いつの間にやらそれなりの量を執筆させていただきました:) また、表紙の裏側や帯の文言まであれこれ細かく注文を付けさせて頂いたり、前書きを書かせて頂いたりもしています。

9月の下旬に執筆陣で集まってキックオフミーティングをし、1月中旬まで関連作業を続けてきましたが、徹底入門シリーズとして書店に並んでも恥ずかしくない仕上がりになったと思います。

なお、Amazonではしばらく前から予約受付中になっていましたが、なんと既に現在在庫切れになっているようです。お買い上げいただいたみなさま、ありがとうございます。

また、盛りだくさんな原稿を作成いただいた執筆陣の皆さん、レビューチームとして作業分担し迅速に対応してくれた前職同僚のFLM鬼形さん、印刷所への入稿間際まで私たちの要望に応えてくださり各種調整や品質向上に尽力いただいた翔泳社の石川さんにも感謝です。

CloudStackを試してみたいけれど、何から始めればいいかわからない場合などは、ぜひこの本を手に取っていただければ幸いです。

CloudStack徹底入門

CloudStack徹底入門

日経Linux 2013年2月号にて、記事を執筆させて頂きました

オープンソースIaaS構築ソフト「CloudStack」を活用、という記事を書きました。

1時間ぐらいでCloudStack環境をちゃちゃっと作って、お勉強してみましょう、という趣旨の記事になっております。

CloudStackを触ったことがないという方はまだまだ多いので、日経Linux片手にお試しいただければ幸いです。

 

日経の冠が付いていると、親に見せた時の反応が違う…。
昔、母が日経パソコンを定期購読してたのもあってかもしれませんが。

f:id:smzksts:20130109014035j:plain

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で力尽きましたので、今日はここまで…。