SlideShare uma empresa Scribd logo
1 de 41
Baixar para ler offline
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)を使用しています。
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
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
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/sou
rces.list.d/ubuntu-ja.list
# apt-get update
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 l
ibreadline-dev libssl-dev libcurl4-openssl-dev
(3)stemcell 関連のインストール
# apt-get install libsqlite3-dev genisoimage libmysqlclient-dev libpq-dev debo
otstrap kpartx
2.3.4.Ruby インストール
(1)プロキシサーバの設定
git インストールのために以下のコマンドを例にプロキシサーバを git の config に設定する。
# git config --global http.proxy http://mp067159:8160584683@rep.proxy.nic.fuj
itsu.com:8080/
# git config --global https.proxy http://mp067159:8160584683@rep.proxy.nic.fu
jitsu.com:8080/
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 aut
oconf libncurses5-dev
# git clone http://github.com/sstephenson/rbenv.git .rbenv
# git clone http://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/rub
y-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]
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_im
age.tgz]
オプション説明:ubuntu … OS 名を指定する。
:precise … OS のバージョンを指定(ubuntu の場合、precise や lucid)
:/tmp/ubuntu_base_image.tgz … 作成ファイル名
(2)ソース(bosh-stemcell)内のカーネルバージョン指定箇所修正
上記コマンドで一時的に作成されるイメージファイル作成用ディレクトリ(/mnt/stemcells/null/null/
ubuntu/work/work/chroot)もしくは作成した圧縮イメージファイル内の「/boot」内に格納されているカ
7
COPYRIGHT FUJITSU LIMITED 2014
ーネルファイル(initrd.img-xxx-virtual、vmlinuz-xxx-virtual)のバージョンを確認し、/root/
bosh/bosh-stemcell/spec/stemcells/ubuntu_precise_spec.rb の 3 行目から 14 行目(desc
ribe ~ end まで)に記載されている各カーネルバージョンを確認したバージョンに合わせて修正する。
# ls /mnt/stemcells/null/null/ubuntu/work/work/chroot/boot
System.map-3.2.0-70-virtual config-3.2.0-70-virtual initrd.img-3.2.0-70-vir
tual
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=UUI
D=' }
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)' }
8
COPYRIGHT FUJITSU LIMITED 2014
it { should contain ' kernel /boot/vmlinuz-3.2.0-70-virtual ro root=UUI
D=' }
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,preci
se,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 であらかじめ作成しておく)
9
COPYRIGHT FUJITSU LIMITED 2014
api_key="QBbqiA_mGMp23w8lX1zadH_PCruxaqj55iTtQgCQst5Pd5aJ1TrXKErTX3UKIvmx4Ok5
WaJZNPwY0o1Y_ORP2A"
# please set your secret key(CloudStackGUI であらかじめ作成しておく)
secret_key="oN5z4NafX9OrwknE39f9sT_rhSrfdCa1CRuoCjO3iD214wzM4JGLIT2TjwmvBerWL
uM9OOdnCEtyVpPy02rOkg"
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"&"signat
ure=$signature
echo " SEND URL: $url"
curl ${url}
(2)キーペア作成
上記で作成したスクリプトファイルを以下のコマンドのとおりに実行し、キーペアを作成する。(name=はキー名
として任意の名前を指定可能)
コマンド:./kick_api.sh command=createSSHKeyPair name=<キー名>
例)
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_PCruxaqj55iTtQgCQst5Pd5aJ1TrXKErTX3UKI
vmx4Ok5WaJZNPwY0o1Y_ORP2A&signature=gPmSPYqd2fIaSf5%2BX2K%2FvEdgaD8%3D
<?xml version="1.0" encoding="UTF-8"?><createsshkeypairresponse cloud-stack-v
ersion="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:7
e:4c:21:a9:c9:94</fingerprint></keypair></createsshkeypairresponse>root@ubunt
u14:~#
(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
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 アドレス
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_PCruxaqj55iTtQgCQst5Pd5aJ1TrXKErTX3UKIvmx
4Ok5WaJZNPwY0o1Y_ORP2A
# キーペア作成時に指定したもの
secret_access_key: oN5z4NafX9OrwknE39f9sT_rhSrfdCa1CRuoCjO3iD214wzM4JGLIT
2TjwmvBerWLuM9OOdnCEtyVpPy02rOkg
# キーペア作成時に指定したもの
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 Zone
default_security_groups: ["default"]
# TCP、UDP での全ての通信が可能なセキュリティグループ名を[""]で括って指定
registry:
endpoint: http://admin:admin@172.16.10.227:25889
# インセプションサーバの IP を指定
user: admin
password: admin
13
COPYRIGHT FUJITSU LIMITED 2014
3.1.7.ソースコードの修正
(1)デバイスアタッチ処理関連
メモ:
デバイス名の仕様の違いから、デフォルトのモジュールではデバイスアタッチ時にエラーが発生するため、
ソースを修正しエラーが発生しないように対応
デバイスアタッチの不具合対応として、以下のソースコードの修正を行っておく。
ファイル名:~/bosh/bosh_cloudstack_cpi/lib/cloud/cloudstack/cloud.rb
コード最下部の以下の部分を修正
-----------------------------------------
def volume_device_name(device_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(device_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-1]
cloud_error("too many disks attached") if suffix.nil?
"/dev/vd#{suffix}"
end
-----------------------------------------
メモ:
ソースコードは virtio 前提ではないため、virtio でのディスクアタッチに合うようにデバイス名を取得す
る部分で「-1」している
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 登録時にサイズ調整した。
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
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,17
2.16.10.229,192.168.3.224
3.2.2.不足領域の追加
メモ:
Firstbosh 上では、あらかじめ最終的なパッケージ格納領域として/var/vcap/store については特別
な領域が確保(領域確保用ボリュームのアタッチ)がされているが、当該作業領域は同様の領域が必要
(格納パッケージの一時展開作業用)にもかかわらず、特別な領域の準備はされていないために同処理で
エラーとなってしまう。そのため手動で領域を確保しておかなければならない。
次項の bosh upload release を行う際に、Firstbosh の VM で領域不足エラー「Error 500001: U
ploading release archive failed. Insufficient space on BOSH director in /var/vc
ap/data/tmp/director/release20140910-2239-1mz1yey」が発生するため、FirstboshVM へロ
グインして対象ディレクトリに追加ディスクをマウントして領域の確保を行う。
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 /dev/vda1 /dev/vdb /dev/vdb1 /dev/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
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 486M 0% /dev/shm
none 486M 56K 486M 1% /var/run
none 486M 0 486M 0% /var/lock
none 486M 0 486M 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-18
3.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-stem
cell-3-cloudstack-kvm-ubuntu-precise.tgz
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 stemcell archive. Done (00:00:22)
Started update stemcell > Verifying stemcell manifest. Done (00:00:00)
Started update stemcell > Checking if this stemcell already exists. Done (00:
00:00)
Started update stemcell > Uploading stemcell bosh-cloudstack-kvm-ubuntu/2063
to the cloud. Done (00:05:18)
Started update stemcell > Save stemcell bosh-cloudstack-kvm-ubuntu/2063 (3a51
4c5b-1c41-471f-95ad-459ac64dfb79). Done (00: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
20
COPYRIGHT FUJITSU LIMITED 2014
Stemcell uploaded and created.
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 ffff: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 2 2 2 1 2 0 0 1
1 1 1 1 1 1 1
qdisc pfifo_fast 0: dev vnet1 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1
1 1 1 1 1 1 1
qdisc pfifo_fast 0: dev vnet2 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1
22
COPYRIGHT FUJITSU LIMITED 2014
1 1 1 1 1 1 1
qdisc pfifo_fast 0: dev vnet3 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1
1 1 1 1 1 1 1
qdisc pfifo_fast 0: dev vnet4 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1
1 1 1 1 1 1 1
qdisc pfifo_fast 0: dev vnet5 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1
1 1 1 1 1 1 1
qdisc pfifo_fast 0: dev vnet6 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1
1 1 1 1 1 1 1
qdisc htb 1: dev vnet7 root refcnt 2 r2q 10 default 1 direct_packets_stat 0
qdisc ingress ffff: dev vnet7 parent ffff:fff1 ----------------
qdisc pfifo_fast 0: dev vnet8 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1
1 1 1 1 1 1 1
qdisc htb 1: dev vnet9 root refcnt 2 r2q 10 default 1 direct_packets_stat 0
qdisc ingress ffff: dev vnet9 parent ffff:fff1 ----------------
qdisc htb 1: dev vnet10 root refcnt 2 r2q 10 default 1 direct_packets_stat 0
qdisc ingress ffff: dev vnet10 parent ffff: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 2 2 2 1 2 0 0 1
1 1 1 1 1 1 1
qdisc pfifo_fast 0: dev vnet1 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1
1 1 1 1 1 1 1
qdisc pfifo_fast 0: dev vnet2 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1
1 1 1 1 1 1 1
qdisc pfifo_fast 0: dev vnet3 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1
1 1 1 1 1 1 1
23
COPYRIGHT FUJITSU LIMITED 2014
qdisc pfifo_fast 0: dev vnet4 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1
1 1 1 1 1 1 1
qdisc pfifo_fast 0: dev vnet5 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1
1 1 1 1 1 1 1
qdisc pfifo_fast 0: dev vnet6 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1
1 1 1 1 1 1 1
qdisc htb 1: dev vnet7 root refcnt 2 r2q 10 default 1 direct_packets_stat 0
qdisc ingress ffff: dev vnet7 parent ffff:fff1 ----------------
qdisc pfifo_fast 0: dev vnet8 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1
1 1 1 1 1 1 1
qdisc pfifo_fast 0: dev vnet9 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1
1 1 1 1 1 1 1
qdisc htb 1: dev vnet10 root refcnt 2 r2q 10 default 1 direct_packets_stat 0
qdisc ingress ffff: dev vnet10 parent ffff:fff1 ----------------
(5)解除を確認
# tc -s qdisc | grep vnet9 -A1
qdisc pfifo_fast 0: dev vnet9 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1
1 1 1 1 1 1 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 st
atus command ●●確認して記述●●
releases:
- name: cf
version: 147 # Verison number of the uploded release ●●現環境で使用しているのは
183 ●●
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: <network_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 disk
update:
canaries: 1
canary_watch_time: 30000-60000
update_watch_time: 30000-60000
max_in_flight: 4
resource_pools:
- name: small
network: default
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 dis
k
- 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 di
sk
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
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]
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
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 name
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
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
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
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
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,cloud_controller.write,openid,password.wri
te,cloud_controller.admin,scim.read,scim.write
access-token-validity: 7200
refresh-token-validity: 1209600
scim:
users:
- admin|c1oudc0w|scim.write,scim.read,openid,cloud_controller.admin
- services|c1oudc0w|scim.write,scim.read,openid,cloud_controller.admin
33
COPYRIGHT FUJITSU LIMITED 2014
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 から de
stroy して expange の必要。
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/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
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:
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-cloudstac
k.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 --vita
ls
+-------------------+---------+---------------+---------------+..+------------
+------------+------------+
| Job/index | State | Resource Pool | IPs |..| System | E
phemeral | Persistent |
| | | | |..| Disk Usage | Disk
Usage | Disk Usage |
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% | 1
3% | 28% |
| mysql/1 | running | large | 172.16.10.244 |..| 26% | 1
3% | 28% |
+-------------------+---------+---------------+---------------+..+------------
+------------+------------+
# BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh vms cf-cloudstack-mysql --vita
ls
+-------------------+---------+---------------+---------------+..+------------
+------------+------------+
| Job/index | State | Resource Pool | IPs |..| System | E
phemeral | Persistent |
| | | | |..| Disk Usage | Disk
Usage | Disk Usage |
+-------------------+---------+---------------+---------------+..+------------
+------------+------------+
| 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% | 1
3% | 28% |
| mysql/1 | running | large | 172.16.10.244 |..| 26% | 1
3% | 28% |
+-------------------+---------+---------------+---------------+..+------------
+------------+------------+
6.5. cf サービスの設定
参照している DNS サーバに mysql-broker の IP アドレスを「p-mysql.ssl.osscloud」で登録し、以下
のコマンドを実行して cf サービスの設定を行う。
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

Mais conteúdo relacionado

Mais procurados

OpenStack構築手順書Mitaka版 (期間限定公開)
OpenStack構築手順書Mitaka版 (期間限定公開)OpenStack構築手順書Mitaka版 (期間限定公開)
OpenStack構築手順書Mitaka版 (期間限定公開)VirtualTech Japan Inc.
 
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)tokuhy
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門VirtualTech Japan Inc.
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門VirtualTech Japan Inc.
 
COMSTARでiSCSI - OpenSolaris勉強会 2011.08
COMSTARでiSCSI - OpenSolaris勉強会 2011.08COMSTARでiSCSI - OpenSolaris勉強会 2011.08
COMSTARでiSCSI - OpenSolaris勉強会 2011.08tokuhy
 
OpenStackトラブルシューティング入門
OpenStackトラブルシューティング入門OpenStackトラブルシューティング入門
OpenStackトラブルシューティング入門VirtualTech Japan Inc.
 
Docker調査20150704
Docker調査20150704Docker調査20150704
Docker調査20150704HommasSlide
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介Etsuji Nakai
 
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要Etsuji Nakai
 
Personal Cloud Automation
Personal Cloud AutomationPersonal Cloud Automation
Personal Cloud AutomationEtsuji Nakai
 
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2Etsuji Nakai
 
Pgcon2012 ori-20120224
Pgcon2012 ori-20120224Pgcon2012 ori-20120224
Pgcon2012 ori-20120224Manabu Ori
 
Ubuntu OpenStack Installer を使った1Node OpenStack
Ubuntu OpenStack Installer を使った1Node OpenStackUbuntu OpenStack Installer を使った1Node OpenStack
Ubuntu OpenStack Installer を使った1Node OpenStackVirtualTech Japan Inc.
 
Ubuntu Maas1.9 クイックセットアップガイド
Ubuntu Maas1.9 クイックセットアップガイドUbuntu Maas1.9 クイックセットアップガイド
Ubuntu Maas1.9 クイックセットアップガイドVirtualTech Japan Inc.
 
Amandaを使ってバックアップ管理を一元化
Amandaを使ってバックアップ管理を一元化Amandaを使ってバックアップ管理を一元化
Amandaを使ってバックアップ管理を一元化賢 秋穂
 
OSC2014 東京 owncloud性能検証
OSC2014 東京 owncloud性能検証OSC2014 東京 owncloud性能検証
OSC2014 東京 owncloud性能検証Tetsurou Yano
 
KubernetesバックアップツールVeleroとちょっとした苦労話
KubernetesバックアップツールVeleroとちょっとした苦労話KubernetesバックアップツールVeleroとちょっとした苦労話
KubernetesバックアップツールVeleroとちょっとした苦労話imurata8203
 
ONIC-Japan-2019-OVN public
ONIC-Japan-2019-OVN publicONIC-Japan-2019-OVN public
ONIC-Japan-2019-OVN publicManabu Ori
 
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002Takeshi Kuramochi
 

Mais procurados (20)

OpenStack構築手順書Mitaka版 (期間限定公開)
OpenStack構築手順書Mitaka版 (期間限定公開)OpenStack構築手順書Mitaka版 (期間限定公開)
OpenStack構築手順書Mitaka版 (期間限定公開)
 
systemdを始めよう
systemdを始めようsystemdを始めよう
systemdを始めよう
 
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門
 
COMSTARでiSCSI - OpenSolaris勉強会 2011.08
COMSTARでiSCSI - OpenSolaris勉強会 2011.08COMSTARでiSCSI - OpenSolaris勉強会 2011.08
COMSTARでiSCSI - OpenSolaris勉強会 2011.08
 
OpenStackトラブルシューティング入門
OpenStackトラブルシューティング入門OpenStackトラブルシューティング入門
OpenStackトラブルシューティング入門
 
Docker調査20150704
Docker調査20150704Docker調査20150704
Docker調査20150704
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介
 
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
 
Personal Cloud Automation
Personal Cloud AutomationPersonal Cloud Automation
Personal Cloud Automation
 
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
 
Pgcon2012 ori-20120224
Pgcon2012 ori-20120224Pgcon2012 ori-20120224
Pgcon2012 ori-20120224
 
Ubuntu OpenStack Installer を使った1Node OpenStack
Ubuntu OpenStack Installer を使った1Node OpenStackUbuntu OpenStack Installer を使った1Node OpenStack
Ubuntu OpenStack Installer を使った1Node OpenStack
 
Ubuntu Maas1.9 クイックセットアップガイド
Ubuntu Maas1.9 クイックセットアップガイドUbuntu Maas1.9 クイックセットアップガイド
Ubuntu Maas1.9 クイックセットアップガイド
 
Amandaを使ってバックアップ管理を一元化
Amandaを使ってバックアップ管理を一元化Amandaを使ってバックアップ管理を一元化
Amandaを使ってバックアップ管理を一元化
 
OSC2014 東京 owncloud性能検証
OSC2014 東京 owncloud性能検証OSC2014 東京 owncloud性能検証
OSC2014 東京 owncloud性能検証
 
KubernetesバックアップツールVeleroとちょっとした苦労話
KubernetesバックアップツールVeleroとちょっとした苦労話KubernetesバックアップツールVeleroとちょっとした苦労話
KubernetesバックアップツールVeleroとちょっとした苦労話
 
ONIC-Japan-2019-OVN public
ONIC-Japan-2019-OVN publicONIC-Japan-2019-OVN public
ONIC-Japan-2019-OVN public
 
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
 

Destaque

Presentacion m4 s5
Presentacion m4 s5Presentacion m4 s5
Presentacion m4 s5Reyna Flores
 
Presentacion m4 s5
Presentacion m4 s5Presentacion m4 s5
Presentacion m4 s5Reyna Flores
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1Kotaro Noyama
 
Presentacion m4 s5
Presentacion m4 s5Presentacion m4 s5
Presentacion m4 s5Reyna Flores
 
Mandev Tube's One End Expanded Copper Tubes For VRF Airconditioning Applications
Mandev Tube's One End Expanded Copper Tubes For VRF Airconditioning ApplicationsMandev Tube's One End Expanded Copper Tubes For VRF Airconditioning Applications
Mandev Tube's One End Expanded Copper Tubes For VRF Airconditioning Applicationsrrmunot
 
Cerrilla_Paulina_PPP
Cerrilla_Paulina_PPPCerrilla_Paulina_PPP
Cerrilla_Paulina_PPPLina Lovegood
 
Cv for flash_designer
Cv for flash_designerCv for flash_designer
Cv for flash_designerdaksh098
 
Ppt komori intro2012 subsidiaries
Ppt komori intro2012 subsidiariesPpt komori intro2012 subsidiaries
Ppt komori intro2012 subsidiarieskarinvandenheuvel
 
Rothn Mtpl Presentation 2012 Final
Rothn   Mtpl Presentation 2012 FinalRothn   Mtpl Presentation 2012 Final
Rothn Mtpl Presentation 2012 Finalrrmunot
 
Company Profile Workrite Herman Miller Posh
Company Profile Workrite Herman Miller PoshCompany Profile Workrite Herman Miller Posh
Company Profile Workrite Herman Miller Poshrrmunot
 
Cloud founryインストール手順
Cloud founryインストール手順Cloud founryインストール手順
Cloud founryインストール手順Kotaro Noyama
 

Destaque (12)

kkpi
kkpikkpi
kkpi
 
Presentacion m4 s5
Presentacion m4 s5Presentacion m4 s5
Presentacion m4 s5
 
Presentacion m4 s5
Presentacion m4 s5Presentacion m4 s5
Presentacion m4 s5
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1
 
Presentacion m4 s5
Presentacion m4 s5Presentacion m4 s5
Presentacion m4 s5
 
Mandev Tube's One End Expanded Copper Tubes For VRF Airconditioning Applications
Mandev Tube's One End Expanded Copper Tubes For VRF Airconditioning ApplicationsMandev Tube's One End Expanded Copper Tubes For VRF Airconditioning Applications
Mandev Tube's One End Expanded Copper Tubes For VRF Airconditioning Applications
 
Cerrilla_Paulina_PPP
Cerrilla_Paulina_PPPCerrilla_Paulina_PPP
Cerrilla_Paulina_PPP
 
Cv for flash_designer
Cv for flash_designerCv for flash_designer
Cv for flash_designer
 
Ppt komori intro2012 subsidiaries
Ppt komori intro2012 subsidiariesPpt komori intro2012 subsidiaries
Ppt komori intro2012 subsidiaries
 
Rothn Mtpl Presentation 2012 Final
Rothn   Mtpl Presentation 2012 FinalRothn   Mtpl Presentation 2012 Final
Rothn Mtpl Presentation 2012 Final
 
Company Profile Workrite Herman Miller Posh
Company Profile Workrite Herman Miller PoshCompany Profile Workrite Herman Miller Posh
Company Profile Workrite Herman Miller Posh
 
Cloud founryインストール手順
Cloud founryインストール手順Cloud founryインストール手順
Cloud founryインストール手順
 

Semelhante a CloudFoundry 2 on Apache CloudStack 4.2.1

20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!Midori Oge
 
Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Yasuhiro Arai
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefnpsg
 
Apache cloudstack4.0インストール
Apache cloudstack4.0インストールApache cloudstack4.0インストール
Apache cloudstack4.0インストールYasuhiro Arai
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門VirtualTech Japan Inc.
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825hiro345
 
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondInfinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondTaisuke Yamada
 
qemuのriscv64にDebianを入れてみた
qemuのriscv64にDebianを入れてみたqemuのriscv64にDebianを入れてみた
qemuのriscv64にDebianを入れてみたKazuhiro Nishiyama
 
BOSHで始めるImmutable Infrastructure
BOSHで始めるImmutable InfrastructureBOSHで始めるImmutable Infrastructure
BOSHで始めるImmutable Infrastructurei_yudai
 
Havana版 RDO-QuickStart-4 (140421-Havana-RDO-QuickStart-4.pdf)
Havana版 RDO-QuickStart-4 (140421-Havana-RDO-QuickStart-4.pdf) Havana版 RDO-QuickStart-4 (140421-Havana-RDO-QuickStart-4.pdf)
Havana版 RDO-QuickStart-4 (140421-Havana-RDO-QuickStart-4.pdf) VirtualTech Japan Inc.
 
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介Midori Oge
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門VirtualTech Japan Inc.
 
OpenStack QuickStart - Icehouse
OpenStack QuickStart - IcehouseOpenStack QuickStart - Icehouse
OpenStack QuickStart - IcehouseHideki Saito
 
自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみよう自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみようMasahiko Hashimoto
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西Masahide Yamamoto
 

Semelhante a CloudFoundry 2 on Apache CloudStack 4.2.1 (20)

20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!
 
Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
Apache cloudstack4.0インストール
Apache cloudstack4.0インストールApache cloudstack4.0インストール
Apache cloudstack4.0インストール
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825
 
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondInfinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every second
 
qemuのriscv64にDebianを入れてみた
qemuのriscv64にDebianを入れてみたqemuのriscv64にDebianを入れてみた
qemuのriscv64にDebianを入れてみた
 
BOSHで始めるImmutable Infrastructure
BOSHで始めるImmutable InfrastructureBOSHで始めるImmutable Infrastructure
BOSHで始めるImmutable Infrastructure
 
Lxc on cloud
Lxc on cloudLxc on cloud
Lxc on cloud
 
Havana版 RDO-QuickStart-4 (140421-Havana-RDO-QuickStart-4.pdf)
Havana版 RDO-QuickStart-4 (140421-Havana-RDO-QuickStart-4.pdf) Havana版 RDO-QuickStart-4 (140421-Havana-RDO-QuickStart-4.pdf)
Havana版 RDO-QuickStart-4 (140421-Havana-RDO-QuickStart-4.pdf)
 
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門
 
Openstack+Ceph設定ガイド
Openstack+Ceph設定ガイドOpenstack+Ceph設定ガイド
Openstack+Ceph設定ガイド
 
Hadoop on LXC
Hadoop on LXCHadoop on LXC
Hadoop on LXC
 
OpenStack QuickStart - Icehouse
OpenStack QuickStart - IcehouseOpenStack QuickStart - Icehouse
OpenStack QuickStart - Icehouse
 
hbstudy37 doc
hbstudy37 dochbstudy37 doc
hbstudy37 doc
 
Fig
FigFig
Fig
 
自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみよう自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみよう
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西
 

CloudFoundry 2 on Apache CloudStack 4.2.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. 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. 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. 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/sou rces.list.d/ubuntu-ja.list # apt-get update
  • 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 l ibreadline-dev libssl-dev libcurl4-openssl-dev (3)stemcell 関連のインストール # apt-get install libsqlite3-dev genisoimage libmysqlclient-dev libpq-dev debo otstrap kpartx 2.3.4.Ruby インストール (1)プロキシサーバの設定 git インストールのために以下のコマンドを例にプロキシサーバを git の config に設定する。 # git config --global http.proxy http://mp067159:8160584683@rep.proxy.nic.fuj itsu.com:8080/ # git config --global https.proxy http://mp067159:8160584683@rep.proxy.nic.fu jitsu.com:8080/
  • 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 aut oconf libncurses5-dev # git clone http://github.com/sstephenson/rbenv.git .rbenv # git clone http://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/rub y-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. 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_im age.tgz] オプション説明:ubuntu … OS 名を指定する。 :precise … OS のバージョンを指定(ubuntu の場合、precise や lucid) :/tmp/ubuntu_base_image.tgz … 作成ファイル名 (2)ソース(bosh-stemcell)内のカーネルバージョン指定箇所修正 上記コマンドで一時的に作成されるイメージファイル作成用ディレクトリ(/mnt/stemcells/null/null/ ubuntu/work/work/chroot)もしくは作成した圧縮イメージファイル内の「/boot」内に格納されているカ
  • 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 行目(desc ribe ~ end まで)に記載されている各カーネルバージョンを確認したバージョンに合わせて修正する。 # ls /mnt/stemcells/null/null/ubuntu/work/work/chroot/boot System.map-3.2.0-70-virtual config-3.2.0-70-virtual initrd.img-3.2.0-70-vir tual 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=UUI D=' } 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. 8 COPYRIGHT FUJITSU LIMITED 2014 it { should contain ' kernel /boot/vmlinuz-3.2.0-70-virtual ro root=UUI D=' } 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,preci se,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. 9 COPYRIGHT FUJITSU LIMITED 2014 api_key="QBbqiA_mGMp23w8lX1zadH_PCruxaqj55iTtQgCQst5Pd5aJ1TrXKErTX3UKIvmx4Ok5 WaJZNPwY0o1Y_ORP2A" # please set your secret key(CloudStackGUI であらかじめ作成しておく) secret_key="oN5z4NafX9OrwknE39f9sT_rhSrfdCa1CRuoCjO3iD214wzM4JGLIT2TjwmvBerWL uM9OOdnCEtyVpPy02rOkg" 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"&"signat ure=$signature echo " SEND URL: $url" curl ${url} (2)キーペア作成 上記で作成したスクリプトファイルを以下のコマンドのとおりに実行し、キーペアを作成する。(name=はキー名 として任意の名前を指定可能) コマンド:./kick_api.sh command=createSSHKeyPair name=<キー名> 例)
  • 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_PCruxaqj55iTtQgCQst5Pd5aJ1TrXKErTX3UKI vmx4Ok5WaJZNPwY0o1Y_ORP2A&signature=gPmSPYqd2fIaSf5%2BX2K%2FvEdgaD8%3D <?xml version="1.0" encoding="UTF-8"?><createsshkeypairresponse cloud-stack-v ersion="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:7 e:4c:21:a9:c9:94</fingerprint></keypair></createsshkeypairresponse>root@ubunt u14:~# (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. 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. 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_PCruxaqj55iTtQgCQst5Pd5aJ1TrXKErTX3UKIvmx 4Ok5WaJZNPwY0o1Y_ORP2A # キーペア作成時に指定したもの secret_access_key: oN5z4NafX9OrwknE39f9sT_rhSrfdCa1CRuoCjO3iD214wzM4JGLIT 2TjwmvBerWLuM9OOdnCEtyVpPy02rOkg # キーペア作成時に指定したもの 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 Zone default_security_groups: ["default"] # TCP、UDP での全ての通信が可能なセキュリティグループ名を[""]で括って指定 registry: endpoint: http://admin:admin@172.16.10.227:25889 # インセプションサーバの IP を指定 user: admin password: admin
  • 14. 13 COPYRIGHT FUJITSU LIMITED 2014 3.1.7.ソースコードの修正 (1)デバイスアタッチ処理関連 メモ: デバイス名の仕様の違いから、デフォルトのモジュールではデバイスアタッチ時にエラーが発生するため、 ソースを修正しエラーが発生しないように対応 デバイスアタッチの不具合対応として、以下のソースコードの修正を行っておく。 ファイル名:~/bosh/bosh_cloudstack_cpi/lib/cloud/cloudstack/cloud.rb コード最下部の以下の部分を修正 ----------------------------------------- def volume_device_name(device_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(device_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-1] cloud_error("too many disks attached") if suffix.nil? "/dev/vd#{suffix}" end ----------------------------------------- メモ: ソースコードは virtio 前提ではないため、virtio でのディスクアタッチに合うようにデバイス名を取得す る部分で「-1」している
  • 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. 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. 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,17 2.16.10.229,192.168.3.224 3.2.2.不足領域の追加 メモ: Firstbosh 上では、あらかじめ最終的なパッケージ格納領域として/var/vcap/store については特別 な領域が確保(領域確保用ボリュームのアタッチ)がされているが、当該作業領域は同様の領域が必要 (格納パッケージの一時展開作業用)にもかかわらず、特別な領域の準備はされていないために同処理で エラーとなってしまう。そのため手動で領域を確保しておかなければならない。 次項の bosh upload release を行う際に、Firstbosh の VM で領域不足エラー「Error 500001: U ploading release archive failed. Insufficient space on BOSH director in /var/vc ap/data/tmp/director/release20140910-2239-1mz1yey」が発生するため、FirstboshVM へロ グインして対象ディレクトリに追加ディスクをマウントして領域の確保を行う。
  • 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 /dev/vda1 /dev/vdb /dev/vdb1 /dev/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. 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 486M 0% /dev/shm none 486M 56K 486M 1% /var/run none 486M 0 486M 0% /var/lock none 486M 0 486M 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-18 3.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-stem cell-3-cloudstack-kvm-ubuntu-precise.tgz
  • 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 stemcell archive. Done (00:00:22) Started update stemcell > Verifying stemcell manifest. Done (00:00:00) Started update stemcell > Checking if this stemcell already exists. Done (00: 00:00) Started update stemcell > Uploading stemcell bosh-cloudstack-kvm-ubuntu/2063 to the cloud. Done (00:05:18) Started update stemcell > Save stemcell bosh-cloudstack-kvm-ubuntu/2063 (3a51 4c5b-1c41-471f-95ad-459ac64dfb79). Done (00: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. 20 COPYRIGHT FUJITSU LIMITED 2014 Stemcell uploaded and created.
  • 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 ffff: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 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 qdisc pfifo_fast 0: dev vnet1 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 qdisc pfifo_fast 0: dev vnet2 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1
  • 23. 22 COPYRIGHT FUJITSU LIMITED 2014 1 1 1 1 1 1 1 qdisc pfifo_fast 0: dev vnet3 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 qdisc pfifo_fast 0: dev vnet4 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 qdisc pfifo_fast 0: dev vnet5 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 qdisc pfifo_fast 0: dev vnet6 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 qdisc htb 1: dev vnet7 root refcnt 2 r2q 10 default 1 direct_packets_stat 0 qdisc ingress ffff: dev vnet7 parent ffff:fff1 ---------------- qdisc pfifo_fast 0: dev vnet8 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 qdisc htb 1: dev vnet9 root refcnt 2 r2q 10 default 1 direct_packets_stat 0 qdisc ingress ffff: dev vnet9 parent ffff:fff1 ---------------- qdisc htb 1: dev vnet10 root refcnt 2 r2q 10 default 1 direct_packets_stat 0 qdisc ingress ffff: dev vnet10 parent ffff: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 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 qdisc pfifo_fast 0: dev vnet1 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 qdisc pfifo_fast 0: dev vnet2 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 qdisc pfifo_fast 0: dev vnet3 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
  • 24. 23 COPYRIGHT FUJITSU LIMITED 2014 qdisc pfifo_fast 0: dev vnet4 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 qdisc pfifo_fast 0: dev vnet5 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 qdisc pfifo_fast 0: dev vnet6 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 qdisc htb 1: dev vnet7 root refcnt 2 r2q 10 default 1 direct_packets_stat 0 qdisc ingress ffff: dev vnet7 parent ffff:fff1 ---------------- qdisc pfifo_fast 0: dev vnet8 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 qdisc pfifo_fast 0: dev vnet9 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 qdisc htb 1: dev vnet10 root refcnt 2 r2q 10 default 1 direct_packets_stat 0 qdisc ingress ffff: dev vnet10 parent ffff:fff1 ---------------- (5)解除を確認 # tc -s qdisc | grep vnet9 -A1 qdisc pfifo_fast 0: dev vnet9 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 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 st atus command ●●確認して記述●● releases: - name: cf version: 147 # Verison number of the uploded release ●●現環境で使用しているのは 183 ●●
  • 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: <network_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 disk update: canaries: 1 canary_watch_time: 30000-60000 update_watch_time: 30000-60000 max_in_flight: 4 resource_pools: - name: small network: default
  • 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 dis k - 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 di sk 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. 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. 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. 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 name 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. 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. 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. 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. 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,cloud_controller.write,openid,password.wri te,cloud_controller.admin,scim.read,scim.write access-token-validity: 7200 refresh-token-validity: 1209600 scim: users: - admin|c1oudc0w|scim.write,scim.read,openid,cloud_controller.admin - services|c1oudc0w|scim.write,scim.read,openid,cloud_controller.admin
  • 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 から de stroy して expange の必要。
  • 36. 35 COPYRIGHT FUJITSU LIMITED 2014 ※デプロイされた VM の確認コマンド # BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh vms
  • 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. 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. 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-cloudstac k.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 --vita ls +-------------------+---------+---------------+---------------+..+------------ +------------+------------+ | Job/index | State | Resource Pool | IPs |..| System | E phemeral | Persistent | | | | | |..| Disk Usage | Disk Usage | Disk Usage |
  • 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% | 1 3% | 28% | | mysql/1 | running | large | 172.16.10.244 |..| 26% | 1 3% | 28% | +-------------------+---------+---------------+---------------+..+------------ +------------+------------+ # BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh vms cf-cloudstack-mysql --vita ls +-------------------+---------+---------------+---------------+..+------------ +------------+------------+ | Job/index | State | Resource Pool | IPs |..| System | E phemeral | Persistent | | | | | |..| Disk Usage | Disk Usage | Disk Usage | +-------------------+---------+---------------+---------------+..+------------ +------------+------------+ | 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% | 1 3% | 28% | | mysql/1 | running | large | 172.16.10.244 |..| 26% | 1 3% | 28% | +-------------------+---------+---------------+---------------+..+------------ +------------+------------+ 6.5. cf サービスの設定 参照している DNS サーバに mysql-broker の IP アドレスを「p-mysql.ssl.osscloud」で登録し、以下 のコマンドを実行して cf サービスの設定を行う。
  • 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