私は普段、サーバーサイド(PHP・Ruby)やフロントエンド(JS)などをいじっています。そのため、VPCやサブネットなどAWSのアーキテクチャにはあまり馴染みがないです。

そこでAWSへの理解を深めるための手段として、AWSのハンズオンであるWordPressウェブサイトを構築するをやりたいと思います。

今回はその第一回(フェーズ1-1)です。本記事ではAWSのハンズオンに載っている内容に沿って手を動かしますが、手順だけ書いても理解は深まらないため、分からない部分は説明を付けながら書きます。

フェーズ一覧

【1】 サーバー1台構成でWordPress環境を構築
1-1: コンソールへのログインと VPC(ネットワーク)の作成 → 今回はここ
1-2: サブネットを追加作成
1-3: Amazon EC2 インスタンスの作成
1-4: Elastic IP(固定 IP)の割り当て
1-5: WordPress のセットアップ

【2】 拡張性を向上しつつ、DB運用負荷を軽減する構成を構築
2-1: Amazon RDS のセキュリティグループを作成
2-2: DB サブネットグループを作成
2-3: Amazon RDS インスタンスを作成
2-4: MySQL のデータを移行
2-5: WordPress の DB 接続設定

【3】 ロードバランサーを使った負荷分散環境を構築
3-1: Web サーバーの AMI を作成
3-2: 2 個目の Aazon EC2 インスタンスを作成
3-3: Elastic Load Balancing を作成
3-4: Elastic Load Balancing 経由でアクセス
3-5: セキュリティグループ設定変更

【4】 フェーズ3の環境でスレーブDBを追加(Amazon RDS を Multi-AZ 構成に変更)

概要

AWSハンズオンの内容は以下のとおり。

このプロジェクトでは、PHP と MySQL を基盤とするオープンソースのブログツールおよびコンテンツ管理システム (CMS) である WordPress をデプロイおよびホストする方法について説明します。本番ワークロード用の WordPress をホストするアーキテクチャを必要最低限の構成で実装します。これを実現するため、Amazon EC2 と Amazon Relational Database Service (RDS) を使用します。WordPress AMI をデプロイし、データベース負荷軽減をした後、ロードバランサーで環境の負荷分散を行いつつ、スレーブデータベースを準備します。Amazon RDS では、コスト効率が高く、サイズ変更可能なキャパシティーを利用できます。時間のかかるデータベース管理タスクは自動的に実行されます。

単にWEBサイトをインターネット上に公開するだけでしたら、AZやサブネットはあまり意識しなくて良いです。ただ、AWSを使ってスケーラブルなウェブサイトの構築を目指すのであれば、以下のような構成でWEBサイトを公開する必要が出てきます。

※スケーラブル = 利用者や仕事の増大に適応できる能力・度合いのこと

構成イメージ図

今回のAWSのハンズオンで実施する最終的な構成のイメージです。

aws-wp2

それでは早速、WordPressウェブサイトを構築するを進めていきます。

ハンズオンを実施する際に必要なもの

WordPressウェブサイトを構築するのページ下部にある「準備事項」をご確認ください。私の場合は以下を使います。

  • PC:Mac
  • ログイン:個人のAWSアカウント
  • SSHクライアント:Macに標準で付属しているターミナル
  • ブラウザ:Chrome

用語説明

専門的な用語が多く出現するため作業に入る前に、フェーズ1全般の作業に必要な用語をまとめました。いきなり全部を覚える必要はありませんが、作業中に分からなくなったら見返すと良いです。

IAMAWSの各サービスへのアクセスを管理する機能
リージョンデータセンターが置いてある地域のこと
アベイラビリティゾーン(AZ)各リージョン(地域)にあるデータセンター(施設)のこと
VPCサーバーやDBを配置する為の仮想ネットワークのこと
サブネット大きなネットワークを分割した小さなネットワーク
パブリックサブネットインターネットと通信を行うことができるサブネット
プライベートサブネットインターネットと通信を行うことができないサブネット(NATインスタンスを経由すれば通信可能になる)
EC2インスタンス仮想サーバーのこと
ルートテーブルサブネット内にあるインスタンスなどが、どこに通信にいくかのルールを定めたもの
インターネットゲートウェイEC2インスタンスをインターネットに接続するもの
CIDRネットワークやサブネットの範囲を分けるための表記(例えば、173.31.0.0/16の場合/16のこと)
セキュリティグループAWSのファイアウォール機能の一つ
HTTPHTMLなどのコンテンツの送受信に使う通信方法
SSHサーバーをリモート操作する時に使う通信方法
キーペア公開鍵暗号における公開鍵と秘密鍵のペア
Elastic IP静的な(固定の)IPアドレスのこと
yumLinuxのRedHat系ディストリビューション(CentOSなど)で利用されるパッケージ管理ツール
スケーラビリティ利用者や仕事の増大に適応できる能力のこと

1-1. コンソールへのログインとVPCの作成

ステップ 1: AWS マネージメントコンソールにログインする

AWSのルートアカウント(個人アカウント)を利用して、https://console.aws.amazon.comにブラウザでアクセスしてログインします。

aws-wp3

ステップ 2: リージョンを変更する

デフォルトだとリージョンがオハイオになっていますので、東京に変更します。そうしないとAZの名称がハンズオンの内容と異なり、作業が面倒だからです。それとサーバーは利用者に物理的距離が近い方が通信時間が短いため、特別な事情がなければ東京を選んでおくのがベストです。

aws-wp4

ステップ 3: VPC 管理ページを開く

ステップ 1で開いた画面で、AWSサービスの検索欄に「VPC」と入力し、エンターキーをクリックします。

ステップ 4: VPC の作成ウィザードを開始する

1.VPCダッシュボードをクリックします。
2.VPCウィザードの起動をクリックします。

ステップ 5: VPC 作成ウィザード

1個のパブリックサブネットを持つVPCをクリックします。
先ほどの構成図で言う、赤枠で囲んだ部分を作成します。

aws-wp6

「1つのパブリックサブネットを持つVPC」を選択後、選択ボタンをクリックします。

aws-wp7

AWSのハンズオンに載っている通りに入力していきます。

aws-wp8

「IPv4 CIDR」を選択した時のIPアドレスとサブネットについて

プレフィクス表示サブネットマスクIP数
/16255.255.0.0約65,536個
/24255.255.255.0約256個

IPアドレスサブネット早見表

「/16」「/24」の数字の意味はなに?となると思います。
CIDR関連の用語は概念が難しいため、他サイトから引用したものを載せます。

CIDRとは…

先ずはプライベートIPについておさらいしましょう。

IPアドレスは、「ネットワーク部」と「ホスト部」から成ります。ネットワーク部が短いほど・ホスト部分が長いほど大きなネットワークの構築が可能です。またネットワーク部とホスト部の構成には規格(クラス)があります。

  • クラスA:10.0.0.0/8 = 10(ネットワーク部)+ 0.0.0(ホスト部)
         大きいネットワークを作る場合(最大16,777,216個のアドレス配布が可能)
  • クラスB:172.16.0.0/16 = 172.16(ネットワーク部)+ 0.0(ホスト部)
         中くらいのネットワークを作る場合(65,536個のアドレス配布が可能)
  • クラスC:192.168.1.0/24 = 192.168.1(ネットワーク部)+ 0(ホスト部)
         小さいネットワークを作る場合(256個のアドレス配布が可能)

上記クラスのIPアドレスのお尻に着く「/8」「/16」「/24」はCIDR表記と呼ばれ、ネットワーク部の長さを示す値で、IPアドレスを2進数表記にした場合の先頭から桁数になります。例えば「10.0.0.0(/8)」を2進数表記すると「00001010.00000000.00000000.01111001(/8)」になります。ネットワーク部はこの数字の羅列の先頭から「8」桁まで、つまり「00001010」を指します。このようなプライベートIPを「クラスフル」と呼びます。

さて本題のCIDRですが、これは「Classless Inter-Domain Routing」の略です。つまり「クラスレス」なので上のような規格に当てはめることなく自由なサイズのネットワークの構築が可能になります。仮に、257個のアドレスが必要なネットワークを構築したい場合、「クラスフル」だとクラスB、CIDR表記で「/16」のネットワークサイズ(最大65,536個のアドレス)を選択することになり、無駄が多くなります。一方「クラスレス」ですと、CIDR表記で「/23」のネットワークサイズ(最大512個のアドレス)を選択できるので無駄の少ないネットワークサイズ構築が可能になります。

上記のような、自由なサイズのネットワークの構築をする仕組みをCIDRと呼びます。

出典:Wedding Park やってみよう!AWSでWEBサーバー環境構築(シリーズ第1回)

画面右下の「VPCの作成」をクリックすると、VPCが作成されました。

aws-wp9

ステップ 6: VPC のフィルタリング設定

画面左上の「VPC でフィルタリング」のプルダウンメニューから自分のVPCを選択します。
VPCの選択ができない時は、ブラウザをリロードしてください。

aws-wp10

ステップ 7: 作成された VPC の確認

1.「VPC」をクリックします。
2.先ほど作成した VPC が存在するか(正しく絞り込めているか)を確認します。
3.「10.0.0.0/16」であることを確認します。

ステップ 8: ウィザードで作成されたサブネットを確認

1.「サブネット」をクリックします。
2.「サブネット」を選択します。
3.「10.0.0.0/24」であることを確認します。
4.「ap-northeast-1a」であることを確認します。

ステップ 9: 作成されたサブネットの Route Table を確認

VPCのネットワークアドレス 10.0.0.0/16 のターゲットがlocalに、デフォルトルートの0.0.0.0/0のターゲットがインターネットゲートウェイ (igw-XXXX)になっており、インターネットと通信できる設定になっています。

1.「ルートテーブル」をクリックします。
2.内容を確認します。

aws-wp11

「0.0.0.0/0」は、すべての発信IPv4トラフィックを許可するという意味です。
VPC のセキュリティグループ - Amazon Virtual Private Cloud

これで1-1. コンソールへのログインとVPCの作成は以上です。
次回は「1-2. サブネットを追加作成」をやっていきます。