カジュアルにvpc作った結果がこれだよ!

37
カカカカカカ VPC カカカカカカカカカカ Yuryu @ 2013/11/01 AWS Casual Talks #1

Upload: haruka-iwao

Post on 10-Jun-2015

6.537 views

Category:

Technology


0 download

DESCRIPTION

AWS Casual Talks #1 で発表したスライドです。

TRANSCRIPT

Page 1: カジュアルにVPC作った結果がこれだよ!

カジュアルに VPC作った結果がこれだよ

Yuryu @ 2013/11/01 AWS Casual Talks #1

Page 2: カジュアルにVPC作った結果がこれだよ!

あらすじ

自己紹介 VPC とは やっちゃったお話

大きすぎるサブネット 公私混同

まとめ

Page 3: カジュアルにVPC作った結果がこれだよ!

Disclaimer

この発表の内容は所属組織としての見解ではありません

情報の正確性を保つように努めていますが、間違ってても許してください そして教えてください

転んでも泣かない

Page 4: カジュアルにVPC作った結果がこれだよ!

自己紹介

Page 5: カジュアルにVPC作った結果がこれだよ!

自己紹介

氏名 : 岩尾 はるか (Yuryu) 職業 : DevOps エンジニア ( 自称 )

所属 : 株式会社フリークアウト (2013 年 7 月~ ) 副業 : 光の戦士 ( 白魔道士 Lv.43@Kujata)

AWS 歴 4 ヶ月 +α 出身 : 大阪府

Page 6: カジュアルにVPC作った結果がこれだよ!
Page 7: カジュアルにVPC作った結果がこれだよ!

VPC とは

Page 8: カジュアルにVPC作った結果がこれだよ!

VPC(Virtual Private Cloud) とは

AWS 上に仮想的なネットワークを構築 プライベートなネットワークを作れる オンプレミスの環境と VPN で接続できる

無料 Default VPC の登場により標準環境へ

Elastic でない Public IP も自動付与できる

Page 9: カジュアルにVPC作った結果がこれだよ!

VPC 諸元

VPC のサイズは /28 から /16 まで 一度作ったら変更不可

サブネットは最大 /16 まで 個数はデフォルトでは 200 個

その他は Classic EC2 とほぼ同じ

Page 10: カジュアルにVPC作った結果がこれだよ!

VPC の例

Virtual Private Cloud

VPC Subnet10.0.0.0/24

VPC Subnet10.0.1.0/24

VPC Subnet10.0.2.0/24

Availability Zone Availability Zone

Amazon EC2

Amazon EC2

Amazon EC2

Internet GatewayRouter

VPN Gateway

Elastic LoadBalancing

Elastic LoadBalancing

Page 11: カジュアルにVPC作った結果がこれだよ!

やっちゃったお話

Page 12: カジュアルにVPC作った結果がこれだよ!

大きすぎるサブネット

最初に作った構成 VPC: 10.0.0.0/16 Subnet: 10.0.0.0/16

Virtual Private Cloud

VPC Subnet

10.0.0.0/16

10.0.0.0/16

Page 13: カジュアルにVPC作った結果がこれだよ!

VPC の制限

VPC の最大サイズは /16 VPC ・サブネットのサイズ変更は不可

消して作り直し

Page 14: カジュアルにVPC作った結果がこれだよ!

大きすぎるサブネット

最初に作った構成 VPC: 10.0.0.0/16 Subnet: 10.0.0.0/16

Virtual Private Cloud

VPC Subnet

10.0.0.0/16

10.0.0.0/16

Flat Subnet パターン

Page 15: カジュアルにVPC作った結果がこれだよ!

何が起こったか

サブネットが一切変更できなくなった Availability Zone 増やせない Private / Public サブネット分けれない

すべてを作りなおすしかない

Page 16: カジュアルにVPC作った結果がこれだよ!

作り直しました

VPC: 10.1.0.0/16 違う VPC/ アドレス空間

Subnet: 10.1.0.0/24 将来増やせるように

サービス止めて移行

Virtual Private Cloud

VPC Subnet

10.1.0.0/24

10.1.0.0/16

Page 17: カジュアルにVPC作った結果がこれだよ!

公私混合

Public subnet にプライベート IP しか持たないインスタンスを置いた

NAT インスタンスも同じ subnet ベストプラクティスはサブネットを分ける

Page 18: カジュアルにVPC作った結果がこれだよ!

公私混合の図

10.1.0.0/24

NAT Instance10.1.0.4

1.2.3.4(Elastic IP)

Instances10.1.0.x

Default GW

To VPN

Page 19: カジュアルにVPC作った結果がこれだよ!

何が問題か

同じサブネット内でルーティングが違う 起動してから Default GW を変更しないと外

部との通信ができない Default GW が NAT を向いているので、もし

サブネット追加したら Private 通信が NAT される Or すべて route table を変更する必要がある

Page 20: カジュアルにVPC作った結果がこれだよ!

修正案 1 – Public subnet 新規追加

NAT インスタンスを新規 subnet に移動 その他のインスタンスはそのまま使える ルーティングなど設定変更中に外部への通信

ができなくなる ELB 経由だと影響を受けない

Page 21: カジュアルにVPC作った結果がこれだよ!

修正案 2 – Private subnet 新規追加

インスタンスを徐々に新しいサブネットに引っ越していく

一部サービスを止めないと移行できない

Page 22: カジュアルにVPC作った結果がこれだよ!

方針

修正案 1 – Public subnet の追加で行こう! インスタンスの Default GW は VPC Router 既存サブネットの Default GW を NAT イン

スタンスに

Page 23: カジュアルにVPC作った結果がこれだよ!

Step0 : 初期状態

10.1.0.0/24

NAT Instance10.1.0.4

1.2.3.4(Elastic IP)

Instances10.1.0.x

Page 24: カジュアルにVPC作った結果がこれだよ!

Step1 : 新規 subnet 作成

10.1.0.0/24

NAT Instance10.1.0.4

1.2.3.4(Elastic IP)

Instances10.1.0.x

10.1.1.0/24

NAT Instance10.1.1.4

2.3.4.5(Elastic IP)

Page 25: カジュアルにVPC作った結果がこれだよ!

Step2 : Default GW 変更

10.1.0.0/24

NAT Instance10.1.0.4

1.2.3.4(Elastic IP)

Instances10.1.0.x

10.1.1.0/24

NAT Instance10.1.1.4

2.3.4.5(Elastic IP)

Page 26: カジュアルにVPC作った結果がこれだよ!

Step3 : 旧 subnet を private に

10.1.0.0/24

Instances10.1.0.x

10.1.1.0/24

NAT Instance10.1.1.4

2.3.4.5(Elastic IP)

Page 27: カジュアルにVPC作った結果がこれだよ!

ところが罠が

Step3 で既存サブネットの Route Table からInternet GW を外した瞬間、 ELB が止まる

Page 28: カジュアルにVPC作った結果がこれだよ!

Step3 : 旧 subnet を private に

10.1.0.0/24

Instances10.1.0.x

10.1.1.0/24

NAT Instance10.1.1.4

2.3.4.5(Elastic IP)

Page 29: カジュアルにVPC作った結果がこれだよ!

ELB を VPC で使う注意点

ELB は Public subnet に attach が必要 1AZ あたり attach できるのは 1subnet つまり、 ELB も新規作成が必要

Page 30: カジュアルにVPC作った結果がこれだよ!

Step2 : Default GW 変更

10.1.0.0/24

NAT Instance10.1.0.4

1.2.3.4(Elastic IP)

Instances10.1.0.x

10.1.1.0/24

NAT Instance10.1.1.4

2.3.4.5(Elastic IP)

Page 31: カジュアルにVPC作った結果がこれだよ!

Step2.5 : ELB 切り替え

10.1.0.0/24

NAT Instance10.1.0.4

1.2.3.4(Elastic IP)

Instances10.1.0.x

10.1.1.0/24

NAT Instance10.1.1.4

2.3.4.5(Elastic IP)

Page 32: カジュアルにVPC作った結果がこれだよ!

Step3 : 旧 subnet を private に

10.1.0.0/24

Instances10.1.0.x

10.1.1.0/24

NAT Instance10.1.1.4

2.3.4.5(Elastic IP)

Page 33: カジュアルにVPC作った結果がこれだよ!

めでたしめでたし

ベストプラクティス通りの構成に AZ の追加も Private subnet を追加すれば

OK Route table も VPC のものに集約

Page 34: カジュアルにVPC作った結果がこれだよ!

まとめ

Page 35: カジュアルにVPC作った結果がこれだよ!

まとめ

サブネットは大きすぎないこと Private / Public サブネットは分けること ELB は Public subnet に attach すること 一度サービスが動くと変更大変 公式マニュアルに従うが吉

Page 36: カジュアルにVPC作った結果がこれだよ!

Questions?

Page 37: カジュアルにVPC作った結果がこれだよ!

Thank you!