1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[AWS]ロードバランサーの作成とその役割

Posted at

ロードバランサーの作成

プライベートサブネット内に作成したWebサーバーはまだインターネットに公開されていないため、公開する設定を行い、Webブラウザ上で実際に接続できたか確認していきます。

ロードバランサーの役割

私たちが日々利用しているWebサービスには、毎日多くのユーザーがサーバーにアクセスしてきます。よって1台のWebサーバーでは、ユーザーからのたくさんのリクエストに耐えられなくなり、サーバーの故障の原因となります。そこで、AWSにはWebサーバーを増やしアクセス数に応じて最適なサーバー台数を確保するスケールアウトと呼ばれる機能が備わっており、このスケールアウトを実現するのがロードバランサーと呼ばれるサービスです。

このロードバランサーには3つの役割が存在します。

① リクエスト分散機能

Webサーバーへのリクエストを均等に分散させて、一つのサーバーにアクセスが集中しないようにすることができます。サーバーへの負荷分散行うことで、故障を防ぐだけでなく故障が疑われるサーバーには接続せずに、正常なサーバーへの接続をするなど、可用性を実現しています。

② SSL処理

SSL(Secure Sockets Layer)は送受信しているデータを暗号化する技術です。よくWebブラウザのURLにある"https://~"で始まるWebサイトが、SSLを利用して通信が暗号化されています。ブラウザとサーバーのデータは、暗号化されているため、第三者からデータの傍聴と改ざんを防ぐことができます。また、暗号化や複合といった複雑な処理をWebサーバー自身でやると負荷がかかりますが、ロードバランサーには高速に処理できる機能が備わっているので、高速通信も実現できます。

③ 不正リクエスト対策

Webサーバーに正しいリクエストが来て、適切にユーザーとサーバー間のやりとりが行われるとは限りません。中には、悪意あるユーザーや予期せぬリクエストによってサーバーが乗っ取られることや、故障に繋がることもあります。しかしこれを解決するためにWebサーバーに不正なアクセス検知をして防ぐ処理を施しても、これはこれで負荷をかけることになり、故障の原因やサーバーからのレスポンスを悪くするなどあまり良くありません。しかし、ロードバランサーには、これらの不正なアクセス検知する機能が備わっているため、サーバーごとにセキュリティ対策を行わなくとも、効率的に不正なアクセスから守ることができます。

AWSコンソール画面

今回は、AWSが提供しているHTTPやHTTPS通信によるアクセス分散に最適なALB(Application Load Balancer)を利用していきます。また、インフラの動作確認としてRubyを使用するため、ポート番号は3000を使います。

ALBの作成

名前 VPC Mapping セキュリティグループ
sample-elb sample-vpc subnet-(public01, 02) default,sample-sg-elb

ELB作成.png

スクリーンショット 2023-02-17 19.21.38.png

スクリーンショット 2023-02-17 19.21.49.png

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

名前 プロトコル ポート Available instances
sample-tg HTTP 3000 sample-ec2-(web01, web02)

ターゲットグループは、ロードバランサーからWebサーバーにアクセスする時に関係する設定を行います。ターゲットグループは複数作成することができるため、条件によってWebサーバーへのアクセスの振り分けを行うことが可能です。

リスナーの設定画面より、"Create target group"を押して、実際に作成していきます。

ELBターゲットグループ.png

スクリーンショット 2023-02-17 19.50.22.png

ELB ターゲット.png

上記のように"inlude as pending below"を押して、最後に"Register pending targets"を押します。
最後に先ほど作成した"sample-tg"を選択して完了です。

動作確認

まずは、ターミナルを2つ開きそれぞれ以下のコマンドを入力しサーバーに接続します。

$ ssh web01

$ ssh web02

そして、それぞれにvimコマンドでindex.htmlファイルを作成します。作成したWebサーバーのAmazon Linux2には、あらかじめインストールされているPythonでHTTPサーバーを立て、まずはヘルスチェックを行います。

$ vim index.html(index.htmlファイルを作成)
index.html
<html>
  <body>
    Sample site
  </body>
</html>
$ python -m SimpleHTTPServer 3000

その後、Webサーバーにヘルスチェックを断続的に行われます。ヘルスチェックとは特定のサーバー上のサービスに、作業を正常に実行できるかどうかを確認する方法です。ロードバランサーは、各サーバーにこの質問を定期的に行い、トラフィックを転送しても安全なサーバーを判断します。

コンソール画面上のターゲットグループの詳細画面で、Health statusが"healthy"になるまで、ヘルスチェックを行います。"healthy"になれば、対象のWebサーバーへリクエストがルーティングされることを意味しています。

次に、ロードバランサーの詳細画面からDNS名をコピーしブラウザに入力すると、index.htmlファイルの内容が出力されるのが確認できます。

参考

AWSではじめるインフラ構築入門 翔泳社出版

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?