Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
i 
COPYRIGHT FUJITSU LIMITED 2014 
※本資料は CloudStack Advent Calendar 2014の 16日目のエントリです。 
CloudFoundry 2 on Apache CloudStac...
1 
COPYRIGHT FUJITSU LIMITED 2014 
1. 前提 
CloudFoundry環境を動作させる(構築す)環境として、以下あらかじめ準備ておく。 
・CloudStack環境(KVM使用) 
・UbuntuOSイメー...
2 
COPYRIGHT FUJITSU LIMITED 2014 
2. インセプションサーバの構築 
CloudFoundryのインストールにあたり、BOSHによるデプロイを行うための最初BOSH(Micro BOSH)サー バ(インセプシ...
3 
COPYRIGHT FUJITSU LIMITED 2014 
2.2.2. 内部作業領域のサイズ拡張 
作業時に内部で使用される領域(/tmp)に対して、領域不足ならいようあかじめCloudstack上で ストレージを作成しアタッチ・マ...
4 
COPYRIGHT FUJITSU LIMITED 2014 
パッケージの更新(upgrade)を行う。 
# apt-get upgrade 
2.3.2. acpiphpカーネルモジュールのアクティブ化 
以下のコマンドを例に、ac...
5 
COPYRIGHT FUJITSU LIMITED 2014 
(2) rbenvのインストール 
rbenvおよび関連パッケージを以下のコマンド例にイストルする。 
# apt-get install build-essential b...
6 
COPYRIGHT FUJITSU LIMITED 2014 
3. BOSHインストール 
3.1. BOSHのインストールとMicroBOSHの実行 
3.1.1. BOSHのインストール 
以下のコマンドを例に、gitを使用してBo...
7 
COPYRIGHT FUJITSU LIMITED 2014 
ーネルファイ(initrd.img-xxx-virtual、vmlinuz-xxx-virtual)のバージョンを確認し、/root/ bosh/bosh-stemcell/...
8 
COPYRIGHT FUJITSU LIMITED 2014 
it { should contain ' kernel /boot/vmlinuz-3.2.0-70-virtual ro root=UUID=' } 
it { shou...
9 
COPYRIGHT FUJITSU LIMITED 2014 
api_key="QBbqiA_mGMp23w8lX1zadH_PCruxaqj55iTtQgCQst5Pd5aJ1TrXKErTX3UKIvmx4Ok5WaJZNPwY0o...
10 
COPYRIGHT FUJITSU LIMITED 2014 
# ./kick_api.sh command=createSSHKeyPair name=cfmykey 
SEND URL: http://172.16.10.224:...
11 
COPYRIGHT FUJITSU LIMITED 2014 
cfwCAGlTAkEA0CdGyBRFNWaqKpLR1wugN0CPDrh4AkwSOCne64ReJiLDaLohcCjr 
ASHF/ShwyQ/lX/fZfo4u...
12 
COPYRIGHT FUJITSU LIMITED 2014 
resources: 
persistent_disk: 20512 
cloud_properties: 
instance_type: m1.large2 
# VMタ...
13 
COPYRIGHT FUJITSU LIMITED 2014 
3.1.7. ソースコードの修正 
(1) デバイスアタッチ処理関連 
メモ: デバイス名の仕様違いから、フォルトモジューではアタッチ時にエラが発生するためソースを修正しエ...
14 
COPYRIGHT FUJITSU LIMITED 2014 
(2) stemcellテンプレートVMのイメージサズ変更 
stemcellはクラウドにテンプレート登録する際rsyncされるので、その時点でルートサイズを決められ る。...
15 
COPYRIGHT FUJITSU LIMITED 2014 
3.1.8. マイクロボッシュのデプロイ 
(1) Proxyサーバの無効化 
必要に応じて、デプロイ処理のため、proxyの設定を一度無効にしておく。 
# unset ...
16 
COPYRIGHT FUJITSU LIMITED 2014 
Director 
Name firstbosh 
URL https://172.16.10.230:25555 
Version 1.2063.0 (release:c...
17 
COPYRIGHT FUJITSU LIMITED 2014 
(1) 追加ストレージの準備 
CloudstackGUIで追加用のボリューム(disk20gb)を作成し、FirstboshVMにアタッチしておく 
(2) Firstb...
18 
COPYRIGHT FUJITSU LIMITED 2014 
Filesystem Size Used Avail Use% Mounted on 
/ 
dev/vda1 10G 5.1G 4.5G 54% none 480M 16...
19 
COPYRIGHT FUJITSU LIMITED 2014 
Verifying stemcell... 
File exists and readable OK 
Verifying tarball... 
Read tarball...
20 
COPYRIGHT FUJITSU LIMITED 2014 
Stemcell uploaded and created.
21 
COPYRIGHT FUJITSU LIMITED 2014 
4. CloudFounryの展開 
4.1. CloudFoundryデプロイの準備 
4.1.1. Cloudstackインスタンスの帯域制限の解除 
起動されたインス...
22 
COPYRIGHT FUJITSU LIMITED 2014 
1 
qdisc pfifo_fast 0: dev vnet3 root refcnt 2 bands 3 priomap 1 0 1 
qdisc pfifo_fast...
23 
COPYRIGHT FUJITSU LIMITED 2014 
qdisc pfifo_fast 0: dev vnet4 root refcnt 2 bands 3 priomap 1 0 1 
qdisc pfifo_fast 0:...
24 
COPYRIGHT FUJITSU LIMITED 2014 
networks: 
- name: default 
type: dynamic 
cloud_properties: 
# Only for Basic Zone us...
25 
COPYRIGHT FUJITSU LIMITED 2014 
size: 8 
stemcell: 
name: bosh-cloudstack-kvm-ubuntu 
version: latest 
cloud_propertie...
26 
COPYRIGHT FUJITSU LIMITED 2014 
networks: 
- name: default 
default: [dns, gateway] 
- name: postgres 
release: cf 
te...
27 
COPYRIGHT FUJITSU LIMITED 2014 
- name: cloud_controller 
release: cf 
template: 
- cloud_controller_ng 
instances: 1 ...
28 
COPYRIGHT FUJITSU LIMITED 2014 
default: [dns, gateway] 
- name: dea 
release: cf 
template: dea_next 
instances: 1 
r...
29 
COPYRIGHT FUJITSU LIMITED 2014 
memory_mb: 2048 
disk_mb: 20000 
directory_server_protocol: http 
dea_next: *dea 
sysl...
30 
COPYRIGHT FUJITSU LIMITED 2014 
db_scheme: postgres 
address: 0.postgres.default.cf.microbosh 
port: 5524 
roles: 
- t...
31 
COPYRIGHT FUJITSU LIMITED 2014 
staging_upload_user: uploaduser 
staging_upload_password: c1oudc0w 
resource_pool: 
re...
32 
COPYRIGHT FUJITSU LIMITED 2014 
HH6Qlq/6UOV5wP8+GAcCQFgRCcB+hrje8hfEEefHcFpyKH+5g1Eu1k0mLrxK2zd+ 
4SlotYRHgPCEubokb2S1...
33 
COPYRIGHT FUJITSU LIMITED 2014
34 
COPYRIGHT FUJITSU LIMITED 2014 
4.1.3. マニフェスト内容の修正内容 
上記4.1.2.で作成したマニフェストの内容を修正し保存する。 
-------------------------------...
35 
COPYRIGHT FUJITSU LIMITED 2014 
※デプロイされたVMの確認コマンド 
# BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh vms
36 
COPYRIGHT FUJITSU LIMITED 2014 
5. アプリのプッシュテスト 
5.1. cfコマンドのインストール 
Githubからcf-cliの debファイルをダウンロード 
https://github.com...
37 
COPYRIGHT FUJITSU LIMITED 2014 
6. DBサービス(MySQLサービス)の展開 
以下にDBサービスとしてMySQLサービス(cf-mysql)のデプロイ実行手順を示す。 
6.1. ソースの取得 
# ...
38 
COPYRIGHT FUJITSU LIMITED 2014 
#- 172.16.10.244 
#- 172.16.10.245 
name: cf-mysql-broker 
properties: 
mysql_node: 
#...
39 
COPYRIGHT FUJITSU LIMITED 2014 
+-------------------+---------+---------------+---------------+..+------------ +------...
40 
COPYRIGHT FUJITSU LIMITED 2014 
# cf create-service-broker p-mysql admin password http://p-mysql.ssl.osscloud 
# cf en...
Upcoming SlideShare
Loading in …5
×

CloudFoundry 2 on Apache CloudStack 4.2.1

2,586 views

Published on

本資料はCloudStack Advent Calendar 2014の16日目のエントリです。Apache CloudStack 4.2.1の上にCloudFoundry 2環境を構築した際の手順メモになります。

Published in: Software
  • Be the first to comment

CloudFoundry 2 on Apache CloudStack 4.2.1

  1. 1. i COPYRIGHT FUJITSU LIMITED 2014 ※本資料は CloudStack Advent Calendar 2014の 16日目のエントリです。 CloudFoundry 2 on Apache CloudStack 4.2.1 Powered by 富士通株式会社 OSS技術センター はじめに 本資料は、Apache CloudStack 4.2.1の上に CloudFoundry 2環境を構築した際の手順メモです。 本手順は以下の環境を想定しています。 クラウド基盤 Cloudstack Ver4.2.1 VM Ubuntu 12.04 ストレージ領域 プライマリストレージ:約 350GB セカンダリストレージ:約150GB また、本手順では、特に指定がない限り管理者(root)を使用しています。
  2. 2. 1 COPYRIGHT FUJITSU LIMITED 2014 1. 前提 CloudFoundry環境を動作させる(構築す)環境として、以下あらかじめ準備ておく。 ・CloudStack環境(KVM使用) ・UbuntuOSイメージ(Ver12.04) ・以下のコンピュータオファリグ ○ コンピュータオファリグ コンピュータオファリグ名 CPU メモリ m1.small 1core 500MB m1.medium2 1core 2GB m1.large 2core 2GB m1.large2 2core 4GB ○ ディスクオファリング ディスクオファリング名 サイズ disk2gb 2GB disk10gb 10GB disk20gb 20GB
  3. 3. 2 COPYRIGHT FUJITSU LIMITED 2014 2. インセプションサーバの構築 CloudFoundryのインストールにあたり、BOSHによるデプロイを行うための最初BOSH(Micro BOSH)サー バ(インセプショサーバ)をCloudstack上にUbuntuVMを起動して構築する。 2.1. Ubuntuイメージの起動 あらかじめCloudstack上に準備したUbuntu12のイメージを利用してインセプショサーバとなるUbuntu の VMを起動する。 ※使用コンピュータオファリグ:m1.small 2.2. インセプションサーバ上での各設定変更 起動したUbuntuの VM上で、以下の各設定を行う。 2.2.1. rootログイン設定 インセプショサーバにrootユーザでのログインとリモトrootログイン許可の設定を行う。 (1) rootでログインし、パスワードの設定を行う。 $ sudo su – # passwd (2) rootでのssh接続を許可する設定 設定ファイル(sshd_config)を修正。 # vi /etc/ssh/sshd_config PermitRootLogin without-password ↓ PermitRootLogin yes ----- #PasswordAuthentication yes ↓ PasswordAuthentication yes (3) 設定更新 上記修正後プロセス再起動。 # initctl restart ssh
  4. 4. 3 COPYRIGHT FUJITSU LIMITED 2014 2.2.2. 内部作業領域のサイズ拡張 作業時に内部で使用される領域(/tmp)に対して、領域不足ならいようあかじめCloudstack上で ストレージを作成しアタッチ・マウンておく。 (1)ストレージの作成 アタッチするストレージ(20GB)をGUIから作成しアタッチする。 (2)領域のマウント 作成したストレージを/tmpにマウントする。 # mount /dev/vdb tmp ※ アタッチしたボリュームが/dev/vdbの場合 メモ: 参考インストール手順のセプショサバデフォ設定では、当該作業領域容量不足により内部 処理でエラーが発生していため、上記設定を追加すること対応行っ。 2.2.3. プロキシサーバの設定 必要に応じて、以下のコマンドを例に、インセプショサーバの環境変数(http_proxy、https_proxy)へ プロキシサーバを設定する。 設定例) export http_proxy=http://{Proxy Server}:{Port} export https_proxy=http:// {Proxy Server}:{Port} 2.3. インセプションサーバへのインストール 2.3.1. パッケージリポジトリの追加とupgradeの実行 apt-get実行用に、Japanese Teamのパッケージリポトを以下コマンド例に追加する。 # wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add - # wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt- key add - # wget https://www.ubuntulinux.jp/sources.list.d/precise.list -O /etc/apt/sources.list.d/ubuntu-ja.list # apt-get update
  5. 5. 4 COPYRIGHT FUJITSU LIMITED 2014 パッケージの更新(upgrade)を行う。 # apt-get upgrade 2.3.2. acpiphpカーネルモジュールのアクティブ化 以下のコマンドを例に、acpiphpカーネルモジュのアクティブ化を行う。 # modprobe acpiphp # sh -c "echo acpiphp >> /etc/modules" 2.3.3. 関連ツールのインストール 必要となる関連ツール(パッケジ)のインストを以下コマド例に行う。 (1) gitインストール # apt-add-repository ppa:git-core/ppa # apt-get update # sudo apt-get install git-core (2) Ruby、Gems関連の事前インストール # apt-get install g++ make libxslt-dev libxml2-dev libsqlite3-dev zlib1g-dev libreadline-dev libssl-dev libcurl4-openssl-dev (3) stemcell関連のインストール # apt-get install libsqlite3-dev genisoimage libmysqlclient-dev libpq-dev debootstrap kpartx 2.3.4. Rubyインストール (1) プロキシサーバの設定 gitインストールのために以下コマドを例プロキシサバgitの configに設定する。 # git config --global http.proxy http://mp067159:8160584683@rep.proxy.nic.fujitsu.com:8080/ # git config --global https.proxy http://mp067159:8160584683@rep.proxy.nic.fujitsu.com:8080/
  6. 6. 5 COPYRIGHT FUJITSU LIMITED 2014 (2) rbenvのインストール rbenvおよび関連パッケージを以下のコマンド例にイストルする。 # apt-get install build-essential bison libreadline6-dev curl git-core zlib1g- dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev autoconf libncurses5-dev # git clone http://github.com/sstephenson/rbenv.git .rbenv # git clone http://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build (3) profileの設定 rbenvを 使うために必要な設定~/.bash_profile に記述する。 $ vi ~/.bash_profile export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)" 保存後に反映する。 $ source ~/.bash_profile (4) Rubyインストール rbenvを利用し、Rubyのインストールリを表示する。 # rbenv install --list リストされたバージョンを参照してRubyのインストールを行う。 # rbenv install 1.9.3-p547 # rbenv global 1.9.3-p547 # ruby --version ruby 1.9.3p547 (2014-05-14 revision 45962) [x86_64-linux]
  7. 7. 6 COPYRIGHT FUJITSU LIMITED 2014 3. BOSHインストール 3.1. BOSHのインストールとMicroBOSHの実行 3.1.1. BOSHのインストール 以下のコマンドを例に、gitを使用してBoshのインストールを行う。 # git clone https://github.com/cloudfoundry-community/bosh-cloudstack-cpi.git ~/bosh # cd ~/bosh 3.1.2. 依存gemのインストール 以下のコマンドを例に、依存gemをインストールする # gem install bundler # bundle 3.1.3. stemcellの作成 メモ: stemcell(用VMイメージ)は、公開手順で済みをダウンロドし使用するように記述されて いるが、同イメージは使用できなため独自に意す必要あり。(AWS向け、Hper-V向け、Openstak 向け等のstemcellは公開されているものがくつあ、Cloustack向けは上記手順指定の古いも の 2つ以外にはない) また公開手順にはstemcellの作成コマンドも記述されているが、実際には使えなためOpenstack用 ドキュメントやソース等を参考に以下の手順作成した。 (1) ベースイメジ作成 Boshで使用するVMイメージ(stemcell)を作成する。 # bundle exec rake stemcell:build_os_image[ubuntu,precise,/tmp/ubuntu_base_image.tgz] オプション説明:ubuntu … OS名を指定する。 :precise … OSのバージョンを指定(ubuntuの場合、preciseや lucid) :/tmp/ubuntu_base_image.tgz … 作成ファイル名 (2) ソース(bosh-stemcell)内のカーネルバジョン指定箇所修正 上記コマンドで一時的に作成されるイメージファル用ディレクトリ(/mnt/stemcells/null/null/ ubuntu/work/chroot)もしくは作成た圧縮イメージファル内の「/boot」内に格納されているカ
  8. 8. 7 COPYRIGHT FUJITSU LIMITED 2014 ーネルファイ(initrd.img-xxx-virtual、vmlinuz-xxx-virtual)のバージョンを確認し、/root/ bosh/bosh-stemcell/spec/stemcells/ubuntu_precise_spec.rbの 3行目から14行目(describe ~ end まで)に記載されている各カーネルバジョンを確認した合わせ修正す。 # ls /mnt/stemcells/null/ubuntu/work/chroot/boot System.map-3.2.0-70-virtual config-3.2.0-70-virtual initrd.img-3.2.0-70-virtual abi-3.2.0-70-virtual grub vmlinuz-3.2.0-70-virtual ※作成したubuntuのカーネルバジョンが「3.2.0-70」であることを確認 # vi /root/bosh/bosh-stemcell/spec/stemcells/ubuntu_precise_spec.rb (略) describe 'Ubuntu 12.04 stemcell', stemcell_image: true do context 'installed by image_install_grub' do describe file('/boot/grub/grub.conf') do it { should be_file } it { should contain 'default=0' } it { should contain 'timeout=1' } it { should contain 'title Ubuntu 12.04.5 LTS (3.2.0-68-virtual)' } it { should contain ' root (hd0,0)' } it { should contain ' kernel /boot/vmlinuz-3.2.0-68-virtual ro root=UUID=' } it { should contain ' selinux=0' } it { should contain ' initrd /boot/initrd.img-3.2.0-68-virtual' } end (略) ↓ 以下のように修正 (略) describe 'Ubuntu 12.04 stemcell', stemcell_image: true do context 'installed by image_install_grub' do describe file('/boot/grub/grub.conf') do it { should be_file } it { should contain 'default=0' } it { should contain 'timeout=1' } it { should contain 'title Ubuntu 12.04.5 LTS (3.2.0-70-virtual)' } it { should contain ' root (hd0,0)' }
  9. 9. 8 COPYRIGHT FUJITSU LIMITED 2014 it { should contain ' kernel /boot/vmlinuz-3.2.0-70-virtual ro root=UUID=' } it { should contain ' selinux=0' } it { should contain ' initrd /boot/initrd.img-3.2.0-70-virtual' } end (略) (3) stemcellイメージの作成 以下のコマンドを実行し、(1)で作成したベースイメジからstemcellイメージを生成する。 # bundle exec rake stemcell:build_with_local_os_image[cloudstack,ubuntu,precise,ruby,/tmp/ubuntu_base_image.tgz] 3.1.4. Proxyサーバの非参照設定 内部のローカルアドレス(インセプショサバやから起動されるFirstboshサーバ)を Proxyサーバなしで参照するように「no_proxy」環境変数を指定する。 # export no_proxy=172.16.10.224,172.16.10.227,172.16.10.228 ※管理サーバの IP、ルータVMの IPとインセプショサーバ自身のIPを除外対象に指定 3.1.5. キーペアファイルの作成 (1) スクリプトファイル作成 Cloudstackの APIを使用してSSHキーペアファイルを作成するため、以下のスクリプトる。 メモ: 公開手順にあるキーペア作成用スクリプトは正常動しなかっため、以下のを独自てキーペアファイル作成を行っいる。 # cat kick_api.sh ----------------------------------------- #!/bin/bash # # kick_api.sh # # please set your host address="http://172.16.10.224:8080" # Cloudstack管理サーバのURL # please set your api key (CloudStackGUIであらかじめ作成しておく)
  10. 10. 9 COPYRIGHT FUJITSU LIMITED 2014 api_key="QBbqiA_mGMp23w8lX1zadH_PCruxaqj55iTtQgCQst5Pd5aJ1TrXKErTX3UKIvmx4Ok5WaJZNPwY0o1Y_ORP2A" # please set your secret key(CloudStackGUIであらかじめ作成しておく) secret_key="oN5z4NafX9OrwknE39f9sT_rhSrfdCa1CRuoCjO3iD214wzM4JGLIT2TjwmvBerWLuM9OOdnCEtyVpPy02rOkg" api_path="/client/api?" if [ $# -lt 1 ]; then echo "usage: $0 command=... paramter=... parameter=..."; exit; elif [[ $1 != "command="* ]]; then echo "usage: $0 command=... paramter=... parameter=..."; exit; elif [ $1 == "command=" ]; then echo "usage: $0 command=... paramter=... parameter=..."; exit; fi data_array=("$@" "apikey=${api_key}") temp1=$(echo -n ${data_array[@]} | ¥ tr " "¥n" | ¥ sort -fd -t'=' | ¥ perl -pe's/([^-_.~A-Za-z0-9=¥s])/sprintf("%%%02X", ord($1))/seg'| ¥ tr "A-Z" "a-z" | ¥ tr "¥n" "&" ) signature=$(echo -n ${temp1[@]}) signature=${signature%&} signature=$(echo -n $signature | ¥ openssl sha1 -binary -hmac $secret_key | ¥ openssl base64 ) signature=$(echo -n $signature | ¥ perl -pe's/([^-_.~A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg') url=${address}${api_path}$(echo -n $@ | tr " "&")"&"apikey=$api_key"&"signature=$signature echo " SEND URL: $url" curl ${url} (2) キーペア作成 上記で作成したスクリプトファイルを以下のコマンドとおりに実行、キーペアを作成する。(name=はキー名 として任意の名前を指定可能) コマンド:./kick_api.sh command=createSSHKeyPair name=<キー名> 例)
  11. 11. 10 COPYRIGHT FUJITSU LIMITED 2014 # ./kick_api.sh command=createSSHKeyPair name=cfmykey SEND URL: http://172.16.10.224:8080/client/api?command=createSSHKeyPair&name=cfmykey&apikey=QBbqiA_mGMp23w8lX1zadH_PCruxaqj55iTtQgCQst5Pd5aJ1TrXKErTX3UKIvmx4Ok5WaJZNPwY0o1Y_ORP2A&signature=gPmSPYqd2fIaSf5%2BX2K%2FvEdgaD8%3D <?xml version="1.0" encoding="UTF-8"?><createsshkeypairresponse cloud-stack-version="4.2.1"><keypair><privatekey>-----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQCqPLtCyjC3GeLwJODEI9eJLnaanRzxpvU2BWfuUTMem5/s8hwe FN2cr7ZC5deW9cR1P394OFtWVarOdvDymHntUsZeJMxGY3ad5WlNL5OBLy1aqSIk T7p7S7ZHfFpEZ8Qx6M13E3xc27T9o+DJMPV300vjSL3sJy+vAcrIGyusQQIDAQAB AoGAE/mwV3P2J2YINPl+zkUOY3BqRlYtMUXP/BjCSzqH7w1/xIPcPMNiBaKwlkT1 +Sa5eLCMuoSSYx0GP9fBChZOKBPScMrC/77s03U8lLDSaDPid45st8U9dQy6Id97 ny1D3+hU2NNvaVPCZYqtvsGhhLhQ3Hj7YnmbqEJN7I8pTUkCQQDRXknbOkjjm1uX rqter6jU8r1TS9a3HpJIgbxWD+9qNZmBDJJIb7dB+6NXg3/oljJynB48LRgDlU5Y cfwCAGlTAkEA0CdGyBRFNWaqKpLR1wugN0CPDrh4AkwSOCne64ReJiLDaLohcCjr ASHF/ShwyQ/lX/fZfo4u/Nld3c5IO9ydmwJBAK024Muq8Nq9kY1wSP9RPNDQ8qmT ONTPSh8KlpJtJJouNg16JRwgsPC6C20/sfbvLFV9q9YFSLTONb8ermvJg1kCQCsw WxFck1eXK6uVtxBliyKrtIMbZ1siqY0ZsvUvC9Hh2KW8KP/6nXgop8n1QCGXuMIG zQvjOICiIUXKbVZuWg0CQEqhaJ1xWZkxd2EuDcPr+JPBJSS/DyOOtdqNQBTpoJLz fVkHNwwStJIU4x9/CULbRtvqedyTsIYmnfSKWZtoVJ0= -----END RSA PRIVATE KEY----- </privatekey><name>cfmykey</name><fingerprint>db:12:1e:5c:79:0c:ba:06:35:51:7e:4c:21:a9:c9:94</fingerprint></keypair></createsshkeypairresponse>root@ubuntu14:~# (3) キーファイル保存 表示された実行結果の「-----BEGIN RSA PRIVATE KEY-----」から「-----END RSA PRIVATE KEY- ----」の間内容について、キーファイルを作成して保存する。 # vi /root/cfmykey -----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQCqPLtCyjC3GeLwJODEI9eJLnaanRzxpvU2BWfuUTMem5/s8hwe FN2cr7ZC5deW9cR1P394OFtWVarOdvDymHntUsZeJMxGY3ad5WlNL5OBLy1aqSIk T7p7S7ZHfFpEZ8Qx6M13E3xc27T9o+DJMPV300vjSL3sJy+vAcrIGyusQQIDAQAB AoGAE/mwV3P2J2YINPl+zkUOY3BqRlYtMUXP/BjCSzqH7w1/xIPcPMNiBaKwlkT1 +Sa5eLCMuoSSYx0GP9fBChZOKBPScMrC/77s03U8lLDSaDPid45st8U9dQy6Id97 ny1D3+hU2NNvaVPCZYqtvsGhhLhQ3Hj7YnmbqEJN7I8pTUkCQQDRXknbOkjjm1uX rqter6jU8r1TS9a3HpJIgbxWD+9qNZmBDJJIb7dB+6NXg3/oljJynB48LRgDlU5Y
  12. 12. 11 COPYRIGHT FUJITSU LIMITED 2014 cfwCAGlTAkEA0CdGyBRFNWaqKpLR1wugN0CPDrh4AkwSOCne64ReJiLDaLohcCjr ASHF/ShwyQ/lX/fZfo4u/Nld3c5IO9ydmwJBAK024Muq8Nq9kY1wSP9RPNDQ8qmT ONTPSh8KlpJtJJouNg16JRwgsPC6C20/sfbvLFV9q9YFSLTONb8ermvJg1kCQCsw WxFck1eXK6uVtxBliyKrtIMbZ1siqY0ZsvUvC9Hh2KW8KP/6nXgop8n1QCGXuMIG zQvjOICiIUXKbVZuWg0CQEqhaJ1xWZkxd2EuDcPr+JPBJSS/DyOOtdqNQBTpoJLz fVkHNwwStJIU4x9/CULbRtvqedyTsIYmnfSKWZtoVJ0= -----END RSA PRIVATE KEY----- 3.1.6. マニフェストファイルの作成 インセプショサーバから最初のBOSHサーバ(firstbosh)をデプロイする際に使用するマニフェストァイ ル(micro_bosh.yml)を作成する。 ・micro_bosh.ymlファイルを準備します # mkdir -p ~/deployments/firstbosh # vi ~/deployments/firstbosh/micro_bosh.yml メモ: 以下のマニフェスト作成において、公開手順ではわからなったもや変更を加え部分。 ・networkの ipにインセプショサーバのipを指定 ・endpointの URL指定で/client/api をアドレスに付与して指定 ・default_security_groupsでセキュリティグループ名を[""]で括って指定する。 ・指定するセキュリティグループは、TCP、UDPでの全て通信が可能になっいる必要あり。 ※上記は全てデフォルトで発生したエラーから判断、ソスやOpenstack用マニュアルを参考に確認し たもの 以下の内容で作成する。 name: firstbosh logging: level: DEBUG network: type: dynamic ip: 172.16.10.227 #インセプショサーバのIPアドレス
  13. 13. 12 COPYRIGHT FUJITSU LIMITED 2014 resources: persistent_disk: 20512 cloud_properties: instance_type: m1.large2 # VMタイプ(コンピューオファリグ) cloud: plugin: cloudstack properties: cloudstack: endpoint: http://172.16.10.224:8080/client/api # Cloudstackの管理サーバアドレスに、/client/api を付与したもの指定 api_key: QBbqiA_mGMp23w8lX1zadH_PCruxaqj55iTtQgCQst5Pd5aJ1TrXKErTX3UKIvmx4Ok5WaJZNPwY0o1Y_ORP2A # キーペア作成時に指定したもの secret_access_key: oN5z4NafX9OrwknE39f9sT_rhSrfdCa1CRuoCjO3iD214wzM4JGLIT2TjwmvBerWLuM9OOdnCEtyVpPy02rOkg # キーペア作成時に指定したもの default_key_name: cfmykey # キーペア作成時に指定した名 private_key: /root/cfmykey # キーペア作成時に出力内容を保存したファイル名 state_timeout: 600 state_timeout_volume: 1200 stemcell_public_visibility: true default_zone: zone01 # Zone name of your instaption server # Only for Basic Zone users. Delete these lines on Advanced default_security_groups: ["default"] # TCP、UDPでの全て通信が可能なセキュリティグループ名を[""]で括って指定 registry: endpoint: http://admin:admin@172.16.10.227:25889 # インセプショサーバのIPを指定 user: admin password: admin
  14. 14. 13 COPYRIGHT FUJITSU LIMITED 2014 3.1.7. ソースコードの修正 (1) デバイスアタッチ処理関連 メモ: デバイス名の仕様違いから、フォルトモジューではアタッチ時にエラが発生するためソースを修正しエラが発生ないように対応 デバイスアタッチの不具合対応として、以下ソーコド修正を行っおく。 ファイル名:~/bosh/bosh_cloudstack_cpi/lib/cloud/cloudstack/cloud.rb コード最下部の以分を修正 ----------------------------------------- def volume_device_name(id) # assumes device name begins with "dev/sd" and volume_name is numeric cloud_error("Unkown device id given") if device_id.nil? suffix = ('a'..'z').to_a[device_id] cloud_error("too many disks attached") if suffix.nil? "/dev/sd#{suffix}" end ----------------------------------------- ↓以下に修正 ----------------------------------------- def volume_device_name(id) # assumes device name begins with "dev/sd" and volume_is numeric cloud_error("Unkown device id given") if device_id.nil? suffix = ('a'..'z').to_a[device_id-1] cloud_error("too many disks attached") if suffix.nil? "/dev/vd#{suffix}" end ----------------------------------------- メモ: ソースコドはvirtio前提ではないため、virtioでのディスクアタッチに合うよバイ名を取得す る部分で「-1」している
  15. 15. 14 COPYRIGHT FUJITSU LIMITED 2014 (2) stemcellテンプレートVMのイメージサズ変更 stemcellはクラウドにテンプレート登録する際rsyncされるので、その時点でルートサイズを決められ る。以下のソース修正をすることで、使用するストレージ領域の状況に合わせてstemcellテンプレートのイ メージサイズを調整することが可能。 ■ firstbosh(MicroBOSH)の VMサイズ変更方法 # vi ~/bosh/bosh_cloudstack_cpi/lib/cloud/cloudstack/cloud.rb 100行目: # disk_size = stemcell_properties["disk"] || (1024 * 10) disk_size = stemcell_properties["disk"] || (1024 * 5) ⇒ bosh micro deploy <path_to_stemcell> ■ cfのデプロイ時VM(各job用)のサイズ変更方法 firstboshサーバにログイン 該当ソースを検索 # find /var/vcap -name cloud.rb | grep cloudstack /var/vcap/data/packages/director/5c21b3ba0f4303ff3a767092b55e6cf446a9b42b/.. 中略../cloudstack/cloud.rb 上記と同様に100行目付近を編集 # disk_size = stemcell_properties["disk"] || (1024 * 10) disk_size = stemcell_properties["disk"] || (1024 * 5) sed で編集するとき # sed -i -e "s/(1024 ¥* 10)/(1024 ¥* 5)/g" <cloud.rbのパス> ⇒ upload stemcell <path_to_stemcell> メモ: cloudstackが保持するstemcellのディスクサイズはソーコドに直書きされている。10GBでは大き すぎる(リソースを節約したい)めstemcell登録時にサイズ調整した。
  16. 16. 15 COPYRIGHT FUJITSU LIMITED 2014 3.1.8. マイクロボッシュのデプロイ (1) Proxyサーバの無効化 必要に応じて、デプロイ処理のため、proxyの設定を一度無効にしておく。 # unset http_proxy # unset https_proxy (2) Micro BOSHによるデプロイ 以下のコマンドを例に、デプロイ実行する。 # cd ~/deployments # BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh micro deployment firstbosh # BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh micro deploy /tmp/<3.1.3.(3) で作成したstemcellファイル名> (3) firstboshのアドレス確認 デプロイが正常に行われると、実用の最初ンスタ(firstbosh)が起動される。 インスタのIPアドレスを /root/deployments/firstbosh/bosh_micro_deploy.logファイルの targetへの接続ログから確認する。 (4) ターゲットの指定 上記で確認したIPを使用して、新たに起動されインスタをーゲットと指定する。 # BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh target https://172.16.10.229: 25555 ※ ユーザ名/パスワドは admin/admin ※ ログインし直す場合は、 # BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh login でログインする (5) ステータの確認 上記でデプロイしたbosh環境の状況を以下のコマンドで確認する。 # BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh status ----------------------------------------- Config /root/.bosh_config
  17. 17. 16 COPYRIGHT FUJITSU LIMITED 2014 Director Name firstbosh URL https://172.16.10.230:25555 Version 1.2063.0 (release:c8e032de bosh:c8e032de) User admin UUID f90c0235-6a22-401a-a0b0-2e619fb8f31a CPI cloudstack dns enabled (domain_name: microbosh) compiled_package_cache disabled snapshots disabled Deployment not set 3.2. BOSHデプロイの準備 3.2.1. Proxyサーバの設定 環境変数へproxyの再設定を行い、Cloudstack管理サーバ、 インセプショFirstbosh(ターゲット)の各IPアドレスを no_proxy環境変数へ追加して設定する。 # export no_proxy=172.16.10.224,172.16.10.227,172.16.10.228,172.16.10.230,172.16.10.229,192.168.3.224 3.2.2. 不足領域の追加 メモ: Firstbosh上では、あらかじめ最終的なパッケージ格納領域として/var/vcap/store については特別 な領域が確保(用ボリュームのアタッチ)されている、当該作業は同様必要 (格納パッケージの一時展開作業用)にもかわらず、特別な領域準備はされていため同処理で エラーとなってしまう。そのため手動で領域を確保おかければらない。 次項の bosh upload release を行う際に、Firstboshの VMで領域不足エラー「Error 500001: Uploading release archive failed. Insufficient space on BOSH director in /var/vcap/data/tmp/director/release20140910-2239-1mz1yey」が発生するため、FirstboshVMへロ グインして対象ディレクトリに追加スをマウ領域の確保行う。
  18. 18. 17 COPYRIGHT FUJITSU LIMITED 2014 (1) 追加ストレージの準備 CloudstackGUIで追加用のボリューム(disk20gb)を作成し、FirstboshVMにアタッチしておく (2) FirstboshVMへのログイン キーファイルを使用してFirstboshVMへのログインを行う。 # ssh -i cfmyke vcap@172.16.10.xxx password:c1oudc0w (3.1.5.で作成したキーペアを指定する) (3)スト レージ領域の作成とマウン以下のコマンドを例に、FirstboshVM内からアタッチしたボリュームのマウントを行う。 ○マウント実行例 $ ls /dev/vd* /dev/vda vda1 vdb vdb1 vdc $ sudo mkfs -t ext4 /dev/vdc mke2fs 1.41.11 (14-Mar-2010) Filesystem label= OS type: Linux (略) Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 20 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. $ sudo ls /mnt $ sudo mount /dev/vdc mnt $ sudo cp -r /var/vcap/data/tmp/* mnt $ ls /mnt director lost+found $ ls tmp/ director $ sudo umount /mnt $ sudo mount /dev/vdc var/vcap/data/tmp $ ls /var/vcap/data/tmp director lost+found $ df -h
  19. 19. 18 COPYRIGHT FUJITSU LIMITED 2014 Filesystem Size Used Avail Use% Mounted on / dev/vda1 10G 5.1G 4.5G 54% none 480M 168K 480M 1% /dev none 486M 0 0% /dev/shm none 486M 56K 1% /var/run none 486M 0 0% /var/lock none 486M 0 0% /lib/init/rw /dev/loop0 127M 7.8M 118M 7% /tmp /dev/vdb1 30G 621M 28G 3% var/vcap/store /dev/vdc 20G 431M 19G 3% var/vcap/data/tmp 3.2.3. cf-releaseの設定 (1) cf-releaseのインストール 以下のコマンドを実行し、cf-releaseのインストールを行う。 # git clone https://github.com/cloudfoundry/cf-release.git ~/cf-release # cd ~/cf-release (2) cf-releaseのアップロード /root/cf-release/releases内で一番新しいcf-xxx.ymlファイルを確認して、以下のコマンド通り に指定してアップロードを実行する。 # BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh upload release releases/cf-183.yml ※時間がかなりる ※実行後「Release uploaded」の表示で完了。せず終わった場合には再実行する。 3.2.4. stemcellのアップロード 以下のコマンドを例にstemcellのアップロードを行う。 コマンド:BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh upload stemcell /tmp/<3.1.3.(3)で作成したstemcellファイル名> 例) # BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh upload stemcell /tmp/bosh-stemcell-3-cloudstack-kvm-ubuntu-precise.tgz
  20. 20. 19 COPYRIGHT FUJITSU LIMITED 2014 Verifying stemcell... File exists and readable OK Verifying tarball... Read tarball OK Manifest exists OK Stemcell image file OK Stemcell properties OK Stemcell info ------------- Name: bosh-cloudstack-kvm-ubuntu Version: 3 Checking if stemcell already exists... No Uploading stemcell... bosh-stemcell: 100% |ooooooooooooooooooooooooooooooooooooooooooooooooooo| 444.2MB 205.8KB/s Time: 00:36:49 Director task 3 Started update stemcell Started update stemcell > Extracting archive. Done (00:22) Started update stemcell > Verifying manifest. Done (00:00) Started update stemcell > Checking if this already exists. Done (00: 00:00) Started update stemcell > Uploading bosh-cloudstack-kvm-ubuntu/2063 to the cloud. Done (00:05:18) Started update stemcell > Save bosh-cloudstack-kvm-ubuntu/2063 (3a514c5b-1c41-471f-95ad-459ac64dfb79). Done (00:01) Done update stemcell (00:05:41) Task 3 done Started 2014-09-11 01:42:33 UTC Finished 2014-09-11 01:48:14 UTC Duration 00:05:41
  21. 21. 20 COPYRIGHT FUJITSU LIMITED 2014 Stemcell uploaded and created.
  22. 22. 21 COPYRIGHT FUJITSU LIMITED 2014 4. CloudFounryの展開 4.1. CloudFoundryデプロイの準備 4.1.1. Cloudstackインスタンスの帯域制限の解除 起動されたインスタに対してCloudstackで帯域制限が掛けられているため、全のインスタ限を以下のコマンド実行例参考にあらかじめ解除しておく。 メモ: cfのデプロイ時に多量ダウンードを行うため、帯域制限がかっまではタムアト発生しイが進まない状況に。解決策としてcloudstackが設定している各インスタの帯域制限(tc)を解除。 cloudstack側の設定でも可能だが、必要な帯域幅等情報いためとりあえず全解除。 (1) kvmホストにログイン (2) インスタのネットワークデバ名を確認 # cat /var/run/libvirt/qemu/i-2-21-VM.xml | grep "<target dev='vnet" <target dev='vnet9'/> (3) 帯域制限を確認 # tc -s qdisc | grep vnet9 -A1 qdisc htb 1: dev vnet9 root refcnt 2 r2q 10 default 1 direct_packets_stat 0 Sent 6095754871 bytes 12742204 pkt (dropped 0, overlimits 3292486 requeues 0) -- qdisc ingress ffff: dev vnet9 parent fff1 ---------------- Sent 19413493186 bytes 19071637 pkt (dropped 3642733, overlimits 0 requeues 0) (4) 帯域制限を解除 解除前の制限一覧: # tc qdisc show qdisc mq 0: dev eth1 root qdisc mq 0: dev eth2 root qdisc mq 0: dev eth3 root qdisc pfifo_fast 0: dev vnet0 root refcnt 2 bands 3 priomap 1 0 1 qdisc pfifo_fast 0: dev vnet1 root refcnt 2 bands 3 priomap 1 2 0 1 qdisc pfifo_fast 0: dev vnet2 root refcnt 2 bands 3 priomap 1 0
  23. 23. 22 COPYRIGHT FUJITSU LIMITED 2014 1 qdisc pfifo_fast 0: dev vnet3 root refcnt 2 bands 3 priomap 1 0 1 qdisc pfifo_fast 0: dev vnet4 root refcnt 2 bands 3 priomap 1 0 1 qdisc pfifo_fast 0: dev vnet5 root refcnt 2 bands 3 priomap 1 0 1 qdisc pfifo_fast 0: dev vnet6 root refcnt 2 bands 3 priomap 1 0 1 qdisc htb 1: dev vnet7 root refcnt 2 r2q 10 default 1 direct_packets_stat 0 qdisc ingress ffff: dev vnet7 parent fff1 ---------------- qdisc pfifo_fast 0: dev vnet8 root refcnt 2 bands 3 priomap 1 0 1 qdisc htb 1: dev vnet9 root refcnt 2 r2q 10 default 1 direct_packets_stat 0 qdisc ingress ffff: dev vnet9 parent fff1 ---------------- qdisc htb 1: dev vnet10 root refcnt 2 r2q 10 default 1 direct_packets_stat 0 qdisc ingress ffff: dev vnet10 parent fff1 ---------------- 解除: # tc qdisc del dev vnet10 root # tc qdisc del dev vnet10 ingress 解除後の制限一覧: # tc qdisc show qdisc mq 0: dev eth1 root qdisc mq 0: dev eth2 root qdisc mq 0: dev eth3 root qdisc pfifo_fast 0: dev vnet0 root refcnt 2 bands 3 priomap 1 0 1 qdisc pfifo_fast 0: dev vnet1 root refcnt 2 bands 3 priomap 1 0 1 qdisc pfifo_fast 0: dev vnet2 root refcnt 2 bands 3 priomap 1 0 1 qdisc pfifo_fast 0: dev vnet3 root refcnt 2 bands 3 priomap 1 2 0 1
  24. 24. 23 COPYRIGHT FUJITSU LIMITED 2014 qdisc pfifo_fast 0: dev vnet4 root refcnt 2 bands 3 priomap 1 0 1 qdisc pfifo_fast 0: dev vnet5 root refcnt 2 bands 3 priomap 1 0 1 qdisc pfifo_fast 0: dev vnet6 root refcnt 2 bands 3 priomap 1 0 1 qdisc htb 1: dev vnet7 root refcnt 2 r2q 10 default 1 direct_packets_stat 0 qdisc ingress ffff: dev vnet7 parent fff1 ---------------- qdisc pfifo_fast 0: dev vnet8 root refcnt 2 bands 3 priomap 1 2 0 1 qdisc pfifo_fast 0: dev vnet9 root refcnt 2 bands 3 priomap 1 0 1 qdisc htb 1: dev vnet10 root refcnt 2 r2q 10 default 1 direct_packets_stat 0 qdisc ingress ffff: dev vnet10 parent fff1 ---------------- (5) 解除を確認 # tc -s qdisc | grep vnet9 -A1 qdisc pfifo_fast 0: dev vnet9 root refcnt 2 bands 3 priomap 1 0 1 Sent 66374090 bytes 982435 pkt (dropped 0, overlimits 0 requeues 0) 4.1.2. デプロイ用マニフェストの作成 以下の内容でデプロイ用マニフェストファイル(cf.yml)を作成する。 ※以下の内容はデフォルト値。追加修正降に記載 name: cf director_uuid: 884aab78-3b73-494c-aa6f-b7fe9b2d7e1b # UUID shown by the bosh status command ● 確認して記述releases: - name: cf version: 147 # Verison number of the uploded release ●現環境で使用しているのは 183 ●
  25. 25. 24 COPYRIGHT FUJITSU LIMITED 2014 networks: - name: default type: dynamic cloud_properties: # Only for Basic Zone users security_groups: ## - bosh # Securiy group which opens all TCP and UDP ports - default # ●defaultで全port開けているのでそま指定● ## # Only for Advanced Zone users ## network_name: <name> # subnetwork ● 無効化# Only for Advanced Zone users # Network with floating IP addresses - name: floating type: vip cloud_properties: {} compilation: workers: 6 network: default reuse_compilation_vms: true cloud_properties: instance_type: m1.medium # VM type ephemeral_volume: Datadisk 40GB # Data disk offering name of additonal update: canaries: 1 canary_watch_time: 30000-60000 update_watch_time: 30000-60000 max_in_flight: 4 resource_pools: - name: small network: default
  26. 26. 25 COPYRIGHT FUJITSU LIMITED 2014 size: 8 stemcell: name: bosh-cloudstack-kvm-ubuntu version: latest cloud_properties: instance_type: m1.small # VM type ephemeral_volume: Datadisk 40GB # Data disk offering name of additonal - name: large network: default size: 1 stemcell: name: bosh-cloudstack-kvm-ubuntu version: latest cloud_properties: instance_type: m1.large # VM type ephemeral_volume: Datadisk 40GB # Data disk offering name of additional jobs: - name: nats release: cf template: - nats instances: 1 resource_pool: small networks: - name: default default: [dns, gateway] - name: syslog_aggregator release: cf template: - syslog_aggregator instances: 1 resource_pool: small persistent_disk: 65536
  27. 27. 26 COPYRIGHT FUJITSU LIMITED 2014 networks: - name: default default: [dns, gateway] - name: postgres release: cf template: - postgres instances: 1 resource_pool: small persistent_disk: 65536 networks: - name: default default: [dns, gateway] properties: db: databases - name: nfs_server release: cf template: - debian_nfs_server instances: 1 resource_pool: small persistent_disk: 65536 networks: - name: default default: [dns, gateway] - name: uaa release: cf template: - uaa instances: 1 resource_pool: small networks: - name: default default: [dns, gateway]
  28. 28. 27 COPYRIGHT FUJITSU LIMITED 2014 - name: cloud_controller release: cf template: - cloud_controller_ng instances: 1 resource_pool: small networks: - name: default default: [dns, gateway] properties: ccdb: ccdb - name: router release: cf template: - gorouter instances: 1 resource_pool: small networks: - name: default default: [dns, gateway] # Only for Advanced zone users # You can set floating addresses to jobs # Acquire Public IP addresses on your Web UI before deploying # (Don't remove `default` network above even if floating` is added) - name: floating static_ips: - <IP address for Router> - name: health_manager release: cf template: - health_manager_next instances: 1 resource_pool: small networks: - name: default
  29. 29. 28 COPYRIGHT FUJITSU LIMITED 2014 default: [dns, gateway] - name: dea release: cf template: dea_next instances: 1 resource_pool: large networks: - name: default default: [dns, gateway] properties: domain: your.domain.name # replace these values with your domain system_domain: your.domain.name system_domain_organization: your.domain.name app_domains: - your.domain.name networks: apps: default management: default nats: address: 0.nats.default.cf.microbosh port: 4222 user: nats password: c1oudc0w authorization_timeout: 5 router: port: 8081 status: port: 8080 user: gorouter password: c1oudcow dea: &dea
  30. 30. 29 COPYRIGHT FUJITSU LIMITED 2014 memory_mb: 2048 disk_mb: 20000 directory_server_protocol: http dea_next: *dea syslog_aggregator: address: 0.syslog-aggregator.default.cf.microbosh port: 54321 nfs_server: address: 0.nfs-server.default.cf.microbosh network: "*.cf.microbosh" idmapd_domain: your.domain.name debian_nfs_server: no_root_squash: true databases: &databases db_scheme: postgres address: 0.postgres.default.cf.microbosh port: 5524 roles: - tag: admin name: ccadmin password: c1oudc0w - tag: admin name: uaaadmin password: c1oudc0w databases: - tag: cc name: ccdb citext: true - tag: uaa name: uaadb citext: true ccdb: &ccdb
  31. 31. 30 COPYRIGHT FUJITSU LIMITED 2014 db_scheme: postgres address: 0.postgres.default.cf.microbosh port: 5524 roles: - tag: admin name: ccadmin password: c1oudc0w databases: - tag: cc name: ccdb citext: true ccdb_ng: *ccdb uaadb: db_scheme: postgresql address: 0.postgres.default.cf.microbosh port: 5524 roles: - tag: admin name: uaaadmin password: c1oudc0w databases: - tag: uaa name: uaadb citext: true cc_api_version: v2 cc: &cc logging_level: debug external_host: api srv_api_uri: http://api.your.domain.name cc_partition: default db_encryption_key: c1oudc0w bootstrap_admin_email: admin@your.domain.name bulk_api_password: c1oudc0w uaa_resource_id: cloud_controller
  32. 32. 31 COPYRIGHT FUJITSU LIMITED 2014 staging_upload_user: uploaduser staging_upload_password: c1oudc0w resource_pool: resource_directory_key: cc-resources # Local provider when using NFS fog_connection: provider: Local packages: app_package_directory_key: cc-packages droplets: droplet_directory_key: cc-droplets default_quota_definition: runaway ccng: *cc login: enabled: false uaa: url: http://uaa.your.domain.name spring_profiles: postgresql no_ssl: true catalina_opts: -Xmx768m -XX:MaxPermSize=256m resource_id: account_manager jwt: signing_key: | -----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQDHFr+KICms+tuT1OXJwhCUmR2dKVy7psa8xzElSyzqx7oJyfJ1 JZyOzToj9T5SfTIq396agbHJWVfYphNahvZ/7uMXqHxf+ZH9BL1gk9Y6kCnbM5R6 0gfwjyW1/dQPjOzn9N394zd2FJoFHwdq9Qs0wBugspULZVNRxq7veq/fzwIDAQAB AoGBAJ8dRTQFhIllbHx4GLbpTQsWXJ6w4hZvskJKCLM/o8R4n+0W45pQ1xEiYKdA Z/DRcnjltylRImBD8XuLL8iYOQSZXNMb1h3g5/UGbUXLmCgQLOUUlnYt34QOQm+0 KvUqfMSFBbKMsYBAoQmNdTHBaz3dZa8ON9hh/f5TT8u0OWNRAkEA5opzsIXv+52J duc1VGyX3SwlxiE2dStW8wZqGiuLH142n6MKnkLU4ctNLiclw6BZePXFZYIK+AkE xQ+k16je5QJBAN0TIKMPWIbbHVr5rkdUqOyezlFFWYOwnMmw/BKa1d3zp54VP/P8 +5aQ2d4sMoKEOfdWH7UqMe3FszfYFvSu5KMCQFMYeFaaEEP7Jn8rGzfQ5HQd44ek lQJqmq6CE2BXbY/i34FuvPcKU70HEEygY6Y9d8J3o6zQ0K9SYNu+pcXt4lkCQA3h jJQQe5uEGJTExqed7jllQ0khFJzLMx0K6tj0NeeIzAaGCQz13oo2sCdeGRHO4aDh
  33. 33. 32 COPYRIGHT FUJITSU LIMITED 2014 HH6Qlq/6UOV5wP8+GAcCQFgRCcB+hrje8hfEEefHcFpyKH+5g1Eu1k0mLrxK2zd+ 4SlotYRHgPCEubokb2S1zfZDWIXW3HmggnGgM949TlY= -----END RSA PRIVATE KEY----- verification_key: | -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHFr+KICms+tuT1OXJwhCUmR2d KVy7psa8xzElSyzqx7oJyfJ1JZyOzToj9T5SfTIq396agbHJWVfYphNahvZ/7uMX qHxf+ZH9BL1gk9Y6kCnbM5R60gfwjyW1/dQPjOzn9N394zd2FJoFHwdq9Qs0wBug spULZVNRxq7veq/fzwIDAQAB -----END PUBLIC KEY----- cc: client_secret: c1oudc0w admin: client_secret: c1oudc0w batch: username: batchuser password: c1oudc0w client: autoapprove: - cf clients: cf: override: true authorized-grant-types: password,implicit,refresh_token authorities: uaa.none scope: cloud_controller.read,write,openid,password.cloud_controller.admin,scim.read,write access-token-validity: 7200 refresh-token-validity: 1209600 scim: users: - admin|c1oudc0w|scim.write,read,openid,cloud_controller.admin - services|c1oudc0w|scim.write,read,openid,cloud_controller.admin
  34. 34. 33 COPYRIGHT FUJITSU LIMITED 2014
  35. 35. 34 COPYRIGHT FUJITSU LIMITED 2014 4.1.3. マニフェスト内容の修正内容 上記4.1.2.で作成したマニフェストの内容を修正し保存する。 ----------------------------------------- メモ:必要な編集点 ■ヘルスマネージャの名前変更:cfのバージョンアップに対応 health_manager ⇒ hm9000 ■etcdの追加:hm9000その他jobに必要なため ■nfs_serverのアクセス制限 allow_from_entries: の設定 ■ccの quota_definitionsを設定 ■ccの security_group_definitionsの設定 ■ccに buildpackのインストール設定:pushするアプリの動作ため ■項目名 ccdb: ⇒ db: に変更 ■デプロイ時コンパル用のVM台数:compilation.workers デフォルトの6台ではタイムアウト多数発 生のため2台に変更 ■loggregator、trafficcontrollerの追加:cfコマンドユーザへのログ参照機能提供ため ■haproxyの追加:haproxy job動作確認のため など ■VM台数変化、およびcloudstackのリソース状況に合わせてresource_poolsを変更 4.2. CloudFoundryのデプロイ 4.2.1. デプロイの実行 以下のコマンドを例に、ニフェストァイル使用してBOSHデプロイを実行。 # BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh deployment ~/cf.yml # BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh deploy メモ: deployがマニフェスト設定不足止等でまった場合は、修正後再度deployコマンドで続きを実行 してくれる。jobの起動待ちタイムアウト等で止まった場合は: A. 再度deployコマンドでjob起動待ちから続きが実行される B. 内部ステータの不都合によりデプロイ続き実行が出来ない の2つ場合があり、Bの場合は一度delete deploymentコマンドで初期状態に戻して再度deploy実 行。delete deploymentコマンドが正常終了しない場合は残っているVMを cloudstackの UIからdestroyしてexpangeの必要。
  36. 36. 35 COPYRIGHT FUJITSU LIMITED 2014 ※デプロイされたVMの確認コマンド # BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh vms
  37. 37. 36 COPYRIGHT FUJITSU LIMITED 2014 5. アプリのプッシュテスト 5.1. cfコマンドのインストール Githubからcf-cliの debファイルをダウンロード https://github.com/cloudfoundry/cli#downloads 「Debian64bit」 # pkgd -i cf-cli_amd64.deb 5.2. DNSの登録 haproxyの jobが動いてるVMの IPアドレスをDNSに登録して、「api」「uaa」「loggregator」およびア プリ名(「dora」はテストアプリ名)を全てそのIPに CNAMEとして登録。 DNS設定例: : cf IN A 172.16.10.243 api IN CNAME cf uaa IN CNAME cf loggregator IN CNAME cf dora IN CNAME cf : 5.3. cfクライアントとしての初期設定 # cf api http://api.subdomain.domain # cf auth admin c1oudc0w # cf create-org me # cf target -o me # cf create-space development # cf target -s development 5.4. テストアプリのプッシュ cf-releaseソース内のテト用アプリをッシュして動作確認。 # cd ~/cf-release/src/acceptance-tests/assets/dora/ # cf push # curl http://dora.subdomain.domain
  38. 38. 37 COPYRIGHT FUJITSU LIMITED 2014 6. DBサービス(MySQLサービス)の展開 以下にDBサービスとしてMySQLサービス(cf-mysql)のデプロイ実行手順を示す。 6.1. ソースの取得 # git clone https://github.com/cloudfoundry/cf-mysql-release # ./update # git checkout v14 # git submodule update --recursive 6.2. Upload Releaseの実行 # BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh upload release releases/cf-mysql-14.yml ※実行前に、Proxyサーバの設定(http_proxy環境変数の設定)が必要 ※インセプショサーバのルートディスクに、空き容量が 500MB以上必要 6.3. マニフェストの作成 MySQLサービスのデプロイ用にマニフェトァルを作成する。 # vi ~/cf-mysql-release/cf-mysql-cloudstack.yml ※natsの ipは bosh vms で調べて記入 ※lifecycle: errand の jobはとりあえずコメントアウト ※デプロイ前はVMの ipが分からないため mysql/0,1 haproxy の ip設定部分はコメントアウしておく コメントアウする部分: name: mysql networks: #dynamic_ips: # - 172.16.10.244 # - 172.16.10.245 properties: #cluster_ips: # - 172.16.10.244 # - 172.16.10.245 #haproxy_ips: # - 172.16.10.243 name: haproxy properties: #mysql_ips:
  39. 39. 38 COPYRIGHT FUJITSU LIMITED 2014 #- 172.16.10.244 #- 172.16.10.245 name: cf-mysql-broker properties: mysql_node: #host: 172.16.10.243 <- haproxyの ip 6.4. MySQLサービスのデプロイ (1) 仮デプロイの実行 以下のコマンドを実行し、MySQLサービスの仮デプロイを行う。 # BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh deployment cf-mysql-cloudstack.yml # BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh deploy (2) IPアドレスの確認 上記(1)の実行でVMが作成されたのち、エラー「cluster_ipsが設定されていな」で止まるため、新し い VMの IPアドレスを以下のコマンドで確認する。 # BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh vms (3) 再デプロイ 先ほどのコメントアウ部分に正しいIPアドレスを書き込んで再度デプロイを行う。 # vi ~/cf-mysql-release/cf-mysql-cloudstack.yml # BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh deploy デプロイ後VMディスク使用量: # BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh vms cf-cloudstack-mysql --vitals +-------------------+---------+---------------+---------------+..+------------ +------------+------------+ | Job/index State Resource Pool IPs |..| System Ephemeral | Persistent | | |..| Disk Usage Usage | Disk
  40. 40. 39 COPYRIGHT FUJITSU LIMITED 2014 +-------------------+---------+---------------+---------------+..+------------ +------------+------------+ | cf-mysql-broker/0 | running small | 172.16.10.231 |..| 26% 81% | n/a | haproxy/0 running small 172.16.10.243 |..| 26% 5% | n/a | mysql/0 running large 172.16.10.245 |..| 26% 13% | 28% | mysql/1 running large 172.16.10.244 |..| 26% 13% | 28% +-------------------+---------+---------------+---------------+..+------------ +------------+------------+ # BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh vms cf-cloudstack-mysql --vitals +-------------------+---------+---------------+---------------+..+------------ +------------+------------+ | Job/index State Resource Pool IPs |..| System Ephemeral | Persistent | |..| Disk Usage Usage | Disk +-------------------+---------+---------------+---------------+..+------------ +------------+------------+ | cf-mysql-broker/0 | running | small 172.16.10.231 |..| 26% 81% | n/a | haproxy/0 running small 172.16.10.243 |..| 26% 5% | n/a | mysql/0 running large 172.16.10.245 |..| 26% | 13% | 28% | mysql/1 running large 172.16.10.244 |..| 26% 13% | 28% +-------------------+---------+---------------+---------------+..+------------ +------------+------------+ 6.5. cfサービスの設定 参照しているDNSサーバに mysql-brokerの IPアドレスを「p-mysql.ssl.osscloud」で登録し、以下 のコマンドを実行してcfサービスの設定を行う。
  41. 41. 40 COPYRIGHT FUJITSU LIMITED 2014 # cf create-service-broker p-mysql admin password http://p-mysql.ssl.osscloud # cf enable-service-access p-mysql 確認 # cf service-access

×