cloud foundry multiaz機能拡充
DESCRIPTION
Cloud Foundry MultiAZの機能拡充TRANSCRIPT
Copyright©2014 NTT corp. All Rights Reserved.
Cloud Foundry アプリケーションインスタンスの可用性向上 ~インスタンス分散配置の機能拡充~
服部 哲士
NTT ソフトウェアイノベーションセンタ
2 Copyright©2014 NTT corp. All Rights Reserved.
1. インスタンスの分散配置とは
2. 機能拡充と現状の比較
3. 機能拡充の詳細
4. 機能拡充による利点
内容
3 Copyright©2014 NTT corp. All Rights Reserved.
公開
4 Copyright©2014 NTT corp. All Rights Reserved.
•極稀にユーザアプリケーションのインスタンス全体に影響する故障が発生した際にでも、ユーザに影響が及ばないようにインスタンスを分散させた可用性を確保する。 • zoneに分散配置
• deaに分散配置
インスタンスの分散配置とは?
zoneB zoneA
dea01 dea02 dea03 dea04 dea05
app1[0]
app1[1]
app1[3]
app2[0]
app2[1]
app3[0]
app3[1]
app3[2]
5 Copyright©2014 NTT corp. All Rights Reserved.
•アプリケーションインスタンスの配置先の決定は、deaからのnats情報(advertise情報)を基にcloud_controller_ngでdeaを選定
インスタンスの配置先決定
zoneB zoneA
dea01 dea02 dea03 dea04 dea05
app1[0]
app1[1]
app1[3]
app2[0]
app2[1]
cloud_controller_ng ・zoneB
・app2インスタンス:1
nats
【dea01】 zoneA, app1: 1, app2: 1 【dea02】 zoneA, app1: 1 【dea03】 zoneB, app1: 1 【dea04】 zoneB, app2 1 【dea04】 zoneB,
5秒毎
app3[0]
app3[1]
$gcf push app3 –I 2
・app3を2インスタンス
6 Copyright©2014 NTT corp. All Rights Reserved.
• cloud_controller_ngで分散配置させるためのdea選定ロジックの比較
機能拡充と現状の分散配置ロジック比較
③ 総インスタンス数の考慮を追加
② zone選定方式の変更
① 管理外zone排除の追加
7 Copyright©2014 NTT corp. All Rights Reserved.
• def only_valid_zone
• cc_ngで管理しているzone(@zone)以外に属しているdeaを除去
① 管理外zone排除の追加
8 Copyright©2014 NTT corp. All Rights Reserved.
• def only_specific_zone
• push 時に zone が指定されていた場合
• 指定されたzone
• 指定されていない場合
• find_zone でzoneを決定
② zone選定方式の変更(特定のzoneに絞る)
9 Copyright©2014 NTT corp. All Rights Reserved.
• def find_zone
• 0番目のインスタンス(index[0])の場合
• find_main_zone で main zone のzone
• 上記以外
• 各zoneで同一アプリケーションのインスタンスが少なく、deaが多い zone
② zone選定方式の変更(zoneの特定)
10 Copyright©2014 NTT corp. All Rights Reserved.
• def find_main_zone
• cloud_controller_ng で管理している zone の優先度の高い順
• そのzone内の何れかのdeaに配置可能(mem、disk)
② zone選定方式の変更(main zoneの特定)
11 Copyright©2014 NTT corp. All Rights Reserved.
• def only_fewest_instance_of_all
• 総インスタンス(他アプリのインスタンス含む)の最小なdea
③ 総インスタンス数の考慮を追加
12 Copyright©2014 NTT corp. All Rights Reserved.
• gcf(コマンド)でゾーンを指定可能
• $ gcf push <appname> -z ‘<特定zone名>’
•例:app4をzoneAに配置
• $ gcf push app4 –z ‘zoneA’ -i 2
zone指定
12
zoneB zoneA
dea01 dea02 dea03 dea04 dea05
app1[0]
app1[1]
app1[2]
app2[0]
app2[1]
app3[0]
app3[1]
app3[2]
app4[0]
app4[1]
13 Copyright©2014 NTT corp. All Rights Reserved.
• zone指定のアプリケーションの情報を参照した際に、指定された(配置された)zoneを表示
gcfで指定したゾーンの参照
$ gcf app zone-app
requested state: started
instances: 0/1
usage: 128M x 1 instances
urls: zone-app.com
zone: zoneA
state since cpu memory disk
#0 running 2014-01-01 00:00:01 AM 0.0% 17.9M of 128M 52.1M of 1G
$ gcf apps
name requested state instances memory disk urls zone
no-zone-app started 2/2 128M 1G no-zone.com
zone-app started 3/3 128M 1G zone.com zoneA
14 Copyright©2014 NTT corp. All Rights Reserved.
1. main zone
• services関連のコンポーネントが配置されているzoneをmain zoneとすることによって、services関連コンポーネント(例えばDB接続処理)との処理時間を早くすることが可能
機能拡充による利点(1)
zoneB zoneA(main zone)
dea01 dea02 dea03 dea04
services
app1 app2
15 Copyright©2014 NTT corp. All Rights Reserved.
2. zone内のdea数
• zone選定時に同一アプリのインスタンス数のみでなく、zone内のdea数を考慮することによって、より余裕があるdea(zone)に配置することが可能
機能拡充による利点(2)
zoneA(main zone) zoneB zoneC
dea dea dea dea dea dea dea dea
別アプリインスタンス 追加アプリインスタンス
16 Copyright©2014 NTT corp. All Rights Reserved.
3. 他アプリインスタンス数
• dea選定時に同一アプリのインスタンス数のみでなく、他アプリインスタンス数を考慮することによって、より余裕があるdeaに配置することが可能
機能拡充による利点(3)
dea dea dea dea dea dea dea dea
別アプリインスタンス 追加アプリインスタンス
17 Copyright©2014 NTT corp. All Rights Reserved.
4. zoneを指定してアプリを配置
• services関連のコンポーネントが配置されているzoneを指定してアプリを配置することで、services関連コンポーネント(例えばDB接続処理)との処理時間を早くすることが可能
機能拡充による利点(4)
zoneB zoneA(main zone)
dea01 dea02 dea03 dea04
services
app1 app2 app1 app2
18 Copyright©2014 NTT corp. All Rights Reserved.
• github
• cloud_controller_ng
• https://github.com/nttlabs/cloud_controller_ng/
• dea_ng
• https://github.com/nttlabs/dea_ng
• cli
• https://github.com/nttlabs/cli
ソース公開
19 Copyright©2014 NTT corp. All Rights Reserved.
•今回説明した内容を、ユーザストーリベースでドキュメント化
• https://docs.google.com/document/d/1x-WwDc5p-biCkG3iRn0SRuFljACh51qLNtprGAzq0BU/edit
ドキュメントの公開