EC2のwebサーバーをロードバランサで負荷分散する

ロードバランサとは

アクセスが多く来るサイトの場合には、1台のサーバーだけでは受け止めきれない可能性があります。

全く同じデータの入ったサーバーを用意しサイトを動かす場合、ドメインの関連付けが問題になります。

ロードバランサを配置することで、アクセスしてきたユーザーの参照先を2台以上のサーバーに割り振ることができます。

イメージ的にはアトラクションで座席に案内するお姉さんに近いです。「あなたは○番、そっちのあなたは△番のサーバーに行って!」という指示だけを行うのがロードバランサです。

このメリットは負荷が分散されるだけでなく、もし○番のサーバーが何らかの事情で停止した場合に、案内を○番を除いた形で行うことができます。

今回は2台のwebサーバーにしたインスタンスを用いて負荷分散するロードバランサを作成します。

ロードバランサを立てて、2台のサーバーで負荷分散しよう。

構成は下記のようなものを目指します。

非常に簡単な構成ですが、ロードバランサの動作を確認するのにはわかりやすい構成です。

インスタンスは、2台WordPressが入ったものを用意しましょう。

初めてAWSでコンピューティングサービスを使う際のまとめ

ロードバランサを立てる

まずはEC2からロードバランサの項目へ。作成をクリックすると以下画面になります。

今回はwebサーバーへのアクセスなので、左のALBを選択します。

スキームがわかりにくいですが、インターネット向けに置くか、内部向けに置くかですね。外部のアクセスを分散させるのでインターネットを選択します。

プロトコルはhttpsのみにしてあります。

httpsが含まれている場合に、次の画面で証明書の選択になります。今回はACMを使用しますが、ACMへの追加方法は本筋ではないので割愛します。

セキュリティグループの設定です。

既存で作成したものも指定できますが、ロードバランサ用に作成しておいたほうが後から個別で設定を追加したいときに楽なので追加しました。

ターゲットグループの設定です。

こちらで、振り分ける先のインスタンスを設定します。ヘルスチェックはインスタンスへ生存確認する際に使うプロトコルを設定します。

ロードバランサ⇔インスタンス間はhttpでアクセスさせるので、それが途絶えた場合にダウンと判断してほしいので、httpを選択しました。

次に、ターゲットグループへターゲットを登録します。

下にインスタンス一覧がでるので、接続先を選択します。チェックボックスにチェックを入れて「登録済みに追加」を押すと上の「登録済みターゲット」へ追加されます。

「登録済みに追加」の右側にある「ポート」項目に転送先のポートを記入します。

もしロードバランサに証明書を適用して、ユーザー⇔ロードバランサ間はhttps通信、ロードバランサ⇔インスタンス間はhttpでやり取りさせたい場合には80番を入力します。

こちらで作成完了しました。ロードバランサのドメインでアクセスが可能ですが、見た目が悪いので、所持しているドメインを関連付けします。

ドメインの関連付けをRoute 53で行っている場合には、以下のようにRoute 53のrecordへ追加します。

ターゲットへはロードバランサのDNSを入力。Nameには使いたいドメイン名を入れればよいでしょう。

これで作成して少し待つと、指定したドメインにアクセスすると、httpsでwebサイトへアクセスできます。

残りの作業

今回の設定で、ひとまずロードバランサで2台のwebサーバーに負荷分散することができました。

しかし、これだけの設定では実際にサイトを運用する場合には穴だらけです。

例えば、公開しているサーバーをロードバランサで振り分けた場合には、このままではインスタンスにIP直などでアクセスが可能です。

そのため、セキュティグループを再設定しロードバランサからのみ可能にする必要があります。

また、ロードバランサに紐づけた2台のサーバーはそれぞれ独立して存在してしまっています。

そのため、2台の同期処理を行わなければ、コンテンツの更新をしたときに片側のみになってしまいます。

ファイルやDBのデータが同じものになるように同期を入れてあげましょう。

以上のような設定を入れて、ようやく実際に運用できる構成が出来上がります。