Your SlideShare is downloading. ×
Nise-BOSH で Cloud Foundry を 1VM に構築
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Nise-BOSH で Cloud Foundry を 1VM に構築

2,245
views

Published on

Published in: Technology

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,245
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
18
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Nise-BOSHでCloudFoundryを1VMに構築2014/04/26 NECソフト大塚元央
  • 2. Page 2 © NEC Corporation 2013▌ 導入 自己紹介 モチベーション Cloud Foundry 構成▌ 1VM Cloud Foundry の構築 流れ Nise-BOSH のインストール Cloud Foundry のリリース作成 Cloud Foundry のインストール目次目次
  • 3. 大塚元央 (Yuanying)▌ 所属: NECソフト ITシステム事業部▌ Twitter: @yuanying▌ 趣味 トライアスロン▌ 古い昔の趣味 Mac• iExtractMP3 Ruby• ConnectImporter (http://labs.3machinae.com/garmin2runkeeper)Page 3 © NEC Corporation 2010導入自己紹介
  • 4. もっと気軽に Cloud Foundry の最新版を試したい▌ BOSH IaaS統合は良いんだけど、ローカルで環境作るのどうするの? BOSH 自体で 1VM+ も使いたくない。▌ Nise-BOSH これがあれば Vagrant で試せる! 複数ジョブテンプレートを一度にインストールすれば 1VM で CloudFoundry が動くんじゃ?• https://github.com/yuanying/nise_bosh#multi-monitrc-spike• https://github.com/yuanying/cf-release– cf-release もちょっと修正する必要があった。 参考• https://github.com/cloudfoundry/microPage 4 © NEC Corporation 2013導入モチベーション
  • 5. Cloud Foundry の最低構成は?▌ cf-release/jobs たくさんあるけど全部使ったりしないよね? とりあえず service なんて無くて良い、動けば。 最新のコンポーネントを使いたい。• router よりgorouter• cloud_controller_ngPage 5 © NEC Corporation 2013導入Cloud Foundry 構成
  • 6. Cloud Foundry を構成する最低インタフェースPage 6 © NEC Corporation 2013導入Cloud Foundry 構成じゃあこれらをcf-release の Job Template で実装すると?
  • 7. Page 7 © NEC Corporation 2013導入Cloud Foundry 構成依存関係を調査してみた。(実行時には上にあるコンポーネントから)
  • 8. Page 8 © NEC Corporation 2013導入Cloud Foundry 構成最新コンポーネントを試そうと思うと、こうなる。
  • 9. Page 9 © NEC Corporation 20131. Nise-BOSH のインストール2. Cloud Foundry のリリース作成3. Cloud Foundry のインストール1VM Cloud Foundry の構築流れ
  • 10. Page 10 © NEC Corporation 2013▌ 本家でなく、複数ジョブテンプレートインストールに対応したブランチを利用する。 後々もっと奇麗な形で複数ジョブテンプレートのインストールに対応するので、この手順は多分非推奨…。 dea_next用に gen-stemcellする必要があるかと思いきや、、最新版のdea_nextだとrootfs用のパッケージがcf-release に用意してあるため必要ない模様。1VM Cloud Foundry の構築Nise-BOSH のインストール$ git clone https://github.com/yuanying/nise_bosh.git$ git checkout –bmulti-monitrc-spike origin/multi-monitrc-spike$ bundle install$ ./bin/init$ apt-get install debootstraprunit
  • 11. Page 11 © NEC Corporation 20131VM Cloud Foundry の構築Cloud Foundry のリリース作成$ git clone https://github.com/cloudfoundry/cf-release.git$ cd ./cf-release$ git remote add yuanyinghttps://github.com/yuanying/cf-release.git$ git pull yuanying masterFrom https://github.com/yuanying/cf-release* branch master -> FETCH_HEADUpdating 4fd9c30..c9d596aFast-forwardjobs/cloud_controller_ng/monit | 2 ++jobs/dea_next/templates/dea.yml.erb | 12 ++++++++++++jobs/dea_next/templates/warden_ctl | 18 ------------------jobs/hbase_master/templates/+--hbase_zookeeper_ctl | 4 +packages/nginx/packaging | 1 +packages/nginx_next/packaging | 1 +packages/ruby/packaging | 1 +packages/ruby_next/packaging | 1 +8 files changed, 20 insertions(+), 20 deletions(-)1VM で動くように、いくつかcf-release を修正。
  • 12. cloud_controllerでのnginxの無効化▌ 何故かnginxが 1VM で CF 構築時に、staging の邪魔をしていたのでよくわからないけど使うのを止めた。Page 12 © NEC Corporation 20101VM Cloud Foundry の構築Cloud Foundry のリリース作成--- a/jobs/cloud_controller_ng/monit+++ b/jobs/cloud_controller_ng/monit@@ -4,10 +4,8 @@ check process cloud_controller_ngstop program "/var/vcap/jobs/cloud_controller_ng/bin/cloud_controller_ng_ctl stop"group vcap+<% if p("ccng.use_nginx", true) %>check process nginx_ccngwith pidfile /var/vcap/sys/run/nginx_ccng/nginx.pidstart program "/var/vcap/jobs/cloud_controller_ng/bin/nginx_ctl start"stop program "/var/vcap/jobs/cloud_controller_ng/bin/nginx_ctl stop"group vcap+<% end %>
  • 13. warden_ctrからstemcell.tar.gz関連を削除Page 13 © NEC Corporation 20101VM Cloud Foundry の構築Cloud Foundry のリリース作成--- a/jobs/dea_next/templates/warden_ctl+++ b/jobs/dea_next/templates/warden_ctl@@ -24,24 +24,6 @@ case $1 inulimit -c unlimited- rootfs_path=$DATA_DIR/rootfs- rootfs_tgz=/var/vcap/stemcell_base.tar.gz-- # Extract rootfs if needed- if [ ! -d $rootfs_path ]- then- # Make sure its parent directory exists- mkdir -p $(dirname $rootfs_path)-- # Extract to temporary path, then rename to target path.- # This makes sure that it is not possible that we end up with directory- # that contains a partially extracted archive.- tmp_path=$(mktemp --tmpdir=$(dirname $rootfs_path) -d)- chmod 755 $tmp_path- tar -C $tmp_path -zxf $rootfs_tgz- mv $tmp_path $rootfs_path- fiこれはたぶん、本家の消し忘れ。
  • 14. 1VM なのでnfsの利用を削除Page 14 © NEC Corporation 20101VM Cloud Foundry の構築Cloud Foundry のリリース作成--- a/jobs/serialization_data_server/templates/serialization_data_server_ctl+++ b/jobs/serialization_data_server/templates/serialization_data_server_ctl@@ -36,7 +36,9 @@ case $1 in<% end %>mkdir -p $SNAPSHOT_DIR+ <% unless properties.micro %>check_mount "$MT_OPTS" "$MT_EXPORT" "$SNAPSHOT_DIR"+ <% end %>mkdir -p $SDS_TMP_UPLOAD_DIRchownvcap:vcap $SDS_TMP_UPLOAD_DIR
  • 15. Page 15 © NEC Corporation 2013▌ ここでNise-BOSH にリクエスト 最新のリリースを試したいだけな場合にわざわざ bosh create release したくない!• bosh sync blobs だけで大丈夫なんじゃ? Job Template と Package の取得方法がちょっとごっちゃになってる。• Job Template はリリースレポジトリのソース(jobs ディレクトリ)そのまま使うのに、• Package はなんで .dev_builds / .final_buildsを使うのか? リリースファイルを指定したら .dev_builds / .final_buildsの jobs とpackage を使う、 リリースレポジトリを指定したら、レポジトリ下のソースを利用するようにして欲しい(したい)。1VM Cloud Foundry の構築Cloud Foundry のリリース作成$ ./update$ gem install –no-ri –no-rdocbosh_cli$ bosh create release --force
  • 16. Page 16 © NEC Corporation 2013▌ 最低構成の Job Template をインストール。 問題は、deployment manifest (micro_ng.yml) の内容…。 cloudfoundry/micro を参考に• https://github.com/cloudfoundry/micro/blob/master/deploy/manifest-ng.yml 実際に使った deployment manifest• https://gist.github.com/yuanying/2b41f8bd3819de0bd5201VM Cloud Foundry の構築Cloud Foundry のインストール$ bundle exec ./bin/nise-bosh ../cf-release ../micro_ng.yml -n 127.0.0.1 postgres$ bundle exec ./bin/nise-bosh ../cf-release ../micro_ng.yml -n 127.0.0.1 nats$ bundle exec ./bin/nise-bosh ../cf-release ../micro_ng.yml -n 127.0.0.1 gorouter$ bundle exec ./bin/nise-bosh ../cf-release ../micro_ng.yml -n 127.0.0.1 dea_next$ bundle exec ./bin/nise-bosh ../cf-release ../micro_ng.yml -n 127.0.0.1 health_manager_next$ bundle exec ./bin/nise-bosh ../cf-release ../micro_ng.yml -n 127.0.0.1 cloud_controller_ng$ bundle exec ./bin/nise-bosh ../cf-release ../micro_ng.yml -n 127.0.0.1 serialization_data_server$ bundle exec ./bin/nise-bosh ../cf-release ../micro_ng.yml -n 127.0.0.1 uaa$ bundle exec ./bin/nise-bosh ../cf-release ../micro_ng.yml -n 127.0.0.1 vcap_redis
  • 17. Page 17 © NEC Corporation 2013▌ properties.microを true に▌ ドメインにxip.ioを指定。 IP アドレスベースのワイルドカードDNS。便利。1VM Cloud Foundry の構築Cloud Foundry のインストール---deployment: microproperties:micro: truedomain: 192.168.33.10.xip.iocc_props: ccnghm_props: health_manager_ccng
  • 18. Page 18 © NEC Corporation 2013▌ ccng.use_nginxを false に▌ ccngのプロパティはデフォルト値が spec で決まっているものが多いが、Nise-BOSH がプロパティのデフォルト値に対応していないため、すべて指定する必要があり大変。。1VM Cloud Foundry の構築Cloud Foundry のインストールccng: &ccnguse_nginx: falsedefault_quota_definition: freesrv_api_uri: http://api.192.168.33.10.xip.iologging_level: debugbulk_api_password: bulk_api_passwordstaging_upload_user: stagingstaging_upload_password: stagingexternal_host: apiuaa_resource_id: cloud_controllerquota_definitions:free:total_services: 10memory_limit: 1024non_basic_services_allowed: false… (以下略)
  • 19. Page 19 © NEC Corporation 2013▌ uaa.no_sslを true に▌ cfクライアントを追加 (vmcの代わり) autoapproveに登録しないとブラウザベースの認証しないと使えない。 cloud_controller.admin scope の追加。1VM Cloud Foundry の構築Cloud Foundry のインストールuaa:spring_profiles: postgresqlno_ssl: trueautoapprove:- cfscim:users:- micro@vcap.me|micro|scim.write,scim.read,openidclients:cf:override: trueauthorized-grant-types: implicitauthorities: uaa.nonescope:cloud_controller.read,cloud_controller.write,openid,password.write,cloud_controller.admin,scim.read,scim.write
  • 20. 起動!Page 20 © NEC Corporation 20131VM Cloud Foundry の構築Cloud Foundry のインストール$ mkdir -p /var/vcap/shared$ chownvcap:vcap /var/vcap/shared$ mkdir -p /var/vcap/store$ ./bin/run-job start postgres$ ./bin/run-job start nats$ ./bin/run-job start gorouter$ ./bin/run-job start dea_next$ ./bin/run-job start health_manager_next$ ./bin/run-job start cloud_controller_ng$ ./bin/run-job start serialization_data_server$ ./bin/run-job start uaa$ ./bin/run-job start vcap_redis
  • 21. Page 21 © NEC Corporation 2012