12/10担当: Wakame-vdc / OpenVNet Advent Calendar 2014 参加記事です。1週間遅れの投稿ですみません。(ToT)


Wakame-vdcプロジェクトは少数で開発していて、新規の機能開発や、複数の商用環境への投入とメンテナンスなどの全て並行して賄って来ました。 自動化を進めてもらったおかげで、人手に依存せず、少人数でもうまくいくようになってきました。 その中で僕達自身が一番困っているのがドキュメンテーションです。


やはりWakame-vdcをできるだけ色々な方々にインストールしてご利用いただけるようにしようと、インストール手順をWikiなどに掲載したりしてきました。 しかし、今もなお実装の改善が入ることがあって、すぐにインストール手順は古くなってしまいます。 ちょっと気を抜くと、ユーザ様から、インストール手順通りに試したけどインストールできません、とご指摘いただく形になってしまうのです。 この状態を解消するために、rpmによるインストールの簡略化や、マシンイメージでの提供によってインストールそのものを無くす手法を試みて来ましたが、これはインストール手順そのものへの対策ではあっても、ドキュメントがあっと言う間に古くなると言う本来の課題には応えられていません。


結局のところ、開発のスピードを犠牲にしてでも、ドキュメンテーション専門の時間を明確に作らない限り、整備はされないのだなと言う当たり前の結論に落ち着きまして、最近は少しずつではありますが、作業のアサインをするようになりました。 その成果が、GitHubのリポジトリにあるWikiのページです。 今回は、そのWikiページに何が書かれているのか、ご紹介します。


基本方針

基本的には、できるだけ全て英語で記述するようにしています。 世の中は英語ができるエンジニアの方が多いので、理にかなってはいるかなと思っています。 また、先述した通り、ドキュメンテーションに割けるリソースも限界があるため、まずは英語で集中的に仕上げていこうと考えています。 日本語に翻訳してくださる方を募集中です。


仮想データセンターのコンセプト

https://github.com/axsh/wakame-vdc/wiki/Concept

Wakame-vdcとは一体何なのかが書かれています。 特にコンセプトである、仮想データセンターのあたりが重要です。 このコンセプトは2009年にクラウドコンピューティングと言う単語が先行する中で、本当に自分たちが一番実現したいことは何なのかを考えた結果でもあります。 もう5年は経過しているのですが、未だに実現まで少し距離感があります。 ただ、時代は着実にそれを求めていると、昨今では当時よりも強く確信しています。


簡単なインストール

https://github.com/axsh/wakame-vdc/wiki/install-guide

Wakame-vdcはインストールが簡単です。CentOSであれば、サクッとインストールが出来ますし、デモが見たいならば、ここからインストール済みの仮想マシンイメージをダウンロードして、お手元のコンピューターで動作させる事ができます。

冗長化についても、いくつかある商用環境でのノウハウをいずれ公開したいと思っていますが、基本的には、複数サーバへの分散とフェイルオーバー、プロセス監視と再起動が出来ていれば問題ありません。 その他、MySQLサーバなど、既存ミドルウェアの冗長化などは既に様々なノウハウがインターネットに溢れていますので、少しでもOSSの取り扱い経験があれば、さほど問題にはならないでしょう。


仮想マシンの利用が簡単にできる

https://github.com/axsh/wakame-vdc/wiki/Basic-usage

Wakame-vdcが標準で備えるGUIをとりあえずウォークスルーしてみています。基本的な部分のひと通りの使い方が分かるよう、スクリーンショット多めに交えての紹介です。


独自のマシンイメージも作成できる

https://github.com/axsh/wakame-vdc/wiki/Custom-images

ここでは、OpenVZコンテナベースの環境に、httpdが標準インストールされ、ブート後に自動で起動してきるCentOSイメージを作成し、登録する手順が記載されています。 wakame-initと呼ばれるブート専用のスクリプトを導入することで、マシンイメージはWakame-vdcのsshの鍵管理と連携することができるようになります。 最後に、出来上がったマシンイメージをWakame-vdcの管理専用コマンドであるvdc-manageを用いて登録すれば、無事ブート可能なマシンイメージとして選択できるようになります。


起動した仮想マシンへの通信をセキュアにできる

https://github.com/axsh/wakame-vdc/wiki/security-groups

Wakame-vdcの優れた機能として、セキュリティグループの機能があります。これはエッジネットワークで全て制御されるため、Tagged VLANを一切使わず、低コストに動的ファイアウォールとして機能するのが最大の特長です。現在はNetfilterを標準利用しており、OpenFlowと切り替えられるようにはなっていますが、いずれはOpenFlowの方を標準にしていくことになります。


機能的にはL2/L3レベルのフィルタリングをしており、仮想マシンへ論理名を持ったルールセットを動的に適用して、通信の制御することができるものです。Referenceの機能説明に記載されている部分が最もセキュリティグループらしい箇所であり、簡単にティアを組める所以でもあります。


簡単にバックアップも取れる

https://github.com/axsh/wakame-vdc/wiki/backup-instances

バックアップ用のストレージを設定し、そこに仮想マシンのバックアップを作る方法を示しています。


Wakame-vdcは、ローカルディスクだけでなく、NFSやWebDAV形式のインターフェイスを持った外部ディスクに、仮想マシンのコピーを作成することができます。外部ディスクに論理名を付けて登録し、それをバックアップ先に設定するだけで利用できます。


ドキュメントのメンテナンス方法

これらドキュメントは、下記リポジトリで管理されています。

https://github.com/axsh/wakame-vdc-wiki

上記リポジトリをcloneするなどして、編集します。その後、gollumと言うWikiエンジンで閲覧して確認をします。gollumは、Gitで利用できる文法と多少差異はありますが、レイアウトも含めてほぼ同じなので、手軽で良いでしょう。何か良いドキュメントができたら、ぜひpull-requestをくださいませ。