【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

【25卒向け】AI×バーチャル面接の募集を開始いたしました!

【25卒向け】AI×バーチャル面接の募集を開始いたしました!

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【WordPress 専用】クラウドサーバー『ウェブスピード』

【WordPress 専用】クラウドサーバー『ウェブスピード』

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【中国現地企業に対応】中国クラウド / サーバー構築・運用保守

【中国現地企業に対応】中国クラウド / サーバー構築・運用保守

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【AWS初心者向け】5分でざっくりわかる!Amazon ELB

こんにちは!
株式会社ビヨンド四国オフィスのペルシャ猫、いのうえです。

今回は、AWSで提供されている【ロードバランサー】について解説していきたいと思います!

【ロードバランサー】とは?

よく耳にするロードバランサーですが、簡単に説明するとサーバーのロード(負荷)をバランシング(分散)する装置のことです。
アクセスが多くなく、サーバーが処理するリクエストが少ない場合は、ロードバランサーを使わなくても問題はありません。
しかし、何らかの理由で、サーバーにアクセスが集中したとします。
そんな時、サーバーが重たくなって、サイト表示に時間がかかることを経験した方も多くいらっしゃるのではないでしょうか?
インターネットからサーバーにアクセスがあると、サーバーはその機器に搭載されているCPUやメモリといったリソースを使ってリクエストを処理します。
何らかの理由でアクセスが集中しリクエスト数が急激に増えると、web利用者のブラウザでページ表示が遅くなったり、表示されなくなったりします。
このページ表示が遅くなったり、表示されなくなったりする、リクエスト処理が滞っているときが、高い負荷の状態です。
サーバーにアクセスが集中することによって、ロード(負荷)が高い状態であるといえます。
このような、負荷の高い状態でサイト表示が重い、あるいは表示されない状態を防ぐために、活躍するのがロードバランサーです。
負荷を複数のサーバーに分散することにより、1つのサーバーに負荷が集中することを防ぐことができます。
ロードバランサーの仕組みにより、webアクセスへの集中だけでなく、サーバー故障の場合などの場合にも、
web利用者に安定したサービスを提供することができます。
サーバーにかかる負荷の状態は常に一定とは言えません。
そのため、常に安定したサービスを利用者に提供するために、ロードバランサーの導入が必要だといえます。

【ELB】とは?

ELBとは、【Elastic Load Balancing】の略で、AWSが提供するロードバランサーです。
前述で記したように、ロードバランサーとは、サーバーに集中するアクセス(トラフィック)を、
複数のサーバーやネットワークに振り分けて、負荷を分散する仕組みです。
1つの負荷を分散させるので、【負荷分散装置】とも言います。
負荷分散のほかにも、ヘルスチェック機能も備えています。
ヘルスチェック機能を備えていることで、リアルタイムでサーバーのパフォーマンスをモニタリングすることができるので、
異常のあるサーバーを見つけるとそのサーバーへのトラフィック送信を中止し、他の正常な状態のサーバーにトラフィックを送信し、負荷分散することができます。
ELBは、負荷を自動的に分散し、サーバーがダウンしてしまうのを防いでくれる役割があります。
さらに、ELBは負荷の状態に応じて自動的にスケーリングを行い、
管理者(エンジニア)が手動でELBの台数を増やしたり、スペックを上げたりする手間も必要はありません。
突然アクセスが増加するなどのトラフィック上昇が予測される場合は、AWS Auto Scalingと併用することも可能です。
それにより、リクエスト量に合わせたサーバーの増減が可能となり、サーバーダウンを防ぐことができます。

また、ELBの特徴として、アベイラビリティゾーンが違う場合にも、設置されているEC2のトラフィックを負荷分散させることができます。

すべてのロードバランサーに対して複数のアベイラビリティーゾーンを有効にすることをお勧めします。
ただし、Application Load Balancer では、少なくとも 2 つ以上のアベイラビリティーゾーンを有効にする必要があります。
この設定により、ロードバランサーが引き続きトラフィックをルーティングできるようになります。
1 つのアベイラビリティーゾーンが利用できなくなるか、正常なターゲットがなくなった場合、ロードバランサーは別のアベイラビリティーゾーンの正常なターゲットにトラフィックをルーティングできます。

ELBの仕組み

■ELBの種類
ELBには、ALB、NLB、CLBの3種類があります。

ALB 【Application Load Balancer】の略です。
HTTP及びHTTPSに最適なロードバランサーです。
OSI参照モデルにおけるアプリケーション層で動きます。
HTTP、HTTPSプロトコルの対応が強化された単一ロードバランサーです。
webアプリケーションでは、最も利用されているロードバランサーです。
要求コマンドなどの命令内容を見て判断するので、宛先のURLのディレクトリ単位で振り分けるようなこともできます。
インスタンスとロードバランサーとの通信を暗号化することもできます。
また、振り分け先として、IPアドレスを指定することが可能です。
NLB 【Network Load Balancer】の略です。
OSI参照モデルにおけるトランスポート層(送信されたデータの制御を担う層)で動きます。
パケットと呼ばれる断片データしか見ないので、ALBほどの細かい振り分けはできません。
代わりに、振り分け先として静的IPアドレスを設定できたり、サーバーにアクセスしてきたクライアント側のIPアドレスをそのままサーバーに伝える設定にしたりできます。
NLBは、超低遅延で高スループットを維持しながら秒間何百万リクエストをさばける様に設計された最新のロードバランサーです。
NLBは、トラフィックをVPC内のターゲットにルーティングし、低いレイテンシーを維持しながら1秒間に数百万件ものリクエストを処理できるといった特徴があります。
そのため、大量のアクセス(負荷が急激に上昇する)が予測されるサーバーに向いています。
CLB 【Classic Load Balancer】の略です。
ELBの中では、古いタイプのロードバランサーです。
対応できるプロトコルが多いのが特徴です。
TCP、SSL/TLS、HTTP、HTTPSなど多くのプロトコルに対応しています。
複数のEC2インスタンスにおける基本的な負荷分散を提供し、リクエストレベルと接続レベルの両方で動作します。
EC2-Classicネットワーク内に構築されたアプリケーションを対象としています。
複雑な設定ができないのが弱点で、現在はAWSから使用が推奨されていないロードバランサーです。

上記の代表的なAWSのELB、3つ以外にも【GLB】も存在します。
GLBとは、【Gateway Load Balancer】の略です。

Gateway Load Balancerを使用すれば、サードパーティーの仮想ネットワークアプライアンスを簡単にデプロイ、拡張、および実行できます。
サードパーティーアプライアンスのフリートに負荷分散とAuto Scalingを提供するGateway Load Balancerは、トラフィックの送信元と送信先に対して透過性があります。
この機能により、セキュリティ、ネットワーク分析、およびその他のユースケースでサードパーティーのアプライアンスを操作するのに最適です。

Elastic Load Balancing
まだリリースしてまもないサービスなので、勉強してから別途ブログにできたらと思います!

ちなみに、私がこのブログを書くためにALBについて検証したところ
検証インスタンスにALBを紐づけただけでは、アクセスログを確認すると「403」ステータスコードが返ってきました。

172.31.4.72 - - [15/Jun/2021:07:59:03 +0000] "GET / HTTP/1.1" 403 4897 "-" "ELB-HealthChecker/2.0"

その場合、ドキュメントルート以下に「index.html」ファイルを置き、ファイルの中に「aws test」という文字を入れ、
ブラウザからアクセスすると無事、「200」ステータスコードが返ってきました。
※これは、サーバーにapacheがインストールされていることが前提条件となります。

まずは、ドキュメントルート以下に移動します。

[root@ip-172-31-38-25 httpd]# cd /var/www/html

「index.html」というファイルを作成します。

[root@ip-172-31-38-25 html]# touch index.html

作成した「index.html」ファイルに「aws test」と記述します。

[root@ip-172-31-38-25 html]# vi index.html

ブラウザから検証用インスタンスにアクセスしたい時は、chromeの検索バーに【パブリック IPv4 アドレス】を入力するとアクセスすることができます。
アクセスログを再度、確認してみましょう!

172.31.4.72 - - [15/Jun/2021:08:38:35 +0000] "GET / HTTP/1.1" 200 9 "-" "ELB-HealthChecker/2.0"

無事、ステータスコードが「200」になり、AWSのコンソールから「ターゲットグループ」を確認すると
「ターゲットグループ」のステータスもUnhealthyからhealthyに変わりました!

まとめ

ロードバランサーは例えると、
「あなたの仕事はこれですよ~」「あなたにはこの仕事をお願いします」というような会社でいう上司(司令塔)のようなものです。

ロードバランサーをうまく使うことで、サーバーダウンを防ぐことができ、
サイトの表示遅延や、サイトが表示されないといった困りごとを解消することができるので、サイトへの信頼度も高まりそうです。

私もロードバランサーのような仕事ができる人材になりたいものです。

日々成長、日々前進。
毎日、私自身をアップデートしていかなければ!!!
最後まで読んでくださって、ありがとうございます。

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
6
読み込み中...
6 票, 平均: 1.00 / 16
21,467
X facebook はてなブックマーク pocket
【2024.6.30 CentOS サポート終了】CentOS サーバー移行ソリューション

【2024.6.30 CentOS サポート終了】CentOS サーバー移行ソリューション

【25卒向け】AI×バーチャル面接の募集を開始いたしました!

【25卒向け】AI×バーチャル面接の募集を開始いたしました!

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

この記事をかいた人

About the author

井上明香

システムソリューション部に所属。
ビヨンドに四国オフィス設立メンバーとして入社。IT業界に未経験で飛び込みました。
教育チームとして、新卒、中途、既存メンバーのカリキュラムの作成や研修の実施を行っています。
主な業務は、サーバーの運用保守。
とにかく、お客様のコンテンツを大切に思っています。
Webコンテンツ事業部、YouTubeチームにも所属。