AWS
elb

AWS ELB を使って冗長構成を組むまでの気にするポイント

今回ELBを使って、EC2の冗長構成を作りました。
その中で、何個かはまりごとにも出くわしたので、メモがわりに投稿します。

前提条件の構成

(BEFORE)

インターネット -> EC2 -> RDS

(とりあえずのAFTER)

インターネット -> ELB -> EC2 -> RDS

(さらにAFTER)

インターネット -> ELB -> EC2その1 / EC2その2 -> RDS

大まかな流れ

  1. ロードバランサーの作成
  2. ターゲットグループの作成
  3. ヘルスチェック用ファイルの設置
  4. DNSのAレコード登録
  5. EC2インスタンスを新規作成
  6. DNSのAレコード登録(直アクセス確認用)
  7. ターゲットグループに新規EC2インスタンスを登録
  8. 動作確認

手順とハマりポイント

1. ロードバランサーの作成

  • 入口が見つけづらいので数分ハマるので気をつけてくださいw

EC2_Management_Console.jpg

  • ロードバランサーの種類を選びます。今回は「Application Load Balancer」を選択。

EC2_Management_Console.jpg

  • AWSコンソールの手順に従い、設定を行います。
1. ロードバランサーの設定
2. セキュリティ設定の構成
3. セキュリティグループの設定
4. ルーティングの設定
5. ターゲットの登録
6. 確認

2. ターゲットグループの作成

  • ターゲットグループには、複数のAZを指定し冗長構成を図りました。
  • ターゲットは後からでも登録できるので、後回し。
  • 基本的には、ここでどんな設定をしても、DNSのAレコードを設定しない限り影響ないので、気軽に

3. ヘルスチェック用ファイルの設置

  • 確認をしている中でヘルスチェックが「Unhealthy」と出ていたので、Document Root配下にチェック用ファイルを置き、ヘルスチェックを再設定

4. DNSのAレコード登録

  • ロードバランサーの「説明」タブにある情報を参照し、DNSのAレコードを追加

EC2_Management_Console.jpg

  • この状態で、ブラウザからアクセスすると (とりあえずのAFTER) の構成になっている

5. EC2インスタンスを新規作成

  • 既存のサーバのAMIを作って、いつも通りにコピー作成
  • その時に、AZを既存のEC2と違うところで作るのを忘れずに。あとで必要になります。

6. DNSのAレコード登録(直アクセス確認用)

  • 既存のサーバ+新規作成サーバのパブリックIPを参照し、DNSのAレコードに追加
  • ロードバランサーを経由せず、インターネットから直接EC2にもアクセス可能な構成とするため

7. ターゲットグループに新規EC2インスタンスを登録

  • 既存のサーバ+新規作成サーバのパブリックIPを参照し、DNSのAレコードに追加
  • ターゲットグループのターゲットの種類を「ip」で選択した場合は プライベートIP を指定する必要があります。ここで パブリックIP を指定しようとし、しばらくハマりました。

8. 動作確認

  • 晴れて、ロードバランサーの設定は完了です。
  • それぞれのサーバにアクセスがきていること、ログが出ていること、ラウンドロビンできていることを確認し、ひと段落。

ここには書いてないけど、一緒にやったこと

  • ログファイルバックアップの設定

    • ログファイルをS3にバックアップしているのですが、単純に稼働サーバを増やすだけだとログファイル名が被っちゃうことが想定されたので、ログファイル名にホスト名を含めるなどの手入れをしました。
  • ログに出てくるIPアドレス取得に X_HTTP_FORWARDED_FORに切り替え

感想

サブネットグループやインスタンスの新規作成など、結構直感で運用していた面も改めてレビューすることができました。
かといって、大きなハマりポイントはなく、設定完了まで行けたのでAWSさすが!!という感じです。