[AWS]LB_サーバー複製とロードバランサー

By | 2018年2月13日

Webサービスを運営していくと、サーバーの負荷を分散させたい場合が出てくると思います。そんな時に良く知られている方法としては、サーバーを増設してロードバランサーからうまく負荷を分散させてあげる手段が取られます。
今回はドットインストール先生の第12~14章を参考に、サーバーの増設とロードバランサーの設定を行います。

 

サーバーの複製

負荷分散をするためには、全く同じ状態のサーバーを複数用意して分散させてあげる方法や、負荷が高まったときだけsorryサーバーにアクセスさせる方法などいくつかの対策があるようです。
しかし、負荷が高まったときにサービスが利用できないという状態は避けたいため、今回は冗長性の高い構成になるように同じ状態のサーバーを複数用意して負荷分散させる方法を学びたいと思います。


まずは目的のインスタンスを右クリックして「イメージの作成」を行います。


AMIの項目から先ほどのイメージを選択して「作成」を押します。


しばらく待てばインスタンスの作成が完了します。


インスタンスが作成されました。
インスタンス作成時にセキュリティグループを選び忘れていたので、複製元になったインスタンスと同じものを指定しなおします。アベイラビリティゾーンは念のため両方とも同じにしましたが、恐らく別のデータセンターでも問題ないでしょう。
あとこの画像だと「ステータスチェック」に失敗しています。いったんインスタンスを停止して再度起動を行い、2/2のチェックが通ることを確認してから作業に戻りましょう。このチェックですがかなり長いです。

これで負荷分散のためのサーバーを用意することができましたね!
実はインスタンスを右クリックで「同様のものを作成」するだけでもインスタンスの複製が可能です!
AMIは念のために残しておくべきだと思うので、今回の手順のほうがいいかなとは思うのですが手軽に複製できますので覚えておいて損はなさそうですね。

 

ロードバランサーの作成

ロードバランサーですがAWSを利用すると非常に簡単に設定できるようです。
自宅のラズパイ物理サーバー環境にリバースプロキシを置いて負荷分散と冗長性を高めようなんて考えてたのが馬鹿らしく思えるくらいAWSだと簡単に設定できるようです・・・。


まずメニューにある「ロードバランサー」を押します。
すると「ロードバランサーの作成」というボタンがありますのでこちらを押します。


今回はWebサーバーとして動かしているので、HTTP/HTTPS用のロードバランサーを設定します。ここからはロードバランサーの設定がメインになりますので、いったん節を分けたいと思います。

 

ロードバランサーの設定


ロードバランサーの名前やプロトコルなど基本的な設定画面に遷移します。特に難しい項目は無いはずなので必要に応じて埋めていきます。プロトコルはHTTPだけを選択し、アベイラビリティゾーンはとりあえず3つ選択しておきました。HTTPだけ選択すると注意ページが表示されますが、SSL証明書を発行したときに再設定すればよいと思います。


「セキュリティグループの設定」は既存のものを選びました。その後「ルーティングの設定」という項目に移動しますが、恐らくロードバランサーが接続先のサーバー状況をチェックするための設定だと思います。
今回はindex.htmlへアクセスして、サーバー状況を調べるように設定します(したつもりです)。


負荷分散を行う対象のインスタンスを設定します。今回は初めての設定ですので、対象のインスタンスを登録するところから始めます。目標のインスタンスが立ち上がっていることを確認したらチェックボックスを押して「登録済みに追加」を選びます。


最終確認で問題が無ければ「作成」を押します。


ということでロードバランサーが作成されました。

 

接続の確認


ロードバランサー管理ページの「説明」にてAレコードが記載されていますので、これをブラウザに貼り付ければアクセスできます。ドメイン名を使いたいと思うかもしれませんが、もちろんできます
将来的にはその設定も行なってみたいのですが、今回はまだAWSの機能について知らないことが多すぎるためまだ触れません。


ということで無事にHello, World!が表示できました。

 

終わりに

ドットインストール先生の公開しているAWSのバージョンがやや昔のもののため、結構説明どおりには行かない印象です。しかし大まかな内容は大体同じなので、ドットインストール先生を参考に学習を行うスタンスはこのまま続けていきたいところですね!
いよいよドットインストール先生の講義はあと3回で終わってしまうのですが、ドメイン指定して使う方法やらECSというDockerと組み合わせて使う?ものみたいなのも聞いたことがあるので、その辺については自力で探しつつ勉強していくつもりです。
(その前にDockerの使い方忘れてるからドットインストール先生のお世話になります。)

入門編にも終わりが見えてきましたが、まだまだ基礎の基礎。
今後とも学習を続けていきましょう!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です