SlideShare a Scribd company logo
CloudFormationとSerfで作る
全自動インフラ
CM re:Growth
Developers.IO Meetup 01
望月 政夫

2013/12/10
re:Growth
@SAP
classmethod.jp

1
自己紹介
・望月 政夫
・1988年生まれ
・AWS歴 : 1年
・クラスメソッド歴 : 2か月
・初プレゼンです
・好きなサービス : aws-cli, aws.rb
classmethod.jp

2

Twitter:@Canelmo
AWS CloudFormation

使っていますか?

classmethod.jp

3
AWS CloudFormation

好きですか?

classmethod.jp

4
AWS CloudFormation
•AWSのリソースをJSONで定義
•外部パラメータ/結果Output
•AWSがサンプルを用意
(http://aws.amazon.com/jp/cloudformation/aws-cloudformation-templates/)

classmethod.jp

5
http://dev.classmethod.jp/cloud/aws/cloudformation-firstcontact/

classmethod.jp

6
http://dev.classmethod.jp/cloud/aws/aws-cfn-advent-calendar-2013-fullbok/

classmethod.jp

7
CloudFormationの素晴らしい点
•
•
•
•
•

ボタンひとつで環境作成
リソース更新が容易
Stackの削除で全部消える
再利用可能
AWS::CloudFormation::Initで
(だいたい)なんでもできる

classmethod.jp

8
CloudFormationの素晴らしいくない点
• 長すぎるJSON(1000行以上)
• AWS::CloudFormation::Initが
デバッグしづらい
• 最後のほうでロールバックすると(´・ω・`)

classmethod.jp

9
CloudFormationの活用法
• 適度に分割すること
–
–
–
–
–

VPC&SecurityGroup
EIP
ELB
RDS
App

• 機能/独立度で分割

classmethod.jp

10
Serf
• オーケストレーションツール
– URL : http://serfdom.io/
– Mitchell Hashimoto氏 作
• イベントに応じてカスタムスクリプトを実行

• 軽量

classmethod.jp

11
http://dev.classmethod.jp/cloud/aws/serf_on_ec2/

http://www.slideshare.net/zembutsu/serf-the-liberator

classmethod.jp

12
http://dev.classmethod.jp/cloud/aws/serf_on_ec2/

classmethod.jp

13
Serfの特徴
• クラスタリング : 特定の親を持たない
• イベントハンドリング
–
–
–
–

member-join : ノードに誰か参加した
member-failed : ノードの誰かが不達になった
member-leave : ノードの誰かが離脱した
user : ユーザ定義の任意イベント
$ serf event ~~

classmethod.jp

14
Serf in AWS
• どう使う?
– Appサーバへのアプリケーションデプロイ
– 監視サーバへの自動追加
– 死活監視

AWSらしい使い方・・・?

classmethod.jp

15
Cloud Design Pattern

classmethod.jp

16
Cloud Design Pattern
• High Availability NAT
•NATインスタンスの冗長化
•ミッションクリティカルな
サービスでは必須

http://aws.clouddesignpattern.org/index.php/CDP:High_Av
ailability_NAT%E3%83%91%E3%82%BF%E3%83%BC%
E3%83%B3

classmethod.jp

17
NAT1

NAT2

Instance

Instance

VPC Subnet

VPC Subnet

Route Table

Instance
VPC Subnet

VPC Subnet

classmethod.jp

18
Serfで連携
NAT1

NAT2

Instance

Instance

VPC Subnet

VPC Subnet

Route Table

Instance
VPC Subnet

VPC Subnet

classmethod.jp

19
1: インスタンス不調
Serfで連携
NAT1

NAT2

Instance

Instance

VPC Subnet

VPC Subnet

Route Table

Instance
VPC Subnet

VPC Subnet

classmethod.jp

20
1: インスタンス不調
Serfで連携
NAT1

Instance

NAT2

2: member-failed

VPC Subnet

Instance
VPC Subnet

Route Table

Instance
VPC Subnet

VPC Subnet

classmethod.jp

21
1: インスタンス不調
Serfで連携
NAT1

Instance

NAT2

2: member-failed

VPC Subnet

Instance
VPC Subnet

3: RouteTable書き換え
Route Table

Instance
VPC Subnet

VPC Subnet

classmethod.jp

22
再起動後、自動でJoin
NAT1

NAT2

Instance

Instance

VPC Subnet

VPC Subnet

Route Table

Instance
VPC Subnet

VPC Subnet

classmethod.jp

23
Demo

classmethod.jp

24
まとめ
• CloudFormationが管理するもの
• インフラとしてのAWS
• アプリケーションが動く環境を作る

• Serfが管理するもの
– 稼働中のさまざまな変更
– サーバが増減する環境に特に有効

• レイヤ毎に適切なツールを選択する
classmethod.jp

25
classmethod.jp
26

More Related Content

CloudFormationとSerfで作る全自動インフラ