本記事は、以下の目的で作成しています。
- AWSのVPCと、それを構成するサブネット、インターネットゲートウェイ、ルートテーブルについての特徴や使い方が分かる
- ALB+EC2+RDSの基本構成において、セキュリティを確保してVPCを構築する方法が分かる
AWS VPCとは?関連する用語について解説
AWSのVPCとは?そしてVPCに関連する、サブネット、ルートテーブル、インターネットゲートウェイについて解説していきます。
VPCについて
VPC(Virtual Private Cloud)とは、ユーザー専用のプライベートなクラウド環境を提供するサービスのことです。Webアプリケーションなどを作成する場合において、サーバーやロードバランサーとして、AWSのサービスであるALB、EC2、RDSなどを使用しますが、これらのサービス間を接続をするためのネットワーク空間について設定が必要となります。このネットワーク空間をVPCと呼び、作成したVPC内でネットワークの接続設定をカスタマイズしていきます。
サブネットについて
VPC内でのAWSサービス間でのネットワーク設定は、VPCを分割したネットワーク群であるサブネットによって実施していきます。それぞれのサブネットでは主に下記の項目について設定していきます。
- プライベートorパブリック
- AZ(アベイラビリティゾーン)
- IPブロック
プライベートorパブリックの設定では、直接外のネットワークとは繋ぐことのできないプライベートサブネットであるか、外のネットワークからでも繋がっているパブリックサブネットであるかを設定します。
AZ(アベイラビリティゾーン)とは、冗長的な電力源、ネットワーク、接続機能を備えるために、AWS リージョン内でそれぞれ切り離されたデータセンターのことです。1つのAZに障害が発生した場合でも他のAZが生きている状態を作るため、複数のAZを設定します。
IPブロック(IPv4 CIRDブロック)では、各VPCや各サブネットのIPレンジを設定します。ALB,EC2、RDSなどのAWS内のサービスが家だとすると、それを建てるための土地と住所を割り当てていくイメージで、土地と住所に相当するのがIPブロックとなります。IPブロックについては、以下の記事が参考になるのでぜひご覧ください。
ルートテーブルについて
ルートテーブルとは、サブネットのデータの流れを制御する設定です。ルートテーブルごとに、内部、または外部との接続可能なネットワークについて設定していきます。サブネットをプライベート、パブリックとして分けるためには、それぞれのルートテーブルを作成し、サブネットを割り当てます。
インターネッとゲートウェイについて
インターネットゲートウェイとは、VPC と外部のインターネットとの通信を可能にする機能です。今回設定するパブリックサブネットは、外部のインターネットとの通信が必要となります。そこでインターネットゲートウェイをパブリックのルートテーブルに設定することで、パブリックサブネットを外部のインターネットと通信可能にします。
ALB+EC2+RDSの基本構成におけるVPCの作成方法
実際にALB+EC2+RDSの基本構成におけるVPCを構築していきます。まず構成全体像を確認した後、下記の流れでVPCを構築していきましょう。
- VPCを作成する
- サブネットを作成する
- インターネットゲートウェイを作成する
- ルートテーブルを作成する
構成の全体像
本記事では、ALB+EC2+RDSの基本構成におけるVPCの作成方法について紹介していきます。構成としては、下記の図に示すとおりです。ALBと踏み台用のEC2はパブリックサブネット、アプリ用のEC2とRDSはプライベートサブネットに設定します。また、ALB、アプリ用EC2、RDSについては、冗長性を向上させるため2つのアベイラビリティゾーンを設定します。
ここで、ALB、EC2、RDSについてそれぞれ簡単に説明します。
ALBについて
ALB(Aplication Load Balancer)とは、サーバー負荷(load)を低減させるために、外部からのリクエストを複数のサーバーに振り分け負荷分散するロードバランサーのサービスです。このロードバランサー機能によって、ユーザー数が増加してアクセスが増えた際に、サーバーを増やすことでアクセスの集中を他のサーバーに振り分けることが可能になります。
ALBについては、外部からのリクエストを受けるためパブリックサブネットに配置します。
EC2について
EC2(Elastic Compute Cloud)とは、仮想サーバー構築サービスです。EC2を利用することで、OSを乗せた仮想環境をクラウド上にすばやく作ることができます。また、OSを搭載しているため、EC2を使用することでWEBアプリケーションを起動することが可能となります。
アプリのソースコードなどを格納するアプリ用のEC2インスタンスについては、セキュリティ上プライベートサブネットに構築します。しかし、アプリを起動させたりする上でアプリ用のEC2にSSH接続する必要がありますが、プライベートサブネットのため外部からの接続が出来ません。そこで、もう一つパブリックサブネットに踏み台用EC2インスタンスを用意します。アプリ用EC2に対しては、踏み台用EC2を経由してSSH接続していきます。
RDSについて
RDS(Relational Database Service)はAWSが提供しているデータベースサービスの一つです。データベースサーバーとしてRDSを使用することで、データ通信の高速化、障害発生に対する耐久性の確保、容易なサーバー追加による拡張が可能となります。
RDSインスタンスについては、セキュリティ上プライベートサブネットに構築します。
VPCを作成する
まず、VPCを作成していきます。
AWSにログインした後で、右上のメニューから、「アジアパシフィック(東京)」のリージョンを選択します。
AWSのコンソール画面から「VPC」と検索して、VPCのコンソール画面に移動します。VPCのコンソール画面に移動したら、画面右上の「VPCの作成」をクリックします。
ここでは、名前タグに「app-vpc」、IPv4 CIDR ブロックに 「10.0.0.0/16」、タグキーを「Name」 にして値に「app-vpc」と設定します。設定後に、画面最下にある「VPCを作成」をクリックします。
成功すると画像のように作成したVPCがリストアップされます。
サブネットを作成する
続けて、サブネットを作成していきます。
VPCのコンソール画面左のメニューから「サブネット」を選択し、サブネット一覧画面の右上にある「サブネットを作成」をクリックします。
VPCには作成済みの「app-vpc」を選択し、下記7つのサブネットの設定をそれぞれ入力して、画面下にある「サブネットを作成」をクリックし、7つのサブネットを作成します。
- サブネット名を「app-ec2-subnet-public」、 アベイラビリティゾーンを「1a」、IPv4 CIDRブロックは「10.0.190.0/26」に設定
- サブネット名を「app-ec2-subnet-private-a」、 アベイラビリティゾーンを「1a」、IPv4 CIDRブロックは「10.0.193.0/26」に設定
- サブネット名を「app-ec2-subnet-private-c」、 アベイラビリティゾーンを「1c」、IPv4 CIDRブロックは「10.0.193.64/26」に設定
- サブネット名を「app-rds-subnet-a」、 アベイラビリティゾーンを「1a」、IPv4 CIDRブロックは「10.0.194.0/26」に設定
- サブネット名を「app-rds-subnet-c」、 アベイラビリティゾーンを「1c」、IPv4 CIDRブロックは「10.0.194.64/26」に設定
- サブネット名を「app-elb-subnet-a」、 アベイラビリティゾーンを「1a」、IPv4 CIDRブロックは「10.0.128.0/24」に設定
- サブネット名を「app-elb-subnet-c」、 アベイラビリティゾーンを「1c」、IPv4 CIDRブロックは「10.0.129.0/24」に設定
作成に成功すると、サブネットがリストアップされます。サブネットは、このようにVPCのIPの範囲から機能やAZごとに更にレンジを細分化しIPブロックを割り当てます。
インターネットゲートウェイを作成する
次に、インターネットゲートウェイを作成していきます。
VPCのコンソール画面左のメニューから「インターネットゲートウェイ」を選択し、サブネット一覧画面の右上にある「インターネットゲートウェイの作成」をクリックします。
ここでは、名前を「app-internet-gateway」に設定し、画面下にある「インターネットゲートウェイの作成」をクリックして、インターネットゲートウェイを作成します。
作成されたインターネットゲートウェイの左端にあるチェックボックスにチェックを入れた後、画面右上の「ToDo」アイコンから「VPCをアタッチ」をクリックします。ページ移動後、使用可能なVPCに作成した「app-vpc」を選択し、画面下にある「インターネットゲートウェイのアタッチ」をクリックします。
画像のように「状態」が「Attached」となっているインターネットゲートウェイがリストアップされれば成功です。
ルートテーブルを作成する
最後に、ルートテーブルを作成していきます。
VPCのコンソール画面左のメニューからを「ルートテーブル」選択し、ルートテーブル一覧画面の右上にある「ルートテーブルを作成」をクリックします。
ここで、VPCには作成した「app-vpc」を選択し、下記2つの名前をそれぞれ入力して、画面下にある「ルートテーブルを作成」をクリックすると、プライベート用とパブリック用の2つのルートテーブルが作成されます。
- app-private-route-table (プライベートサブネット用のルートテーブル)
- app-public-route-table(パブリックサブネット用のルートテーブル)
作成に成功すると、画像のように作成したルートテーブルがリストアップされます。
ルートテーブルを作成したら、ルートテーブル一覧画面のルートテーブルIDをクリックして表示される詳細画面にて、サブネット関連付けを実施していきます。
下記画像の「サブネット関連付け」タブをクリック後、「サブネットの関連付けを編集」をクリックして、作成した2つのルートテーブルに対して下記の組み合わせでサブネットをチェックボックスで選択し、「関連付けを保存」をクリックすることで関連付けを行います。
- app-private-route-table
- app-ec2-subnet-private-a
- app-ec2-subnet-private-c
- app-rds-subnet-a
- app-rds-subnet-c
- app-public-route-table
- app-ec2-subnet-public,
- app-elb-subnet-a
- app-elb-subnet-c
作成に成功すると、下記の画像のように「明示的なサブネットの関連付け」にリストアップされます。
サブネットの関連付けが完了したら、インターネットゲートウェイを設定します。
「app-public-route-table」の詳細画面にて「ルート」タブを選択し、「ルートを編集」のボタンをクリックします。ページ移動後、「ルートを追加」のボタンをクリックし、送信先に「0.0.0.0/0」を設定、ターゲットに作成したインターネットゲートウェイ(app-internet-gateway)を設定し、「変更を保存」をクリックします。
ルートに追加したインターネットゲートウェイが表示され、ステータスが「アクティブ」になっていれば成功です。
以上で、ALB+EC2+RDSの基本構成におけるVPC・サブネットを構築とネットワーク設定が完了となります。ここからは作成したVPC・サブネットをベースに、外部からのリクエストに対するALBの設定や、EC2、RDSインスタンスの作成を進めていきましょう。
さいごに
また、本記事でVPCについて紹介してますが、WEBアプリのインフラを構築する方法についてもっと全体的に知りたいという方は、下記の『【初心者向け】AWSでWEBアプリのインフラを構築する方法(EC2 + ELB + RDS + ACM + Route53)』において、インフラを構築するための具体的なToDoアイテムと完了までの計画表をセットで公開してますので、ぜひご覧ください!
コメント