Amazon VPC シリーズAmazon VPC上にシンプルなWordpress環境を構築する:準備編
はじめに
今回はVPCの特性を活かしてシンプルなWordpress環境を構築します。ただ単にEC2とRDSを立てるのとは違い、しっかりと設計が必要だなと感じました。しっかりした知識を持っているわけではないので、何か不足があればコメントで突っ込みをもらえるとうれしいです。
AWS構成図
それほどお金もかけられないので最小構成で用意しますが、しっかりスケールアウトを前提にした構成にしてみたいと思います。(AWS Diagrams Adobe Illustrator Object Collectionを使ってみた)
ELBを置いて、スケールアウトできる状態にしつつWordpress用のEC2 1台とRDS1台、踏み台用のEC2を使って、Wordpress用のEC2にSSH接続する。
構築の流れ
大まかな流れは下記の通り。
- Key Pairの作成
- VPCの作成
- セキュリティグループの作成
- サブネットの作成
- SSH接続用踏み台サーバー(EC2)の作成
- EIPの割り当て
- Wordpress用Webサーバー(EC2)の作成
- Wordpress環境の構築
- Load Balancerの設定
- RDSの作成
- Route 53の設定
- Wordpressのインストール
Key Pairの作成
Amazon EC2 はパブリックキー暗号を使用して、ログイン情報の暗号化と復号化を行います。パブリックキー暗号は、パブリックキーを使用してパスワードなどのデータを暗号化し、受信者はプライベートキーを使用してデータを復号化します。パブリックキーとプライベートキーは、キーペアと呼ばれます。
Key PairはEC2のメニューからKey Pairのページを開き適当なKey pair nameを入力しCreate Key Pairを押してKeyを作ります。
ダウンロードされたpemファイルを.ssh
ディレクトリ下などに保存します。この鍵ファイルは踏み台サーバーにSSH接続する際に使います。踏み台サーバーへの接続にもこの鍵ファイルを使います。
VPCの作成
VPCは前回の記事Amazon VPCを作成しEC2にHTTP接続するを参考に構築します。詳しくは前回の記事を読んでください。変更点は1つ、Step2: VPC with a Single Public SubnetのIP CIDR blockを変更します。
VPCのCIDR
1 つの CIDR ブロックを VPC に割り当てることができます。許可されているのは、/28 ネットマスクから /16 ネットマスクの間のブロックサイズです。つまり、VPC には 16~65,536 個の IP アドレスを含めることができます。一度作成した VPC のサイズは変更できません。
IP(A.B.C.D/E)のAは10で固定とし、Bを1〜255で好きな数値を設定、C、Dはそのままにします。Eのサブネットマスクはぶっちゃけまだ理解しきれていませんがとりあえずデフォルトの16のままにします(例:10.82.0.0/16)。
これでCreate VPCを押してVPCの作成は完了です。
セキュリティグループの作成
セキュリティグループは、インスタンスの仮想ファイアウォールとして機能し、インバウンドトラフィックとアウトバウンドトラフィックをコントロールします。VPC 内でインスタンスを起動した場合、そのインスタンスは最大 5 つのセキュリティグループに割り当てることができます。セキュリティグループは、サブネットレベルでなくインスタンスレベルで動作します。このため、VPC 内のサブネット内のインスタンスごとに異なるセキュリティグループのセットに割り当てることができます。起動時に特定のグループを指定しないと、インスタンスは VPC のデフォルトのセキュリティグループに自動的に割り当てられます。
セキュリティグループ(Security Group)は用途に合わせたものを個別に作ります。今回作るセキュリティグループは4つです。
作成するセキュリティグループ
- ELB用のセキュリティグループ
- Internetからの接続(80番)
- Web Server用のセキュリティグループ
- ELBからの接続(80番)
- 踏み台Serverからの接続(22番)
- 踏み台Server用のセキュリティグループ
- Internetからの接続(22番)
- DB用のセキュリティグループ
- Web Serverからの接続(3306番)
セキュリティグループの作り方
セキュリティグループを作るにはVPCメニューのSecurity GroupsからCreate Security Groupに進みます。
Yes, Createを押して完了です。作成できたら、Inbound Rulesを作成します。
各セキュリティグループの細かな設定内容は下記の通りです。
ELB用のセキュリティグループ
項目 | 内容 |
---|---|
Name | vpc-wordpress: elb |
Group Name | vpc-wordpress |
Description | It is a security group on elb of vpc-wordpress. |
VPC | … |
Type | Source |
---|---|
HTTP(80) | 0.0.0.0/0 |
Webサーバー用のセキュリティグループ
項目 | 内容 |
---|---|
Name | vpc-wordpress: web |
Group Name | vpc-wordpress |
Description | It is a security group on http of vpc-wordpress. |
VPC | … |
Type | Source |
---|---|
HTTP(80) | ELB用のセキュリティグループID |
SSH(22) | SSH用のセキュリティグループID |
踏み台サーバー用のセキュリティグループ
項目 | 内容 |
---|---|
Name | vpc-wordpress: ssh |
Group Name | vpc-wordpress |
Description | It is a security group on ssh of vpc-wordpress. |
VPC | … |
Type | Source |
---|---|
SSH(22) | 0.0.0.0/0 |
DBサーバー用のセキュリティグループ
項目 | 内容 |
---|---|
Name | vpc-wordpress: db |
Group Name | vpc-wordpress |
Description | It is a security group on mysql of vpc-wordpress. |
VPC | … |
Type | Source |
---|---|
MySQL(3306) | HTTP用のセキュリティグループID |
サブネットの作成
サブネットは、VPC の IP アドレスの範囲です。AWS リソースは、選択したサブネット内に起動できます。インターネットに接続する必要があるリソースにはパブリックサブネットを、インターネットに接続されないリソースにはプライベートサブネットを使用してください。
今回、ロードバランサー、Webサーバー、DBサーバーの3つ、AZ(Availability Zone)毎にサブネットを分けます。今回はEC2とRDSを1台ずつなので、合計で5つのサブネットを作ります。1台ずつなら4つじゃないの?と思ってしまいますが、RDSを立てる際、Single-AZだとしてもAZ毎にサブネットを求められるため違うAZにサブネットを用意しておかなければいけません。
サブネットの作り方
サブネットの作成はVPCメニューからSubnetsを選択しCreate Subnetから作ります。
設定内容の詳細は以下の通りです。
EC2用 Public subnet
項目 | 内容 |
---|---|
Name tag | Private subnet: EC2 |
VPC | vpc-wordpress |
Availability Zone | No Preference |
CIDR block | 10.82.1.0/24 |
SSH用 Public subnet
項目 | 内容 |
---|---|
Name tag | Public subnet: SSH |
VPC | vpc-wordpress |
Availability Zone | No Preference |
CIDR block | 10.82.3.0/24 |
RDS用 Private subnet
RDSはMulti-Az前提で2つのsubnetを作ります。AZを別にしなければいけないのでそこだけ注意します。
項目 | 内容 |
---|---|
Name tag | Private subnet: DB1 |
VPC | vpc-wordpress |
Availability Zone | ap-northeast-1c |
CIDR block | 10.82.2.0/24 |
項目 | 内容 |
---|---|
Name tag | Private subnet: DB1 |
VPC | vpc-wordpress |
Availability Zone | ap-northeast-1b |
CIDR block | 10.82.4.0/24 |
Public subnetとPrivate subnet
パブリックサブネットのインスタンスはインターネットから直接インバウンドトラフィックを受信できますが、プライベートサブネットのインスタンスはこれができません。また、パブリックサブネットのインスタンスはアウトバウンドトラフィックを直接インターネットに送信できますが、プライベートサブネットのインスタンスはできません。代わりに、プライベートサブネットのインスタンスは、パブリックサブネット内に起動するネットワークアドレス変換(NAT)インスタンスを使用して、インターネットにアクセスできます。
Public subnetとPrivate subnetではRoute Tableに違いがあることに注目してください。 VPC作成時に作られたロードバランサー用のPublic subnetにはInternet Gatewayが0.0.0.0/0
で割り当てられています。これがインターネットからのアクセスを許可するための指定です。つまり、Webサーバーと踏み台用サーバーはInternet Gatewayを割り当てるためにRoute TableをInternet Gatewayがあるものに変更します。
今回はここまで。
次回から実際に踏み台サーバー、Webサーバーの構築に入ります。
シリーズ
- Amazon VPCを作成しEC2にHTTP接続する
- Amazon VPC上にシンプルなWordpress環境を構築する:準備編
- Amazon VPC上にシンプルなWordpress環境を構築する:Webサーバー構築編