サーバーに多くのアクセスが集中すると負荷がかかり、サイトの表示に時間がかかることがあります。ELBはそれを防ぎ、安定したインターネットサービスを利用者に提供するためのものです。
AWSはAmazonによって提供されているクラウドコンピューティングサービスで、ここで構築されたシステムの負荷分散のためにAWS ELBがあります。この記事ではAWS ELBの機能とその可用性について、詳しく解説します。
ロードバランサーとは
ロードバランサーとは、サーバーにかかる負荷を分散する仕組みのことをいいます。
何かしらの理由でサイトにアクセスが集中すると、サーバーがリクエストを処理するのに時間がかかります。これがサーバーに負荷がかかっている状態であり、サイトの表示が遅くなったり、表示自体がされなくなってしまったりすることもあります。このような状況を起こさないよう、サーバーの負荷(ロード)を分散(バランシング)する仕組みがロードバランサーなのです。
アクセス集中に限らず、サーバーが故障した場合などにも、利用者にwebサービスを安定して提供することができないことが考えられます。そんなときは、故障サーバー以外へリクエストを渡すことで、リクエストへの対応ができなくなることを防ぐことができるため、ロードバランサーは可用性の向上にも貢献します。
AWS ELBとは
ELB(Elastic Load Balancing)とは、AWSが提供しているロードバランサーであり、インスタンスに集中する負荷、つまりアクセス(トラフィック)を複数のインスタンスやネットワークに振り分け、負荷を分散させる仕組みを提供します。
ELBはサーバーへの負荷を分散させるほかにヘルスチェック機能も備えているため、アプリケーションへの負荷やCPUの稼働状況をリアルタイムでモニタリングしてくれるのです。もし、モニタリング中にインスタンスに異常があることがわかった場合には、異常のあるインスタンスへのトラフィック送信を中止し、他の正常なインスタンスへとそのトラフィックを送信します。つまり、ELBはインスタンスへの負荷を自動的に分散してくれるため、高負荷によるインスタンスのダウンも防ぐことができるのです。ELBの導入によって、障害にもセキュリティ面でも強いサービスを提供し続けることができます。
ちなみに、ELBは2009年にリリースされたもので、AWSのロードバランサーといえばAWS ELBを指していました。その後、システムのニーズに合わせた形に開発されたロードバランサーがさらにリリースされていきました。
ELBの役割と利点
ELBの主な役割は、以下の通りです。
負荷の分散
ELBはトラフィックを複数のリソースに均等に分散し、システム全体の負荷を分散します。
可用性の向上
ELBはリージョン内の複数の可用性ゾーンにまたがって構成されるため、単一の可用性ゾーンで障害が発生した場合でも、他の可用性ゾーンへのトラフィックのルーティングが可能です。
柔軟性の向上
ELBは動的なスケーリングをサポートし、トラフィックの増減に応じて自動的にリソースを追加または削除します。
セキュリティの強化
ELBはSSL/TLS終端を行い、セキュリティプロトコルを使用してクライアントとの通信を暗号化します。ELBを使用することで、システムのパフォーマンスや可用性が向上し、運用コストが削減されます。
ELBの種類
AWS ELBには以下の4つのタイプがあります:
Application Load Balancer (ALB)
Layer 7(アプリケーション層)で動作し、HTTPおよびHTTPSトラフィックをルーティングするための高度な機能を提供します。さまざまな条件に基づいたリクエストのルーティングやマイクロサービスアーキテクチャのサポートなどが可能です。
Network Load Balancer (NLB)
Layer 4(トランスポート層)で動作し、高性能な負荷分散を提供します。SSL/TLSオフロードや静的IPアドレスのサポートなどの機能を提供します。
Gateway Load Balancer(GWLB)
AWS Marketplace において直接購入できる、サードパーティー製の仮想アプライアンスを簡単にデプロイできるロードバランサーです。Layer3(ネットワーク層)で動作していますが、Layer4の負荷分散機能も備えています。
Classic Load Balancer
HTTP、HTTPS、TCPプロトコルに対応したレガシーなロードバランサーです。利用はできますが、新たな機能追加はなく、一部機能もサポートされないため特別な理由がない場合は、ALB、NLBの利用、又は移行をご検討いただくのがよいでしょう。
それぞれ異なるユースケースに対応しており、適切なタイプを選択することが重要です。以下に、Classic Load Balancerを除く3つのタイプについて、違いを簡単に表にまとめます。
ALB | NLB | GWLB | |
対応レイヤー | レイヤー7 | レイヤー4 | レイヤー3 Gateway +レイヤー4 Load Balancing |
ターゲットグループ | IP、インスタンス、Lambda | IP、インスタンス、Application Load Balance | IP、インスタンス |
プロトコルリスナー | HTTP、HTTPS、gRPC | TCP、UDP、TLS | IP |
PrivateLink のサポート | TCP、TLS | GWLBエンドポイント |
※ターゲットグループ:ロードバランサーがトラフィックをルーティングするバックエンドのリソースの集合。
※プロトコルリスナー:ロードバランサーがリクエストを受信するポートとプロトコルの組み合わせ。
詳細はAWSの「Elastic Load Balancing の特徴」をご確認ください。
ELBの特徴
ELBの主な特徴は以下の通りです。
自動的な負荷分散
ELBはトラフィックを自動的に複数のバックエンドリソースに分散するため、システムの負荷を効果的に分散します。これにより、単一のリソースに過度な負荷がかかることを防ぎ、システム全体の性能を最適化します。
スケーラビリティと自動スケーリング
ELBはダイナミックなスケーリングをサポートし、トラフィックの増減に応じて自動的にリソースを追加または削除します。これにより、システムのスケーラビリティが向上し、予期せぬトラフィックの増加にも柔軟に対応することが可能です。
セキュリティとSSL/TLS
ELBはSSL/TLS終端を行い、クライアントとの通信を暗号化します。また、SSL証明書の管理やセキュリティポリシーの設定を簡単に行うことができます。これにより、セキュアな通信を確保し、データの機密性と完全性を保護します。
可用性と耐久性
ELBは複数の可用性ゾーンにまたがって構成されるため、単一の可用性ゾーンで障害が発生した場合でも、他の可用性ゾーンへのトラフィックのルーティングが可能です。これにより、システムの可用性と耐久性が向上します。
ELBはこれらの特徴を組み合わせ、クラウドネイティブなアプリケーションの要件に適した負荷分散ソリューションを提供します。ELBを活用することで、アプリケーションのパフォーマンスを向上させ、ユーザーエクスペリエンスを向上させることができます。
AWS ELBのコスト
AWSのサービスは、ELBに限らず使用した分に料金がかかる従量課金制となっています。その他の初期費用や月額料金といった固定料金はありません。おおよそのコストが知りたければ、「AWS Pricing Calculator」や「ざっくりAWS」などのツールを使うことで計算することができます。
コストをなるべく抑えるコツは、絶対に必要なサービスだけを厳選して、必要な時間だけ利用することです。例えば、昼間は利用しないシステムであれば、夜間はインスタンスを停止することでコスト削減できます。また、運用状況を把握できるツールがあるので、どんな時間帯にアクセスが集中しやすいかなどを分析し、インスタンスの使い分けなどの契約内容を見直すことでもコスト削減できる可能性があるでしょう。
AWSのELBを導入して、システムの可用性を高めよう
AWSが提供するELBは、柔軟性や可用性の高さが特徴のロードバランサーです。ELBは幅広いケースに対応可能なので、ロードバランサーを選択する際には一考の価値があるでしょう。ただし、可用性をより高めるという観点では、サービスの性格や状況に合った方法を選択するのが最大のポイントです。
ロードバランサーが適用できない構成や、サービス/ハードウェアとの相性等、様々な要因で可用性を十分に担保できない場合は、ソフトウェア型のサービスを利用するのも重要です。
サイオステクノロジーが提供するHAクラスターソフトウェア 「LifeKeeper(ライフキーパー)」もその一つとなりますので、AWS上での可用性向上が必要なシステムには是非ご検討ください。
EC2にインストールしたソフトウェアにおける、可用性向上の具体策をご紹介しておりますので、”詳細を見る”を押して、AWS上での高可用性ソリューションをご確認ください。