あきのの勉強ノート

書くところに困ったネタの集まり

AWS ソリューションアーキテクト勉強メモ 第2章

前回の続きから初めていきましょう。

今回はリージョンやアベイラビリティゾーン、VPCなどのネットワーク基盤の話になります。

第2章 グローバルインフラストラクチャとネットワーク

リージョンとアベイラビリティゾーン

1. リージョンとアベイラビリティゾーン

リージョン

  • AWSがサービスを提供している拠点(国と地域)。
  • リージョン同士はそれぞれ地理的に離れた場所に配置されている。
  • リージョン内には複数のアベイラビリティゾーン(AZ)が含まれる。

アベイラビリティゾーン

  • 一つのAZは複数のデータセンターから構成されている。
  • 複数のAZが集まったものがリージョンとなる。

aws.amazon.com

2. AZの地理的・電源的独立による信頼性の向上

それぞれのAZは地理的・電源的に独立した場所に配置されているため、ある地域に対しての自然災害による局所的な障害に対して他のAZに影響を与えないようになっています。

AZのデータセンターの位置は公開されていませんが、数十km程度離されて配置されているようです。

しかし各AZ間は高速なネットワーク回線で接続されているため、ネットワーク遅延(レイテンシ)は2ミリ秒以下で安定していることが多いです。

また電源の系統を分離することで一箇所の停電によりAZ内の全てのデータセンターが一斉にダウンすることがないように設計されています。

こうして地理的・電源的に独立していることによって、リージョン全体で見たときに障害への耐久性が高くなり信頼性が高いと言えます。

3. マルチAZによる可用性の向上

AZの障害への信頼性は高いですが、単一のAZのみでシステムを構築した場合、単体のデータセンターでシステムを構築した場合と耐障害性はそれほど変わりません。

なので耐障害性と可用性を高めるためにはマルチAZを構築する必要があります。

f:id:ddd-endow:20200102155607p:plain

このようにロードバランサーからAZの異なる2台の仮想サーバに負荷分散することで、片方のAZがダウンした場合でもサービスを維持できる構成にすることにより可用性を高めることができます。

VPC

Amazon Virtual Private Cloud(VPC)はAWSのサービスの中心で、ユーザ毎のプライベートなネットワークをAWS内に作成します。

VPCはインターネットゲートウェイ(IGW)や仮想プライベートゲートウェイ(VGW)を出口としてインターネットやオンプレミスなどと接続することができます。

1. IPアドレス

VPCは自由なIPアドレス(/16~/28の範囲のCIDRブロック)を設定することができます。

この時IPアドレス不足になった場合、後から拡張するのは困難なのでネットワーク空間は可能な限り大きなサイズ(/16)で作成しましょう。

2. サブネット

EC2インスタンスなどを起動するためにVPC内部に作るアドレスレンジのことをサブネットと呼ぶ。

個々のサブネットには一つの仮想ルータがあり、それぞれがルートテーブルとネットワークACLの設定を持っていて、サブネット内のEC2インスタンスデフォルトゲートウェイとなっている。

  • 一つのVPCに作れるサブネットの数は200個(リクエストによって拡張できる)
  • サブネットの最初の4つ及び最後の一つのアドレスは予約されていて使用できない。(24ビットマスクの場合0, 1, 2, 3, 255)
  • 必要以上にサブネットを分割することはアドレスの浪費につながる。(28ビットの場合16個中11個しか利用できない)
  • サービスの中にはIPアドレスの確保が必要なサービスがある(ELBの場合8個)
3. サブネットとAZ

・サブネット作成時のポイント

同一の役割を持ったサブネットを複数のAZに作る。

そうすることによりEC2やRDS作成の際にAZ障害に強い設計にすることができる。

マルチAZ

f:id:ddd-endow:20200102203946p:plain

・パブリックサブネット、プライベートサブネット

上記の二つはサブネットの機能として存在するのではなく、インターネットゲートウェイやルートテーブルなどを利用して、そのような役割を持たせることになります。(詳しくは後々)

4. ルートテーブル
  • 各サブネットに1つずつ設定する。
  • 一つのルートテーブルに対し複数のサブネットで共有は可能。逆は不可。
  • 宛先アドレスとターゲットとなるゲートウェイネクストホップ)を指定する。
  • VPCにはメインルートテーブルが存在し、サブネット作成時に指定しない場合のデフォルトとなる。
5. セキュリティグループとネットワークACL

セキュリティグループ

  • EC2やELBなどインスタンス単位の通信制御に利用する。
  • インスタンスには少なくとも一つのセキュリティグループをアタッチする必要がある。
  • インバウンドとアウトバウンドの両方の制御が可能。
  • 制御項目にはプロトコルTCPUDPなど)、ポート範囲、送受信先のCIDRかセキュリティグループを指定する。
  • ホワイトリスト形式(デフォルトでアクセス拒否。設定された項目のみアクセスを許可する)

ネットワークACL(アクセスコントロールリスト)

  • サブネットごとの通信制御に利用する。
  • セキュリティグループと同じく、インバウンド&アウトバウンド共に制御が可能。
  • 送受信先のCIDRとポートを指定できるが、セキュリティグループでの指定はできない。
  • ブラックリスト形式(デフォルトで全ての通信を許可)

セキュリティグループとネットワークACLの違い

  • 状態(ステート)を保持するかどうか。
  • セキュリティグループはステートフルで、応答トラフィックはルールに関係なく通信が許可されている。
  • ネットワークACLはステートレスで、応答トラフィックであろうと明示的に許可設定しないと通信遮断する。
6. ゲートウェイ

 ゲートウェイVPCの内部と外部との通信をやり取りする出入り口で、インターネットと接続するインターネットゲートウェイ(IGW)とVPNやDirect Connectを経由してオンプレミスネットワーク基盤と接続する仮想プライベートゲートウェイ(VGW)が存在する。

f:id:ddd-endow:20200102215907p:plain

インターネットゲートウェイ

  • VPCに一つだけアタッチすることができる。
  • 論理的には一つしか見えないが、AWSによるマネージドなサービスのため冗長化や障害児の復旧が自動的になされるため、単一障害点になることはない。
  • ルートテーブルでIGWを指定すると、その宛先アドレスとの通信はインターネットに向けられる。(多くの場合デフォルトルート「0.0.0.0/0」を指定することになる)
  • パブリックサブネットの条件の一つはルーティングでIGWを向いていること。
    →逆にプライベートサブネットは直接IGWに向いていないこと。
  • EC2インスタンスがインターネットと通信するためにはパブリックIPを持つか、NATゲートウェイを経由してインターネットと通信する必要がある。
    →NATゲートウェイはネットワークアドレス変換機能を持ち、プライベートIPをNATゲートウェイが持つグローバルIPに変換し、外部と通信を行う。

仮想プライベートゲートウェイ

  • VPCVPNやDirect Connectと接続するためのゲートウェイ
  • VPCに1つだけアタッチすることができ、複数のVPNやDirect Connectと接続することができる。
  • ルートテーブルでVGWを指定すると、その宛先アドレスとの通信はVGWからVPNやDirect Connectを通してオンプレミスネットワーク基盤に向けられる。
  • 宛先についてはルートテーブルに静的に記載する方法と、ルート伝播(プロパゲーション)機能で動的に反映する方法の二種類がある。
 7. VPCエンドポイント
  • VPC内からインターネット上のAWSサービスに接続する方法として、インターネットゲートウェイを利用する方法とVPCエンドポイントを利用する方法の二種類が存在する。
  • VPCエンドポイントにはS3やDynamoDBと接続する際に利用するゲートウェイと、それ以外の大多数のサービスで利用するインターフェイスエンドポイント(AWS PrivateLink)がある。
  • ゲートウェイエンドポイントはルーティングを利用したサービスで、エンドポイントを作成しサブネットと関連付けると、そのサブネットからS3やDynamoDBへの通信はエンドポイントを通じて行われる。

f:id:ddd-endow:20200102221838p:plain

8. ピアリング接続
  • 二つのVPC間でプライベートな接続をするための機能。
  • 同一のAWSアカウントのVPC間だけでなく、アカウントをまたがっての接続も可能。
  • VPCピアリングでの通信相手はVPC内のEC2インスタンスなどで、IGWやVGWなどにトランジット(接続すること)はできない。
  • 相手のVPCがピアリングしている別のVPCに推移的に接続することもできない。
9. VPCフローログ
  • VPC内の通信の解析に利用する。
  • 仮想ネットワークインターフェイスカードであるENI(Elastic Network Interface)単位で記録される。
  • 記録内容は送信元・送信先アドレスとポート、プロトコル番号、データ量と許可/拒否の区別。

最後に

今回はAWSサービスの基盤となるリージョンやAZ、VPCの話でした。

ここら辺は何をするにしても必ず触る箇所なので、割と覚えていました。

ただこうして書いてて気がついたのが、ルートテーブルやセキュリティグループ、ネットワークACLのあたりは若干あやふやな部分があったので、あとでホワイトペーパーなどを見て復習します。