Cloud Foundry multinode setup using dev_setup(Chef)1. 第3回 Cloud Foundry 輪読会
dev_setupを利用した
Cloud Foundry
マルチノードセットアップ
Katsunori Kawaguchi
@hamakn
2011-12-15
3. アジェンダ
1. dev_setupの基本的な使い方とコード読み
2. 設定ファイルの書き方
3. ハマりポイント
4. dev_setupの改造
1. ログの集約
2. 大量のノードの管理
3. コンポーネントの追加
TODO: 端折ることなく
20分で終わらせる!!
4. 自己紹介
• 川口 克則 @hamakn
• NTTコム所属
• Web/スマートフォンアプリの開発
主にRails
• Cloud Foundryを検証中(2011年10月~)
– 最近は、アカウント払出/管理アプリを作ったり、
vcapノードの追加/管理ツールを作ったり。
5. ATNDアンケート結果-1
輪読会で最も知りたいこと、
やりたいことは何ですか?(1つ選択)
・コードリーディング 11
・VCAPの構築の情報共有 9
・CF上でのアプリケーションの構築 4
に関する情報共有
この辺の人向け
・CFを使い始めるための 5
概要や設定などの入門的内容
7. VCAPのdev_setupフォルダとは
• VCAPコンポーネントをマルチノードで
セットアップするためのツール群
• 内部でchef(chef-solo)を利用
• CF本家の見解
– We’ve been working on a replacement for
the vcap_setup script based on Chef.
• 現状セットアップできるコンポーネント
– RT, CC, DEA, HM, Service(Gateway, Node)
NATS Server, CCDB
9. configファイルの構造
• 例: deaの場合
deployment:
name: "dea"
domain: “yourdomain.net"
jobs:
install:
- dea:
local_route: “dea001"
logging: "debug" セットアップするコンポーネントの情報
secure: "true“
multi_tenant: “true” (この場合、DEA)
enforce_ulimit: "false"
installed:
- nats_server:
host: “nats001" セットアップ済のコンポーネントの情報
port: "4222"
user: "nats" (この場合、DEAの通信するNATS)
password: "nats"
10. configファイルの書き方
• 設定可能な値
– dev_setup/cookbooks/*/templates 内の
configのひな形(erb)を見て確認
• デフォルト値
– dev_setup/cookbooks/*/attributes/default.rb
を見て確認
12. ハマりポイント
• いろいろあります!
• トラブルシュート お品書き
1. Gem not foundが出る
2. Service Gatewayが動かない
3. CCDBのないCCのセットアップに失敗する
4. Rubyのパスが通らない あるいは、
CCDBにrails consoleからつなぎたい
13. Gem not foundが出る
• 症状
– vcap_logger, eventmachine-cloudfoundry
などの、CF独自gemが not found
– HM, DEAなどのセットアップで発生
• 原因
– CCのvender/cacheにしかgemが置かれていないこと
• 対処法
– Gemをコピー cp cloud_controller/vender/cache/*
dea/vender/cache/
– commonの場合はフォルダから作る
14. Service Gatewayが動かない
• 症状
– Service Gatewayの起動はするが、ログを見ると
Failed registering with cloud controller, status=404
• 原因
– Service GatewayからCCへのRESTアクセスで
apiの名前解決に失敗
• 対処法
– Service GatewayのhostsにRTを設定
• 間違い: RTの上にLBがいる場合はLB
• LBがいる場合はBounce Back通信 (t.co/4w38LIIs)
にならないように設定する必要アリ
15. CCDBのないCCの
セットアップに失敗する
• 症状
– vcap_dev_setup 実行中に
FATAL: ArgumentError: bash[Setup PostgreSQL..
• 原因
– CCのchefの構成情報(role)にCCDBがあるのに、
configファイルにはCCDBの情報がない
• 対処法
– dev_setup/roles/cloud_controller.json から
recipe[ccdb] の行を消す
16. RubyのPATHが通らない あるいは
CCDBにrails consoleからつなぎたい
• 症状
– ruby –v # => 1.8.7 ..
• 対処法
– {vcap_root}/.deployments/*/deploy/rubies/..
にrubyがいるのでPATHを通す
– rails consoleへのつなげ方
• {vcap_root}/.deployments/*/config/*.yml を
{vcap_root}/vcap/cloud_controller/config に cp
• {vcap_root}/vcap/cloud_controller/ で
bundle exec rails console production
18. ログの集約
• (r)syslogを使う
– gem vcap_logger の仕事
VCAP::Logging::Sink::SyslogSink
– コンポーネントの起動configファイルに
log: syslog: を設定すればOK
• 他のログ収集ツールを使う
– VCAP::Logging::Sink::FluentSink とか誰か!
19. 大量ノードの管理
• hamaknの解: Capistranoを使う
– やりたいこと
• コードの(ローリング && 手動)アップデート
• デプロイサーバでの集中管理
– とりあえず作った / 使い方
• cap deploy -S paas_config=mypaas.yml
• cap deploy –S host=cf001 –S component=dea
• 別解: 構成管理ツールを使う
– Chef, Pappet
20. コンポーネントの追加
• 例: stagerを追加した
– 追加が必要なもの
• 既存のコードを参考に作る
• dev_setup/cookbooks/stager
attributes, recipes, templatesなど
• dev_setup/roles/stager.json
– 修正が必要なもの 全部で5行でした。
• dev_setup/bin/vcap
• dev_setup/lib/job_dependency.rake
• Dev_setup/lib/job_manager.rb
21. 振り返り
1. dev_setupの基本的な使い方とコード読み
2. 設定ファイルの書き方
3. ハマりポイント
4. dev_setupの改造
1. ログの集約
2. 大量のノードの管理
3. コンポーネントの追加
CHECK: 端折ることなく
20分で終われたか?
22. まとめ
• dev_setupを利用した
マルチノード(ホスト、VM)での
VCAPのセットアップ方法の説明と、
その際のハマりポイントや工夫を話ました。
• ブログにも一部書いています
http://d.hatena.ne.jp/hamakn
• Google Groups等で共有していきましょう!
24. 第3回
Cloud Foundry 輪読会
19:05開始~
しばらくおまちください
Wifi: SSID: **** KEY: **********
26. ATNDアンケート結果-1
輪読会で最も知りたいこと、
やりたいことは何ですか?(1つ選択)
・コードリーディング 11
・VCAPの構築の情報共有 9
・CF上でのアプリケーションの構築 4
に関する情報共有
・CFを使い始めるための 5
概要や設定などの入門的内容
27. ATNDアンケート結果-2
どちら方面からの参加ですか?
(複数回答可)
・開発(Java系) 10
・開発(LL言語系) 10
・インフラ構築 10
・インフラ運用 7
・その他
・CF自身に興味がある 2
・Node.jsでのサービス開発 1
・テクニカルサポート 1
・UX系 1