blog

Amazon VPC シリーズAmazon VPC上にシンプルなWordpress環境を構築する:準備編

    • Ryuichi Nonaka
    この記事は書かれてから1年以上経過しており、内容が古い場合があります。

    はじめに

    今回はVPCの特性を活かしてシンプルなWordpress環境を構築します。ただ単にEC2とRDSを立てるのとは違い、しっかりと設計が必要だなと感じました。しっかりした知識を持っているわけではないので、何か不足があればコメントで突っ込みをもらえるとうれしいです。

    AWS構成図

    それほどお金もかけられないので最小構成で用意しますが、しっかりスケールアウトを前提にした構成にしてみたいと思います。(AWS Diagrams Adobe Illustrator Object Collectionを使ってみた)

    AWS構成図

    ELBを置いて、スケールアウトできる状態にしつつWordpress用のEC2 1台とRDS1台、踏み台用のEC2を使って、Wordpress用のEC2にSSH接続する。

    構築の流れ

    大まかな流れは下記の通り。

    1. Key Pairの作成
    2. VPCの作成
      1. セキュリティグループの作成
      2. サブネットの作成
    3. SSH接続用踏み台サーバー(EC2)の作成
      1. EIPの割り当て
    4. Wordpress用Webサーバー(EC2)の作成
    5. Wordpress環境の構築
    6. Load Balancerの設定
    7. RDSの作成
    8. Route 53の設定
    9. Wordpressのインストール

    Key Pairの作成

    Amazon EC2 はパブリックキー暗号を使用して、ログイン情報の暗号化と復号化を行います。パブリックキー暗号は、パブリックキーを使用してパスワードなどのデータを暗号化し、受信者はプライベートキーを使用してデータを復号化します。パブリックキーとプライベートキーは、キーペアと呼ばれます。

    Key PairはEC2のメニューからKey Pairのページを開き適当なKey pair nameを入力しCreate Key Pairを押してKeyを作ります。

    Key Pairの作成

    ダウンロードされたpemファイルを.sshディレクトリ下などに保存します。この鍵ファイルは踏み台サーバーにSSH接続する際に使います。踏み台サーバーへの接続にもこの鍵ファイルを使います。

    VPCの作成

    VPCは前回の記事Amazon VPCを作成しEC2にHTTP接続するを参考に構築します。詳しくは前回の記事を読んでください。変更点は1つ、Step2: VPC with a Single Public SubnetのIP CIDR blockを変更します。

    VPC とサブネット

    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)。

    VPCの作成

    これで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を作成します。

    セキュリティグループのInboundを設定する

    各セキュリティグループの細かな設定内容は下記の通りです。

    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)インスタンスを使用して、インターネットにアクセスできます。

    パブリックサブネットとプライベートサブネットを持つ VPC

    Public subnetとPrivate subnetではRoute Tableに違いがあることに注目してください。 VPC作成時に作られたロードバランサー用のPublic subnetにはInternet Gatewayが0.0.0.0/0で割り当てられています。これがインターネットからのアクセスを許可するための指定です。つまり、Webサーバーと踏み台用サーバーはInternet Gatewayを割り当てるためにRoute TableをInternet Gatewayがあるものに変更します。

    Route Tableの変更

    今回はここまで。
    次回から実際に踏み台サーバー、Webサーバーの構築に入ります。

    シリーズ

    1. Amazon VPCを作成しEC2にHTTP接続する
    2. Amazon VPC上にシンプルなWordpress環境を構築する:準備編
    3. Amazon VPC上にシンプルなWordpress環境を構築する:Webサーバー構築編

    コメント・フィードバック