Hatena::ブログ(Diary)

@hamaknの日記 Twitter

2011-12-11

Cloud Foundryを複数ホストで動かした。その2 dev_setupを使う編

この記事はCloud Foundry jp Advent Calendar 2011の11日目です。ちなみに2周目です。

前日は@r_takaishiさんのStackatoとLXCによるクラウドにおけるセキュリティ(翻訳)でした。

明日は@y_wakaiさんの予定です。

ちなみにこの記事の内容は、12/15(木) 19:00〜の第3回 Cloud Foundry輪読会で詳しく話すつもりなので興味がある人は現地で僕と握手!

今回は、VCAPのdev_setupフォルダに入っているVCAPのセットアップスクリプトを使って、Cloud Foundryを複数ホストで動かす方法を書く。

元ネタ(作ろうとしてる構成は違うけど)はこちら→ Single/Multi Node VCAP Deployment using Chef

9月にもCloud Foundryを複数ホストで動かす方法を書いたが、VMwareの人も We’ve been working on a replacement for the vcap_setup script based on Chef. と言っているのでこちらのやり方の方が良い。

今回のホスト構成

f:id:hamakn:20111212002713p:image


今回構築を目指すのは上のような構成。

文量の都合から、利用者が数十人程度の小規模なPaaSを想定した際に一番重要になりそうな、DEA(PaaSに乗るアプリケーションを実行するコンポーネント)を横に並べることにフォーカスする。

ちなみに同様のやり方で、DEA以外のVCAPコンポーネントも別々のホストに分離可能。

この構成であれば、あるDEAがダウンした場合、Health ManagerとCloud Controller、他のDEAによって、障害の起きたDEA上にいたアプリケーションを自動的に復旧してくれる。そのあたりの挙動についての日本語情報は、CloudFoundryにデプロイしたアプリケーションの死活監視の仕組み1が詳しい。


dev_setupについて

で、dev_setupを利用してVCAPを動かす手順は、以下の通り。

  1. Ubuntu Server 10.04の用意。gitのインストール(sudo apt-get install git-core)
  2. VCAPソースコードのダウンロード(git clone)
  3. セットアップに利用するconfigファイルの作成
  4. dev_setup/bin/vcap_dev_setupを使った、VCAPコンポーネントのセットアップ
  5. VCAPコンポーネントの起動

重要なのは3と4で、3でそのホストにセットアップするVCAPコンポーネントの設定を書いて、4でその設定に沿ったセットアップ作業をしている。

4のvcap_dev_setupの中では、システム管理ツールであるchefを使っている。ちなみにここで使っているchefは、chef-serverを必要としない、chef-soloの方。

3で作るconfigファイルのサンプルは、dev_setup/deployments/sample/ にあるので参考にすると良いはず。

1と2の作業は全ホストで共通なので、以下では3以降の作業について書く。なお、git cloneしたVCAPソースコードは/etc/cloudfoundry/vcap/にあるものとする。


ホスト4

先にホスト4から。(ホスト1=DEA1と末尾の番号を合わせるためにこんな構成に、、)

ホスト4のconfigファイルは以下の通り。domainは利用するドメインに変更する。serviceも必要に応じて変更する。

---
deployment:
  domain: "yourdomain.com"
  name: "rest"

jobs:
  install:
    - nats_server
    - ccdb
    - cloud_controller:
        builtin_services:
          - redis
          - mongodb
          - mysql
    - router
    - health_manager
    - redis_node:
        index: "0"
    - redis_gateway
    - mysql_node:
        index: "0"
    - mysql_gateway
    - mongodb_node:
        index: "0"
    - mongodb_gateway

これを/etc/cloudfoundry/rest.ymlとして保存し、bin/vcap_dev_setupの-cオプションで指定する。

あとはパスワードを聞かれる程度で、スクリプトがVCAPコンポーネントをセットアップしてくれる。

% cd /etc/cloudfoundry/vcap
% dev_setup/bin/vcap_dev_setup -c /etc/cloudfoundry/rest.yml
Checking web connectivity.
chef-solo is required, should I install it? [Y/n]

(中略)

* Status: Success
* Config files: /etc/cloudfoundry/.deployments/rest/config
* Deployment name: rest
* Note:
* If you want to run ruby/vmc please source the profile /home/vcap/.cloudfoundry_deployment_profile
* If you want to run cloudfoundry components by hand please source the profile /home/vcap/.cloudfoundry_deployment_local
* Command to run cloudfoundry: /etc/cloudfoundry/vcap/dev_setup/bin/vcap_dev -n rest -d /etc/cloudfoundry start

上のように Status: Success となればセットアップは成功。あとは最後の行を実行すれば、DEAを除くVCAPコンポーネントが起動する。

% /etc/cloudfoundry/vcap/dev_setup/bin/vcap_dev -n rest -d /etc/cloudfoundry start
router              :    RUNNING
cloud_controller    :    RUNNING
health_manager      :    RUNNING
mongodb_gateway     :    RUNNING
mongodb_node        :    RUNNING
mysql_gateway       :    RUNNING
mysql_node          :    RUNNING
redis_gateway       :    RUNNING
redis_node          :    RUNNING

ホスト1〜3

configファイルは以下の通り。

---
deployment:
  name: "dea"
  domain: "yourdomain.com"

jobs:
  install:
    - dea:
        local_route: "172.16.0.11"
        secure: "true"
  installed:
    - nats_server:
        host: "172.16.0.10"
        port: "4222"
        user: "nats"
        password: "nats"

注意点は、以下の3つ。

  1. local_routeはホストごとに書き換える。上の例はホスト1の場合。
  2. DEAの設定は、例えば以下のsecureの項目のように書く。設定可能な値はcookbookのdea.yml.erbを、デフォルト値はdefault.rbを見るとわかる。
  3. nats_serverを指定する。今回の場合はDEA以外はホスト4の役割なので、ホスト4を指定する。nats_serverのportやuser, passwordはホスト4のconfigファイルで設定可能。

これを/etc/cloudfoundry/dea.ymlとして保存し、bin/vcap_dev_setupの-cオプションで指定する。

あとはホスト4の場合と同じ。

% cd /etc/cloudfoundry/vcap
% dev_setup/bin/vcap_dev_setup -c /etc/cloudfoundry/dea.yml
Checking web connectivity.
chef-solo is required, should I install it? [Y/n]

(中略)

* Status: Success
* Config files: /etc/cloudfoundry/.deployments/dea/config
* Deployment name: dea
* Note:
* If you want to run ruby/vmc please source the profile /home/vcap/.cloudfoundry_deployment_profile
* If you want to run cloudfoundry components by hand please source the profile /home/vcap/.cloudfoundry_deployment_local
* Command to run cloudfoundry: /etc/cloudfoundry/vcap/dev_setup/bin/vcap_dev -n dea -d /etc/cloudfoundry start

% /etc/cloudfoundry/vcap/dev_setup/bin/vcap_dev -n dea -d /etc/cloudfoundry start
dea                 :    RUNNING

動作確認

正しくセットアップできていれば、vmc pushしたアプリケーションが、ホスト1〜ホスト3に分散してデプロイされるようになる。デプロイされたアプリケーションは、/var/vcap.local に配置されているので、それを見ることで確認可能。


その他

vcap_dev_setupが途中で失敗した際は、エラーメッセージを見ながら作業することになる。gemがないとかgemがないとかで失敗しやすい。また、ホストが増えてくるとデプロイツールの整備も必要になる。その辺の話は15日にする…予定。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/hamakn/20111211/1323615557
Connection: close