助け合いフォーラム
AWS クラウドプラクティショナー(CLF-C02)
問題ID : 39622
問題を開く
EC2インスタンスで稼働するWebアプリケーションに対して高可用性を実現したい。
次のうち、もっとも効果的である方法はどれか。
次のうち、もっとも効果的である方法はどれか。
正解
複数のAZに配置されたEC2インスタンスをALBで負荷分散する
解説
Elastic Load Balancing(ELB)にはロードバランシングの方式によって複数の種類があります。そのうちのApplication Load Balancer(ALB)は、特にWebアプリケーションの高可用性を実現するために使用されます。
ALBはヘルスチェックを用いて正常なインスタンスのみにリクエストをルーティングします。複数のAZにEC2インスタンスを配置してALBで負荷分散することで、一部のインスタンスやAZに障害が発生しても正常なインスタンスでWebアプリケーションの利用を継続できます。
したがって正解は
・複数のAZに配置されたEC2インスタンスをALBで負荷分散する
です。
その他の選択肢については、以下のとおりです。
・複数のAZに配置されたEC2インスタンスをCLBで負荷分散する
CLB(Classic Load Balancer)は、ALBやNLBより古いサービスでパフォーマンスが劣るので、基本的にはALBやNLBの利用が推奨されています。
Webアプリケーションの高可用性にはALBの方が効果的であるので、誤りです。
・複数のリージョンに配置されたEC2インスタンスをNLBで負荷分散する
・複数のリージョンに配置されたEC2インスタンスをALBで負荷分散する
ELBはリージョン間の負荷分散をサポートしていないので、誤りです。
ALBはヘルスチェックを用いて正常なインスタンスのみにリクエストをルーティングします。複数のAZにEC2インスタンスを配置してALBで負荷分散することで、一部のインスタンスやAZに障害が発生しても正常なインスタンスでWebアプリケーションの利用を継続できます。
したがって正解は
・複数のAZに配置されたEC2インスタンスをALBで負荷分散する
です。
その他の選択肢については、以下のとおりです。
・複数のAZに配置されたEC2インスタンスをCLBで負荷分散する
CLB(Classic Load Balancer)は、ALBやNLBより古いサービスでパフォーマンスが劣るので、基本的にはALBやNLBの利用が推奨されています。
Webアプリケーションの高可用性にはALBの方が効果的であるので、誤りです。
・複数のリージョンに配置されたEC2インスタンスをNLBで負荷分散する
・複数のリージョンに配置されたEC2インスタンスをALBで負荷分散する
ELBはリージョン間の負荷分散をサポートしていないので、誤りです。
参考
【負荷分散(ロードバランシング)】
サービスの利用者が増えてくると、単一のリソースでは全てのリクエストを処理しきれなくなり、結果としてレスポンスの遅延が起こります。このような場合、リクエストを処理するリソースを複数配置し、それらのリソースにリクエストの処理を分散することでレスポンスの遅延が発生しないようにできます。
このような仕組みを「負荷分散(ロードバランシング)」といいます。
【Elastic Load Balancing(ELB)】
Elastic Load Balancing(ELB)は、AWSが提供する負荷分散サービスです。マネージドサービスであり、ユーザーは負荷分散機能を利用する際にアプリケーションのインストールやバージョンアップなどを考慮する必要がありません。
ELB配下の負荷分散先リソースのことを「ターゲット」といい、一つのELB配下で管理されるターゲットの集合を「ターゲットグループ」といいます。ターゲットにはインスタンス、IPアドレス、Lambda関数を指定できます。ターゲットグループ単位で負荷分散を行い、適切なターゲットにリクエストがルーティングされるようになります。
ターゲットは、可用性を向上させるためにマルチAZ(複数のAZに配置する構成)にするのが一般的です。これにより一部のAZに障害が発生した場合でも、他のAZに配置されたターゲットで引き続きリクエストが処理されます。また、ELB自体もマルチAZ構成で動作するので、高い可用性と冗長性を確保できます。

■ELBのヘルスチェック
ELBはターゲットグループ内の各ターゲットが正常に動作しているかを定期的にヘルスチェックで確認します。ターゲットから正常に応答が返ってくれば、ELBはそのターゲットへのルーティングを継続します。もしターゲットが異常であると判断された場合は、ELBはそのターゲットへのルーティングを停止します。
ELBのヘルスチェックにはターゲットの復旧機能が含まれていないため、稼働するターゲット数を維持するにはAuto Scalingを用いて自動的に復旧する設計が必要です。

【ELBの種類】
ELBにはロードバランシングの方式によって複数の種類があります。
■Application Load Balancer(ALB)
・レイヤー7(アプリケーション層)で負荷分散を行う
・HTTP、HTTPSベースのルーティングをサポート
・ホストベースやパスベース、URLクエリ文字列でのルーティングなど高度なルーティング機能を提供する
○ALBが対応している主なルーティング
・ホストベース
ホストベースのルーティングとは、クライアントがリクエストした接続先URLのFQDNに従ってルーティングできる機能のことです。例えば、クライアントの接続先URLが「http://www1.example.com」の場合はWebサーバー1にアクセスさせて、「http://www2.example.com」の場合はWebサーバー2にアクセスさせることができます。
・パスベース
パスベースのルーティングとは、クライアントがリクエストした接続先URLのパスに従ってルーティングできる機能のことです。例えば、クライアントの接続先URLが「http://www.example.com/web1/」の場合はWebサーバー1にアクセスさせて、「http://www.example.com/web2/」の場合はWebサーバー2にアクセスさせることができます。
・URLクエリ文字列
URLクエリ文字列でのルーティングとは、クライアントがリクエストした接続先URLのクエリ文字列に従ってルーティングできる機能のことです。URLクエリ文字列とは、ブラウザがWebサーバーに送信するデータをURLに表記したものです。URLが「http://www.example.com/web?lang=jp」であれば「lang=jp」がURLクエリ文字列に該当します。
例えば、クライアントの接続先URLが「http://www.example.com/web?lang=jp」の場合は日本語サイトのあるWebサーバーにアクセスさせて、「http://www.example.com/web?lang=en」の場合は英語サイトのあるWebサーバーにアクセスさせることができます。
■Network Load Balancer(NLB)
・レイヤー4(トランスポート層)で負荷分散を行う
・TCP、UDPベースのルーティングをサポート
・数百万パケット/秒に対応できる高いスループットと、低レイテンシー(低遅延)を提供する
・Elasitc IPアドレス(固定のパブリックIPアドレス)の関連付けが可能
■Classic Load Balancer(CLB)
・レイヤー7(アプリケーション層)およびレイヤー4(トランスポート層)で負荷分散を行う
・HTTP、HTTPS、TCPベースのルーティングをサポート
・ALBやNLBより古いサービスでパフォーマンスが劣るので、基本的にはALBやNLBの利用が推奨される
■Gateway Load Balancer(GWLB)
・レイヤー3(ネットワーク層)およびレイヤー4(トランスポート層)で負荷分散を行う
・すべてのIPトラフィックを透過的に処理する
・ファイアウォール、侵入検知・防止システム(IDS/IPS)などのネットワーク仮想アプライアンスをデプロイ、スケーリング、管理できる
[ALB/NLB/CLBの比較表]
サービスの利用者が増えてくると、単一のリソースでは全てのリクエストを処理しきれなくなり、結果としてレスポンスの遅延が起こります。このような場合、リクエストを処理するリソースを複数配置し、それらのリソースにリクエストの処理を分散することでレスポンスの遅延が発生しないようにできます。
このような仕組みを「負荷分散(ロードバランシング)」といいます。
【Elastic Load Balancing(ELB)】
Elastic Load Balancing(ELB)は、AWSが提供する負荷分散サービスです。マネージドサービスであり、ユーザーは負荷分散機能を利用する際にアプリケーションのインストールやバージョンアップなどを考慮する必要がありません。
ELB配下の負荷分散先リソースのことを「ターゲット」といい、一つのELB配下で管理されるターゲットの集合を「ターゲットグループ」といいます。ターゲットにはインスタンス、IPアドレス、Lambda関数を指定できます。ターゲットグループ単位で負荷分散を行い、適切なターゲットにリクエストがルーティングされるようになります。
ターゲットは、可用性を向上させるためにマルチAZ(複数のAZに配置する構成)にするのが一般的です。これにより一部のAZに障害が発生した場合でも、他のAZに配置されたターゲットで引き続きリクエストが処理されます。また、ELB自体もマルチAZ構成で動作するので、高い可用性と冗長性を確保できます。

■ELBのヘルスチェック
ELBはターゲットグループ内の各ターゲットが正常に動作しているかを定期的にヘルスチェックで確認します。ターゲットから正常に応答が返ってくれば、ELBはそのターゲットへのルーティングを継続します。もしターゲットが異常であると判断された場合は、ELBはそのターゲットへのルーティングを停止します。
ELBのヘルスチェックにはターゲットの復旧機能が含まれていないため、稼働するターゲット数を維持するにはAuto Scalingを用いて自動的に復旧する設計が必要です。

【ELBの種類】
ELBにはロードバランシングの方式によって複数の種類があります。
■Application Load Balancer(ALB)
・レイヤー7(アプリケーション層)で負荷分散を行う
・HTTP、HTTPSベースのルーティングをサポート
・ホストベースやパスベース、URLクエリ文字列でのルーティングなど高度なルーティング機能を提供する
○ALBが対応している主なルーティング
・ホストベース
ホストベースのルーティングとは、クライアントがリクエストした接続先URLのFQDNに従ってルーティングできる機能のことです。例えば、クライアントの接続先URLが「http://www1.example.com」の場合はWebサーバー1にアクセスさせて、「http://www2.example.com」の場合はWebサーバー2にアクセスさせることができます。
・パスベース
パスベースのルーティングとは、クライアントがリクエストした接続先URLのパスに従ってルーティングできる機能のことです。例えば、クライアントの接続先URLが「http://www.example.com/web1/」の場合はWebサーバー1にアクセスさせて、「http://www.example.com/web2/」の場合はWebサーバー2にアクセスさせることができます。
・URLクエリ文字列
URLクエリ文字列でのルーティングとは、クライアントがリクエストした接続先URLのクエリ文字列に従ってルーティングできる機能のことです。URLクエリ文字列とは、ブラウザがWebサーバーに送信するデータをURLに表記したものです。URLが「http://www.example.com/web?lang=jp」であれば「lang=jp」がURLクエリ文字列に該当します。
例えば、クライアントの接続先URLが「http://www.example.com/web?lang=jp」の場合は日本語サイトのあるWebサーバーにアクセスさせて、「http://www.example.com/web?lang=en」の場合は英語サイトのあるWebサーバーにアクセスさせることができます。
■Network Load Balancer(NLB)
・レイヤー4(トランスポート層)で負荷分散を行う
・TCP、UDPベースのルーティングをサポート
・数百万パケット/秒に対応できる高いスループットと、低レイテンシー(低遅延)を提供する
・Elasitc IPアドレス(固定のパブリックIPアドレス)の関連付けが可能
■Classic Load Balancer(CLB)
・レイヤー7(アプリケーション層)およびレイヤー4(トランスポート層)で負荷分散を行う
・HTTP、HTTPS、TCPベースのルーティングをサポート
・ALBやNLBより古いサービスでパフォーマンスが劣るので、基本的にはALBやNLBの利用が推奨される
■Gateway Load Balancer(GWLB)
・レイヤー3(ネットワーク層)およびレイヤー4(トランスポート層)で負荷分散を行う
・すべてのIPトラフィックを透過的に処理する
・ファイアウォール、侵入検知・防止システム(IDS/IPS)などのネットワーク仮想アプライアンスをデプロイ、スケーリング、管理できる
[ALB/NLB/CLBの比較表]
脱字?
投稿日 2025/11/03
選択肢の1つ、
39622 複数のリージョンにEC2インスタンスをALBで負荷分散する
↓
39622 複数のリージョンに配置されたEC2インスタンスをALBで負荷分散する
かと思いますが、いかがでしょうか?
スタッフからの返信
この投稿に対して返信しませんか?
s staff_satomi
2025/11/04 10:46
island_13様 ご指摘の点を修正いたしました。 ご報告いただきまして、誠にありがとうございます。