【新卒 / 中途採用】サーバー / クラウドエンジニア 募集中!【大阪】

【新卒 / 中途採用】サーバー / クラウドエンジニア 募集中!【大阪】

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

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

【ECサイト構築】Shopify カスタムアプリ開発サービス

【ECサイト構築】Shopify カスタムアプリ開発サービス

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

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

【音声アプリ開発】Twilio アプリ開発サービス』

【音声アプリ開発】Twilio アプリ開発サービス』

【メッセージアプリ】LINE アプリ開発サービス

【メッセージアプリ】LINE アプリ開発サービス

【対談記事】「やっぱクラウド移設っていいですよね」マイネット × ビヨンド エンジニア対談

【対談記事】「やっぱクラウド移設っていいですよね」マイネット × ビヨンド エンジニア対談

ビヨンド公式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に変わりました!

まとめ

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

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

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

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


この記事をかいた人

About the author

井上明香

ビヨンドに四国オフィス設立メンバーとして入社。IT業界に未経験で飛び込みました。ビヨンドの「賢いキャラ」確立のために日々奮闘中(笑)
地元が大好き。地元愛が止まらない。
小難しい技術ブログが書けるよう日々勉強。日々アップデート。