🏡 VPC(Virtual Private Cloud)とは?
AWS の中に専用のネットワークを構築できる機能です!
Webアプリの構築の際に基本的な使われ方としては、
Webサーバーやデータベースを配置してインターネットアクセスを通してサービスを提供したり、
逆にインターネットを使用せずに社内向けの業務アプリを配置することもできます。
VPCの基本的な構成
Webアプリを配置するための基本的なVPCの構成を見ていきたいと思います。
1. リージョン(Region)
AWSが用意する地理的な拠点。
例:東京(ap-northeast-1)、オレゴン(us-west-2)、バージニア北部(us-east-1) など
2. VPC(Virtual Private Cloud)
リージョンのなかに作る専用の仮想ネットワーク空間。
VPCを作成するときには、まず10.0.0.0/16
というように「このVPC内で使えるIPアドレスの範囲」を定義します。
IPアドレスやCIDRについてはこちらの記事でまとめています!
3. アベイラビリティゾーン(AZ)
リージョン内にあるデータセンター。
例えば東京リージョンの中には
- ap-northeast-1a
- ap-northeast-1c
- ap-northeast-1d
というように複数のデータセンターが存在します。
サービスを複数のAZに配置することで災害に対応してシステムの可用性(安定して使える状態を保つこと)を高めることができます。
4.サブネット
VPCというネットワークの中に配置する小分けのエリアになります。
VPCの中で「IPアドレスの範囲」を小分けにしたネットワークのこと。
また、サブネットは2種類存在します。
-
パブリックサブネット(インターネットと接続する)
- Webサーバーを配置
-
プライベートサブネット(インターネットと接続しない)
- DBサーバーを配置
その他VPC内で構成されるもの
パブリックIP
インターネットからアクセス可能なIPアドレスです。パブリックサブネットに配置されたリソースに割り当てて使用します。
Elastic IPアドレス
固定のパブリックIPアドレス。
通常のパブリックIPはインスタンスの起動/停止で変更されますが、
Elastic IPアドレスは変更されません。
DNSの設定やSSL証明書(HTTPSで通信を暗号化するためのもの)発行時に使用します。
プライベートIP
VPC内でのみ有効なIPアドレスで、パブリック・プライベートサブネットに関係なくVPC内のすべてのリソースにCIDR範囲内で割り当てられます。VPC内の他のリソースと接続する際に使用します。
ルートテーブル
VPC内の通信において、各サブネットごと、送信先、通信経路を定義するものになります。ルートテーブルに従って、送信先ごとに指定したターゲットへデータを転送することを「ルーティング」といいます。
インターネットからのアクセスフロー
実際にWebアプリを構築してリクエストが入った場合の流れを確認してみます!
1. インターネットからのアクセス開始
ユーザーがブラウザでexample.com
と入力しリクエストが入る
Route 53(DNSサービス)がドメイン名をALBのDNS名に名前解決が行われる。
- 例:
example.com
→alb-xxxx.ap-northeast-1.elb.amazonaws.com
2. VPC外部からVPC内部への入り口
VPCとインターネットを繋ぐ「玄関口」であるインターネットゲートウェイ(IGW)を使用することでインターネットがVPC内へのリソースへアクセスが可能となります。
3. ロードバランサー(ALB)による振り分け
インターネットアクセスを複数AZに配置されているEC2に負荷分散を行います。
ALBは定期的にヘルスチェックを行い、正常なEC2にのみ振り分けを行います。
※ 図ではwebサーバーを負荷分散、災害対策としてマルチAZ構成としています。
ヘルスチェックとは?
サーバーがちゃんと動いてるかを、ALBが自動で見に行ってくれる仕組みです。
調子の悪いサーバーは、自動で振り分け対象から外してくれます。
これでユーザーは壊れたサーバーに当たらず、安心して使えます!
4. パブリックサブネット層
EC2インスタンス(Webサーバー)がリクエストを処理を行います。
必要に応じてPrimary RDSにアクセスを行います。
5. プライベートサブネット層
Primary RDSがデータを処理を行います。
ここでも障害に備えてRDSのマルチAZ構成としています。
マルチAZ構成とは?
データベースを2つの拠点(AZ)に分けて配置して、
もし片方に障害が発生した場合、もう片方にフェイルオーバー(自動で予備のDBに切り替わる仕組み)することでサービスを止めずに運用できる仕組みです。