カジュアルにvpc作った結果がこれだよ!
DESCRIPTION
AWS Casual Talks #1 で発表したスライドです。TRANSCRIPT
カジュアルに VPC作った結果がこれだよ
Yuryu @ 2013/11/01 AWS Casual Talks #1
あらすじ
自己紹介 VPC とは やっちゃったお話
大きすぎるサブネット 公私混同
まとめ
Disclaimer
この発表の内容は所属組織としての見解ではありません
情報の正確性を保つように努めていますが、間違ってても許してください そして教えてください
転んでも泣かない
自己紹介
自己紹介
氏名 : 岩尾 はるか (Yuryu) 職業 : DevOps エンジニア ( 自称 )
所属 : 株式会社フリークアウト (2013 年 7 月~ ) 副業 : 光の戦士 ( 白魔道士 Lv.43@Kujata)
AWS 歴 4 ヶ月 +α 出身 : 大阪府
VPC とは
VPC(Virtual Private Cloud) とは
AWS 上に仮想的なネットワークを構築 プライベートなネットワークを作れる オンプレミスの環境と VPN で接続できる
無料 Default VPC の登場により標準環境へ
Elastic でない Public IP も自動付与できる
VPC 諸元
VPC のサイズは /28 から /16 まで 一度作ったら変更不可
サブネットは最大 /16 まで 個数はデフォルトでは 200 個
その他は Classic EC2 とほぼ同じ
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
やっちゃったお話
大きすぎるサブネット
最初に作った構成 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
VPC の制限
VPC の最大サイズは /16 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 パターン
何が起こったか
サブネットが一切変更できなくなった Availability Zone 増やせない Private / Public サブネット分けれない
すべてを作りなおすしかない
作り直しました
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
公私混合
Public subnet にプライベート IP しか持たないインスタンスを置いた
NAT インスタンスも同じ subnet ベストプラクティスはサブネットを分ける
公私混合の図
10.1.0.0/24
NAT Instance10.1.0.4
1.2.3.4(Elastic IP)
Instances10.1.0.x
Default GW
To VPN
何が問題か
同じサブネット内でルーティングが違う 起動してから Default GW を変更しないと外
部との通信ができない Default GW が NAT を向いているので、もし
サブネット追加したら Private 通信が NAT される Or すべて route table を変更する必要がある
修正案 1 – Public subnet 新規追加
NAT インスタンスを新規 subnet に移動 その他のインスタンスはそのまま使える ルーティングなど設定変更中に外部への通信
ができなくなる ELB 経由だと影響を受けない
修正案 2 – Private subnet 新規追加
インスタンスを徐々に新しいサブネットに引っ越していく
一部サービスを止めないと移行できない
方針
修正案 1 – Public subnet の追加で行こう! インスタンスの Default GW は VPC Router 既存サブネットの Default GW を NAT イン
スタンスに
Step0 : 初期状態
10.1.0.0/24
NAT Instance10.1.0.4
1.2.3.4(Elastic IP)
Instances10.1.0.x
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)
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)
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)
ところが罠が
Step3 で既存サブネットの Route Table からInternet GW を外した瞬間、 ELB が止まる
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)
ELB を VPC で使う注意点
ELB は Public subnet に attach が必要 1AZ あたり attach できるのは 1subnet つまり、 ELB も新規作成が必要
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)
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)
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)
めでたしめでたし
ベストプラクティス通りの構成に AZ の追加も Private subnet を追加すれば
OK Route table も VPC のものに集約
まとめ
まとめ
サブネットは大きすぎないこと Private / Public サブネットは分けること ELB は Public subnet に attach すること 一度サービスが動くと変更大変 公式マニュアルに従うが吉
Questions?
Thank you!