cloud foundry multiaz機能拡充

19
Copyright©2014 NTT corp. All Rights Reserved. Cloud Foundry アプリケーションインスタンスの可用性向上 ~インスタンス分散配置の機能拡充~ 服部 哲士 NTT ソフトウェアイノベーションセンタ

Upload: tetsuji-hattori

Post on 21-May-2015

237 views

Category:

Internet


1 download

DESCRIPTION

Cloud Foundry MultiAZの機能拡充

TRANSCRIPT

Page 1: Cloud foundry multiaz機能拡充

Copyright©2014 NTT corp. All Rights Reserved.

Cloud Foundry アプリケーションインスタンスの可用性向上 ~インスタンス分散配置の機能拡充~

服部 哲士

NTT ソフトウェアイノベーションセンタ

Page 2: Cloud foundry multiaz機能拡充

2 Copyright©2014 NTT corp. All Rights Reserved.

1. インスタンスの分散配置とは

2. 機能拡充と現状の比較

3. 機能拡充の詳細

4. 機能拡充による利点

内容

Page 3: Cloud foundry multiaz機能拡充

3 Copyright©2014 NTT corp. All Rights Reserved.

公開

Page 4: Cloud foundry multiaz機能拡充

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]

Page 5: Cloud foundry multiaz機能拡充

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インスタンス

Page 6: Cloud foundry multiaz機能拡充

6 Copyright©2014 NTT corp. All Rights Reserved.

• cloud_controller_ngで分散配置させるためのdea選定ロジックの比較

機能拡充と現状の分散配置ロジック比較

③ 総インスタンス数の考慮を追加

② zone選定方式の変更

① 管理外zone排除の追加

Page 7: Cloud foundry multiaz機能拡充

7 Copyright©2014 NTT corp. All Rights Reserved.

• def only_valid_zone

• cc_ngで管理しているzone(@zone)以外に属しているdeaを除去

① 管理外zone排除の追加

Page 8: Cloud foundry multiaz機能拡充

8 Copyright©2014 NTT corp. All Rights Reserved.

• def only_specific_zone

• push 時に zone が指定されていた場合

• 指定されたzone

• 指定されていない場合

• find_zone でzoneを決定

② zone選定方式の変更(特定のzoneに絞る)

Page 9: Cloud foundry multiaz機能拡充

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の特定)

Page 10: Cloud foundry multiaz機能拡充

10 Copyright©2014 NTT corp. All Rights Reserved.

• def find_main_zone

• cloud_controller_ng で管理している zone の優先度の高い順

• そのzone内の何れかのdeaに配置可能(mem、disk)

② zone選定方式の変更(main zoneの特定)

Page 11: Cloud foundry multiaz機能拡充

11 Copyright©2014 NTT corp. All Rights Reserved.

• def only_fewest_instance_of_all

• 総インスタンス(他アプリのインスタンス含む)の最小なdea

③ 総インスタンス数の考慮を追加

Page 12: Cloud foundry multiaz機能拡充

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]

Page 13: Cloud foundry multiaz機能拡充

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

Page 14: Cloud foundry multiaz機能拡充

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

Page 15: Cloud foundry multiaz機能拡充

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

別アプリインスタンス 追加アプリインスタンス

Page 16: Cloud foundry multiaz機能拡充

16 Copyright©2014 NTT corp. All Rights Reserved.

3. 他アプリインスタンス数

• dea選定時に同一アプリのインスタンス数のみでなく、他アプリインスタンス数を考慮することによって、より余裕があるdeaに配置することが可能

機能拡充による利点(3)

dea dea dea dea dea dea dea dea

別アプリインスタンス 追加アプリインスタンス

Page 17: Cloud foundry multiaz機能拡充

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

Page 18: Cloud foundry multiaz機能拡充

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

ソース公開

Page 19: Cloud foundry multiaz機能拡充

19 Copyright©2014 NTT corp. All Rights Reserved.

•今回説明した内容を、ユーザストーリベースでドキュメント化

• https://docs.google.com/document/d/1x-WwDc5p-biCkG3iRn0SRuFljACh51qLNtprGAzq0BU/edit

ドキュメントの公開