AWS VPC のサブネットとアベイラビリティーゾーン(AZ)についてのベストプラクティスに近づくためのメモ。
今回は IPv4 のみのお話。
サブネットとは
IPネットワークを論理的に細分化したもののことである。
同一のサブネットに属するコンピュータは、IPアドレスの上位のビットが同じになっている。
IPアドレスは2つの部分に分けられ、サブネット内で共通の部分をネットワークアドレスといい、それ以外の個々のコンピュータによって違う部分のことをホストアドレスという。
らしい。
つまり、サブネットとは1つのネットワークをいくつかに分けたネットワーク。で、
マンションに設置してある光回線をイメージすると分かりやすいかもしれない。
マンションまで伸びている光回線がネットワークアドレス。
そこから部屋まで枝分かれしていく光回線がホストアドレス。
みたいな感じ。だと思う。
AWS のアベイラビリティーゾーン(AZ)とは
アベイラビリティーゾーンは、
AWS リージョン内で独立した冗長な電源設備、ネットワーク、接続を備えた 1 つ以上の個別のデータセンターです。リージョン内のアベイラビリティーゾーン間は、相関する障害を防ぐために意味のある距離として最大 60 マイル (約 100 km) 離れていますが、1 桁ミリ秒のレイテンシーで同期レプリケーションを利用するには十分近い距離にあります。
停電、断水、ファイバー断線、地震、火災、竜巻、洪水などの広域災害のシナリオから同時に影響を受けないように設計されています。
とのこと。
つまり AZ を最低2つ以上設定しておかないと、
ある日そこの地域で災害等が発生した時に、
稼働しているサービスが使用できなくなる可能性がある。
ので AZ は2つ以上設定しておいた方がいい。
という仕組み。だと思う。
AWS VPC のサブネットについて
VPC 毎に使用するネットワーク範囲を決める必要がある。
IPv4 VPC CIDR ブロックについて
VPC を作成する時に、
VPC の IPv4 CIDR ブロック (または IP アドレス範囲) を指定する箇所がある。
また、CIDR ブロックのサイズは /16 から /28 の間である必要がある。とのこと。
以下例。
多分 xx.xx.0.0/16 〜 xx.xx.0.240/28 の間で指定でき、
下記範囲。
サイズ | IP アドレス数 | 範囲 |
---|---|---|
/16 | 65536 | xx.xx.0.0~xx.xx.255.255 |
/17 | 32768 | xx.xx.0.0~xx.xx.127.255 |
/18 | 16384 | xx.xx.0.0~xx.xx.63.255 |
/19 | 8192 | xx.xx.0.0~xx.xx.31.255 |
/20 | 4096 | xx.xx.0.0~xx.xx.15.255 |
/21 | 2048 | xx.xx.0.0~xx.xx.7.255 |
/22 | 1024 | xx.xx.0.0~xx.xx.3.255 |
/23 | 512 | xx.xx.0.0~xx.xx.1.255 |
/24 | 256 | xx.xx.0.0~xx.xx.0.255 |
/25 | 128 | xx.xx.0.0~xx.xx.0.127 |
/26 | 64 | xx.xx.0.0~xx.xx.0.63 |
/27 | 32 | xx.xx.0.0~xx.xx.0.31 |
/28 | 16 | xx.xx.0.0~xx.xx.0.15 |
IPv4 サブネット CIDR ブロックについて
VPC の作成時に設定した IPv4 VPC CIDR ブロックの範囲内で、
さらに細かく用途別に範囲を決める。
VPC を作成する際に、
サブネットなども自動で作成する設定を選択し、
作成を行った場合、サブネット CIDR ブロックのサイズは /20 になっていた。
VPC 当たりのサブネットの数はデフォルトで200(引き上げ可能)。
とのことなので、サブネットを作成する際のブロックのサイズは、
/20(16個作れる)〜 /24(256個作れる)くらいがいいのではないかと思ってる。
今のところ。
サブネットの切り方
最初、サービス毎(EC2 だとか RDS だとか)にサブネットを切ってみようとした。
理由としては細かく切った方が管理しやすいと思ったから。
だけど、色々記事を見る限り、
サービス毎で切るより、
ネットワークの用途毎で切った方がいいかもしれない。
ex)
- パブリックなネットワーク(公開したい EC2 とか)
- プライベートなネットワーク(RDS とか)
- その他細々した制約があるネットワーク
など、
以上、
知見が広がったらまた更新するかもしれない。