メモ
以前取得したAWSの資格「クラウドプラクティショナー」に続き「ソリューションアーキテクトアソシエイト(SAA-C03)」取得を目指して勉強中!
いつも何か勉強するときは基本的に書きながら覚えるのでここでアウトプットします。
有益な情報かどうかは不明(笑)
スポンサーリンク
リージョンとアベイラビリティゾーン
リージョンとアベイラビリティゾーン
リージョンは、AWSがサービスを提供している拠点(国と地域)のことを指す。
リージョン同士はそれぞれ地理的に離れた場所に配置されている。
リージョン内には複数のAZが含まれ、1つのAZは複数のデータセンターから構成されている。
AZの地理的・電源的独立による信頼性の向上
それぞれのAZは、地理的・電源的に独立した場所に配置されている。
落雷や洪水、大雨などの災害によるAZへの局所的な障害に対して別のAZに影響されない。
AZは数十キロ離れて配置されている。
各AZ間は高速なネットワーク回線で接続されているため、ネットワーク遅延の問題が発生することはほとんどない。
AZ間のレイテンシーは2ミリ秒以下で安定していることが多い。
1ヶ所の停電によりAZ内の全てのデータセンターが一斉にダウンすることのないように設計されている。
AZの地理的・電源的独立により、リージョン全体で見た時に、AWSは障害への耐久性が高くなり、信頼性が高いといえる。
マルチAZによる可用性の向上
ユーザー側が単一のAZのみでシステムを構築していた場合、単体のデータセンターでオンプレミスのシステムを構築していた場合と耐障害性はそれほど変わらない。
耐障害性を高めシステムの可用性を高めるには、複数のAZを利用してシステムを構築する必要がある。
AWSではこれをマルチAZと呼ぶ。
EC2といった仮装サーバーやDBサービスであるRDSなど、インスタンスをベースとしたサービスは、可用性を高める際はマルチAZに冗長的に配置するのが基本となる。
★国・地域ごとにリージョンがあり、リージョン内には複数のAZがある。
★各AZが地理的、電源的に独立した位置にあることがリージョンの耐障害性を高めている。
★マルチAZにより可用性が高まる。
VPC
VPCは、利用者ごとのプライベートなネットワークをAWS内に作成する。
VPCはインターネットゲートウェイ(IGW)と呼ばれるインターネット側の出口を付けることにより、直接インターネットに出ていくことが可能。
また、オンプレミスの各拠点を繋げるために仮装プライベートゲートウェイ(VGW)を出口として、専用線のサービスであるDIrect ConnectやVPN経由で直接的にインターネットに出ることなく各拠点と接続することも可能。
なお、S3やCloudWatch、DynamoDBなど、AWSの中にあるもののVPC内に入れられないサービスも多数ある。
こういったサービスとVPC内のリソースをどのように連携するかは、設計上の重大なポイントとなる。
★VPCは、AWSのネットワークサービスの中心
IPアドレス
VPCには、作成者が自由なIPアドレス(CIDRブロック)をアサインすることができる。
ネットワーク基盤の管理ポリシーに合わせたアドレスをアサインすることで、自社ネットワークの一部のように接続することができる。
CIDRブロックは/16から/28の範囲で作成できる。
ネットワーク空間は可能な限り大きなサイズ(/16)で作成する。
確保した空間が小さくIPアドレス不足に陥った場合、後から拡張する方法もいくつかあるが、困難。
IPアドレスとしては、クラスA(10.0.0.0〜10.255.255.255)、クラスB(172.16.0.0〜172.31.255.255)、クラスC(192.168.0.0〜192.168.255.255)が使える。
ただしクラスAの場合でも、/8でCIDRブロックは取ることができず、/16でなければならないため注意。
実はプライベートIPアドレスの範囲外でもCIDRとして指定できるが、トラブルの元となるため基本的にはプライベートIPアドレスの範囲を指定する。
★ネットワーク空間は可能な限り大きなサイズ(/16)で作成する
サブネット
サブネットは、EC2インスタンスなどを起動するための、VPC内部に作るアドレスレンジ。
VPCに設定したCIDRブロックの範囲に小さなCIDRブロックをアサインすることができる。
個々のサブネットには1つの仮装のルータがあり、このルータがルートテーブルとネットワークACLの設定を持っていて、サブネット内のEC2インスタンスのデフォルトゲートウェイになっている。
・サブネットに設定するCIDRブロックのサイズはVPCと同様に16ビット(65536個)から28ビット(16個)まで
・サブネット作成時にAZを指定する。作成後は変更不可
・サブネットごとにルートテーブルを1つだけ指定する(作成時はメインルートテーブルが自動的にアサインされ、いつでも異なるルートテーブルに変更可能)
・サブネットごとにネットワークACLを1つだけ指定する(作成時はデフォルトネットワークACLが自動的にアサインされ、いつでも異なるネットワークACLに変更できる)
・1つのVPCに作れるサブネットの数は200個。リクエストによって拡張できる
サブネットを作成する場合の注意する制約
・サブネットの最初の4つおよび最後の1つのアドレスは予約されていて、使用できない(24ビットのサブネットだと使えないのは「0,1,2,3,255」の5つ)
・必要以上にサブネットで分割することはアドレスの浪費に繋がる(28ビットマスクのサブネットでは16個のIPが割り振られるが、ユーザーは11個しか利用できない)
・サービスの中にはIPアドレスの確保が必要なサービスがある(ELBの場合はIPアドレスが8個)
★個々のサブネットには1つの仮想ルータがあり、このルータがルートテーブルとネットワークACLの設定を持っていて、サブネット内のEC2インスタンスのデフォルトゲートウェイになっている
サブネットとAZ
サブネット作成時のポイントは、同一の役割を持ったサブネットを複数のAZにそれぞれ作ること。
EC2やRDSの作成時にAZをまたいで構築することで、AZ障害に対して耐久性の高い設計にすることができる。
この構成はマルチAZと呼ばれ、AWSにおける設計の基本となっている。
なお、パブリックサブネット、プライベートサブネットという概念がVPC関連のドキュメントに度々登場する。
しかし、設定や機能としてそういったサブネットがあるわけでなく、そのような役割を割り当てるというだけにすぎない。
ルートテーブル
アドレス設計の次はルーティング設計。
AWSのルーティング要素には、ルートテーブルと各種ゲートウェイがある。
これらを用いてVPC内部の通信や、インターネット・オンプレミスネットワーク基盤など外部への通信を実装していく。
・個々のサブネットに1つずつ設定する
・1つのルートテーブルを複数のサブネットで共有することはできるが、1つのサブネットに複数のルートテーブルを適用することはできない
・宛先アドレスとターゲットとなるゲートウェイ(ネクストホップ)を指定する
・VPCにはメインルートテーブルがあり、サブネット作成時に指定しない場合のデフォルトのルートテーブルになる
セキュリティグループとネットワークACL
VPCの通信制御は、セキュリティグループとネットワークACL(NACL)を利用して行う。
セキュリティグループは、EC2やELB、RDSなど、インスタンス単位の通信制御に利用する。
インスタンスには少なくとも1つのセキュリティグループをアタッチする必要がある。
通信の制御としては、インバウンド(内向き、外部からVPCへ)とアウトバウンド(外向き、内部から外部へ)の両方の制御が可能。
制御項目としては、プロトコル(TCPやUDPなど)とポート範囲、送受信先のCIDRかセキュリティグループを指す。
特徴的なのは、CIDRなどのIPアドレスだけでなく、セキュリティグループを指定できる点。
なお、セキュリティグループはデフォルトでアクセスを拒否し、設定された項目のみにアクセスを許可する。
ネットワークACL(アクセスコントロールリスト)は、サブネットごとの通信制御に利用する。
制御できる項目はセキュリティグループと同様で、インバウンド/アウトバウンドの制御が可能。
送受信先のCIDRとポートを指定できるが、セキュリティグループと違って送受信先にはセキュリティグループの指定はできない。
ネットワークACLはデフォルトの状態では全ての通信を許可する。
セキュリティグループとネットワークACLの違いは、状態(ステート)を保持するかどうか。
セキュリティグループはステートフルで、応答トラフィックはルールに関係なく通信が許可される。
これに対してネットワークACLはステートレスで、応答トラフィックであろうと明示的に許可設定しないと通信遮断してしまう。
そのため、エフェメラルポート(1025~65535)を許可設定していないと、帰りの通信が遮断される。
セキュリティグループとネットワークACLの設定方法は、組み合わせとして理解しておく。
★セキュリティグループはインスタンス単位の通信制御に利用し、ネットワークACLはサブネットごとの通信制御に利用する
ゲートウェイ
ゲートウェイは、VPCの内部と外部との通信をやり取りする出入り口。
インターネットと接続するインターネットゲートウェイ(IGW)と、VPNやDIrect Connectを経由してオンプレミスネットワーク基盤と接続する仮想プライベートゲートウェイ(VGW)がある。
インターネットゲートウェイ
インターネットゲートウェイ(IGW)は、VPCとインターネットを接続するためのゲートウェイ。
各VPCに1つだけアタッチする(取り付ける)ことができる。
インターネットゲートウェイ自体には設定事項は何もない、
また、論理的には1つしか見えないため、可用性の観点で単一障害点(SPOF)になるのではと懸念されることがある。
しかし、IGWはAWSによるマネージドなサービスであり、冗長化や障害児の復旧が自動的になされている。
ルートテーブルでインターネットゲートウェイをターゲットに指定すると、その宛先アドレスとの通信はインターネットゲートウェイに向けられる。
多くの場合、デフォルトルート「0.0.0.0/0」を指定することになる。
パブリックサブネットの条件の1つは、ルーティングでインターネットゲートウェイを向いていることになる。
逆に言うと、プライベートサブネットとは、ルーティングが直接インターネットゲートウェイに向いていないネットワークになる。
EC2インスタンスがインターネットと通信するには、パブリックIPを持っていなければならない。
あるいは、NATゲートウェイを経由してインターネットと通信する。
NATゲートウェイは、ネットワークアドレス変換機能を有し、プライベートIPをNATゲートウェイが持つグローバルIPに変換し、外部と通信する。
システムの信頼性が求められる場合には、NATゲートウェイの冗長性が課題になる。
NATゲートウェイはAZに依存するサービスのため、マルチAZ構成をする場合は、AZごとに作成する必要がある。
仮想プライベートゲートウェイ
仮想プライベートゲートウェイ(VGW)は、VPCがVPNやDirect Connectと接続するためのゲートウェイ。
VGWも各VPCに1つだけアタッチすることができる。
1つだけしか存在できないが、複数のVPNやDIrect Connectと接続することが可能。
ルートテーブルでVGWをターゲットに指定すると、その宛先アドレスとの通信はVGWから、VPNやDirect Connectを通してオンプレミスネットワーク基盤に向けられる。
オンプレミスネットワークの宛先については、ルートテーブルに静的に記載する方法と、ルート伝播(プロバケーション)機能で動的に反映する方法の2つがある。
★ゲートウェイは、VPCの内部と外部との通信をやり取りする出入口。VPCとインターネットを接続するインターネットゲートウェイ(IGW)と、VPCとVPNやDirect Connectを接続する仮想プライベートゲートウェイ(VGW)がある。
VPCエンドポイント
VPC内からインターネット上のAWSサービスに接続する方法としては、インターネットゲートウェイを利用する方法と、VPCエンドポイントと呼ばれる特殊なゲートウェイを利用する方法がある。
VPCエンドポイントには、S3やDynamoDBと接続する際に利用するゲートウェイエンドポイントと、それ以外の大多数のサービスで利用するインターフェイスエンドポイント(AWS PrivateLink)がある。
ゲートウェイエンドポイントは、ルーティングを利用したサービス。
エンドポイントを作成しサブネットと関連づけると、そのサブネットからS3、DynamoDBへの通信はインターネットゲートウェイではなくエンドポイントを通じて行われる。
セキュリティの観点でVPCエンドポイントは重要になる。
経路の安全性を問われる場合は、インターネットを経由しないことを求められることが多い。
その際には、VPCエンドポイントは重要な要素となるため、設計パターンを押さえる。
ピアリング接続
VPCピアリングは、2つのVPC間でプライベートな接続をするための機能。
VPCピアリングでは、同一AWSアカウントのVPC間のみならず、AWSアカウントをまたがっての接続も可能。
VPCピアリングの通信相手は、VPC内のEC2インスタンスなどであり、IGWやVGWなどにトランジット(接続すること)はできない。
また、相手先のVPCがピアリングしている別のVPCに推移的に接続することもできない。
VPCフローログ
VPC内の通信の解析には、VPCフローログ(VPC Flow Logs)を利用する。
VPCフローログはAWSでの仮想ネットワークインターフェイスカードであるENI(Elastic Network Interface)単位で記録される。
記録される内容は、送信元・送信先アドレスとポート、プロトコル番号、データ量と認可/拒否の区別。
DIrect ConnectとDirect Connect Gateway
AWSとオフィスデータやデータセンターなどの物理拠点とを専用線で繋げたい場合は、AWS DIrect Connectを利用する。
Direct Connectを利用すると、VPNに比べて遅延やパケット損失率が低下し、スループットが向上するなど、安定したネットワーク品質で利用することができる。
また、アウトバウンドトラフィック料金は、Direct Connect経由のほうが安価に設定されている。
ネットワーク品質が重要になる場合や大量のデータをやり取りする場合は、Direct Connectの導入を検討する。
最近では、複数のAWSアカウントやVPCを利用することが一般的になっている。
Direct Connect Gatewayを利用すると、1つのDirect Connect接続で拠点と複数のAWSアカウントやVPCに接続することができる。
Direct Connectの導入時にセットで検討することがおすすめ。
さらに、複数のVPCとオンプレミスネットワークを中央ハブを介して接続するAWS Transit Gatewayというサービスもある。
スポンサーリンク
まとめ
リージョンとアベイラビリティゾーン
・国、地域ごとにリージョンがあり、リージョン内には複数のAZがある
・各AZが地理的、電源的に独立した位置にあることが、リージョンの耐障害性を高めている
・マルチAZにより可用性が高まる
VPC
・VPCは、AWSのネットワークサービスの中心
・ネットワーク空間は可能な限り大きなサイズ(/16)で作成する
・個々のサブネットには1つの仮想ルータがあり、このルータがルートテーブルとネットワークACLの設定を持っていて、サブネット内のEC2インスタンスのデフォルトゲートウェイになっている
・セキュリティグループはインスタンス単位の通信制御に利用し、ネットワークACLはサブネットごとの通信制御に利用する
・ゲートウェイは、VPCの内部との通信をやり取りする出入口。VPCとインターネットを接続するインターネットゲートウェイ(IGW)と、VPCとVPNやDirect Connectを接続する仮想プライベートゲートウェイ(VGW)がある