ELB の作成

このセクションでは、WordPress をインストールした EC2 の前段に ELB (Elastic Load Balancing) を作成して配置します。

00

1. EC2 コンソールに移動

  • 画面左上の 検索ボックス から ec2 と入力し、EC2 をクリックしてEC2 コンソールに移動します。

01

2. ELB の作成

  • 左のメニューで ロードバランサー をクリックし、ロードバランサーの作成 をクリックします。

02

  • ロードバランサーの種類の選択 を行います。
  1. Application Load Balancer (ALB) の 作成 をクリックします。

03

  • ロードバランサーの設定 を行います。
  1. 名前elb-user1 を入力します)

04

  • ELB を配置する アベイラビリティーゾーン の設定を行います。2 つのパブリックサブネットに配置します。
  1. VPChandson-user1 を選択します
  2. アベイラビリティーゾーンap-northeast-1aap-northeast-1c のチェックをオンにします
  3. ドロップダウンメニューで パブリックサブネット-1aパブリックサブネット-1c を選択します (間違えて 「プライベートサブネット の 1a や 1c」を選択しないで下さい!!)
  4. 次の手順 をクリックします

05

  • セキュリティ設定の構成 では、今回は TLS(SSL) を使用しないため、何も設定せず 次の手順 に進みます。

06

  • セキュリティグループの設定 では、ELB 用のセキュリティグループを新規に作成します。
  1. セキュリティグループの割り当て新しいセキュリティグループを作成する を選択します
  2. セキュリティグループ名elb-user1 と入力します (初期値の「load-balancer-wizard-1」から変更します)
  3. 説明elb-user1 と入力します (名前と同じ値を指定します)
  4. 初期登録されているルール(1行目) の タイプHTTP を選択します
  5. 初期登録されているルール(1行目) の ソース 任意の場所 を選択します
  6. 次の手順:ルーティングの設定 をクリックします

07

  • ルーティングの設定 を行います。以下の手順でターゲットグループを新規に作成します。また、この中で WordPress が ELB からのヘルスチェックに対し HTTP ステータスコード 200 を返せるように、ヘルスチェックのパスを変更します。
    • ターゲットグループ・・・ELBからの送信先(ターゲット)についての定義を設定する
    • ヘルスチェック・・・サーバが正常に動作しているかをチェックする機能
  1. ターゲットグループ新しいターゲットグループ が選択されていることを確認します
  2. ターゲットグループの 名前target-user1 を入力します
  3. ターゲットの種類インスタンス が選択されていることを確認します
  4. ヘルスチェックセクション の パス/wp-includes/images/blank.gif を入力します
  5. ヘルスチェックの詳細設定 をクリックして展開します
  6. 間隔30 秒から 6 秒に変更します
  7. 次の手順:ターゲットの登録 をクリックします

    ※上記の手順「4.」では、Wordpressにデフォルトで格納されている「blank.gif」という画像ファイルに対して通信を行い正常性をチェックするよう設定している。

ヘルスチェックパス (/wp-includes/images/blank.gif)の入力間違いに注意してください (手入力ではなく、必ず コピー & ペースト して下さい。また、ペーストした値の前後に半角スペースなど余分な文字が含まれていないことも確認して下さい)

08

  • ターゲットの登録 画面で、EC2 インスタンスをターゲットグループに追加し、ELBがリクエストのルーティング先として登録します。
  1. webserver#1-user1 のインスタンスにチェックを入れます
  2. 登録済みに追加 をクリックします

09

  • 登録済みターゲット にインスタンスが表示されていることを確認して進みます。
  1. 登録済みターゲットにインスタンスwebserver#1-user1が表示されていることを確認
  2. 次の手順をクリックします

10

  • 確認 画面でこれまでの入力内容に誤りが無いことを確認し、作成 をクリックします。

11

  • 「ロードバランサーを正常に作成しました」の表示を確認し、閉じる をクリックします。

12

3. ELB の確認

  • 作成した ELB の DNS 名をメモします。(ローカルPCのテキストファイルなどに控えておきます)
  1. elb-user1 にチェックが入っていることを確認します
  2. 説明タブ の DNS 名 をメモします

13

ELB に登録された EC2 インスタンスの状態を確認します。

  1. リスナー タブを選択します
  2. デフォルトの転送先である target-user1 ターゲットグループを選択します

14

  1. ターゲットグループ target-user1 の詳細画面が表示されたことを確認し、ターゲット タブを選択します
  2. 登録済みターゲットステータスhealthy になっていることを確認します(確認タイミングが早いと initial と表示されていることがあります)

initial の表示の場合は、initial から状態が変わるまで 定期的に下の 再読込ボタン をクリックして表示を更新して下さい。

15

もし、initial から unhealthy に変わった後、unhealthy の状態のままで healthy にならない場合は、 「セキュリティグループの設定が誤っている」や「ヘルスチェックのパス指定が誤っている」が考えられますので、手順を再確認してください。

Webサーバー (EC2インスタンス:webserver#1-user1) に指定した セキュリティグループ (web-user1)は、「どこからでもHTTPアクセスが可能な設定(「任意の場所」)としました。セキュリティの観点からこれは避けるべきであるため、作成したELB(ALB)からしか HTTPアクセス を受け付けないように変更します。

4. セキュリティグループの変更

  • EC2インスタンスは ALB からのアクセスだけを許可するよう、以下の手順で WebサーバーのEC2インスタンスに適用するセキュリティグループ「web-user1」の設定を更新します。
  1. 画面左上の サービス から EC2 を選択し、EC2 コンソールに移動します
  2. 左のメニューで セキュリティグループ を選択します
  3. 画面上部の一覧で、 web-user1 セキュリティグループのチェックをオンにし、選択状態にします
  4. 画面下部の インバウンドルール タブを選択します
  5. インバウンドルールを編集 をクリックします

以下の手順で、インバウンドルールを修正します。

  1. タイプHTTP ルール(IPv6の設定を削除していなければ、2行あります) の ソース 設定で、IPv6の行(ソースが「::/0」となっている行)があれば、その行の右端の「削除」をクリックして行自体を削除します。

  1. 次に、残った行の タイプHTTP ルール の ソース 設定で、 「0.0.0.0/0」とある箇所の「×」をクリックしてそれを削除します

  1. 続けて、そのルール(行)の 同じ ソース 設定のテキスト検索フィールドに elb と入力し、表示される候補 elb-user1(ELB 用のセキュリティグループ)を選択します

このように、あるセキュリティグループのインバウンドルールでは、ソースにIPアドレスを直接指定するだけでなく、異なる または 自身と同じ セキュリティグループ を指定することもできます。これは実際にも非常によく使われるテクニックですので、ぜひ覚えておいて下さい。

最終的に以下のような表示状態になっていることを確認し、画面右下の「ルールを保存」をクリックします

  • セキュリティグループのルールを更新保存した後も、ヘルスチェックが成功し、ターゲットのステータスが healthy 状態になっていることを確認します
  1. 左のメニューから ターゲットグループ を選択します
  2. target-user1 を選択します(あるいは既に選択済みであることを確認してください)
  3. セキュリティグループの更新保存した後、10秒ほど待機してターゲットグループのリロードボタンを数回クリックしたあとでも、 登録済みターゲットwebserver#1-user1ステータスhealthy となっていることを確認して下さい

ターゲットグループのインバウンドルールを変更保存した後でも、ターゲットのステータスが healthy 状態を維持している状態を確認したら このセクションは完了です。 次のセクションに進んで下さい。

この時点で、皆さんが利用しているWebブラウザから、Webサーバー(webserver#1-user1) の EC2インスタンス のPublic IPアドレス への直接アクセスは行うことが出来ないようになりました。もし、Webブラウザのタブで、「2. Amazon EC2 の作成」http:// EC2インスタンスのPublicIPアドレス /wp-admin/setup-config.php?step=1&language=ja のようなURLを表示しているWebブラウザ画面が残っていたら、そのブラウザタブをリロードして見て下さい。応答が返されない (そして、時間が経過後にタイムアウトエラーとしてブラウザ側のエラーが表示される) 状態になることが確認出来るはずです。

5. ヘルスチェックパスの確認(よくあるミス)

  • セキュリティグループを修正しても、healthy 状態にならない場合、ヘルスチェックのパスを間違えてないかどうかを確認して下さい。
  1. パスが /wp-includes/images/blank.gif となっていることを確認します
  2. 間違っていた場合、ヘルスチェックの編集をクリックして正しいパスを入力します

16

次のセクションに進んで下さい。