ELBの可用性まとめ
ELB(Elastic Load Balancing)の可用性
ELBの概要
はじめに
- ロードバランサーは負荷分散装置のことであり、クライアント/サーバシステムにおいてクライアントとサーバの間に設置されます。通信アプリケーションの(TCP/UDP)ポート番号をもとに2台以上のサーバが分散処理を行うために使用するWebシステムの要と言えるプロダクトです。オンプレミス環境であればF5社のBIG-IPが有名ですね。購入した場合は高価なアプライアンスとなりますが、AWSでは手軽に利用することが可能です。
- Elastic Load Balancingユーザーガイドには、ロードバランサーの動作について下記の説明があります。Webサーバーの可用性向上に寄与していることが分かると思います。
- 今回は、ELBの仕組みとELBが提供する可用性について、フォーカスしたいと思います。
ロードバランサーは、クライアントからの受信トラフィックを受け入れ、リクエストを 1 つ以上のアベイラビリティーゾーンにある登録済みのターゲット (EC2 インスタンスなど) にルーティングします。また、ロードバランサーは登録されているターゲットの状態を監視して、トラフィックが正常なターゲットにのみルーティングされるようにします。ロードバランサーは、不具合のあるターゲットを検出すると、そのターゲットへのトラフィックのルーティングを停止し、ターゲットが正常な状態に戻ったことを検出するとターゲットへのトラフィックのルーティングを再開します。
ELBの特長
- 以下に、ELBの特長をまとめます。
- クライアントからのリクエストに対し、複数のEC2インスタンス、ECSコンテナ、Lambdaに負荷分散してルーティングします。
- 複数のAZ(アベイラビリティゾーン)にあるEC2インスタンス、ECSコンテナの中から正常なターゲットにのみ振り分けます。
- ELB自体も負荷に応じてキャパシティを自動増減します。
- 従量課金で利用可能です。(料金はこちら参照)
- Route 53など他サービスと連携して、サービスを提供します。
ELB構成の注意事項
- 以下に、ELBを作成する場合の構成の注意事項を記載します。
- ELBの作成時にサブネットを割り当てます。ここでターゲットが存在するAZごとに、サブネットが必要となります。
- サブネットのCIDRはネットマスク 27bit以上のネットワークアドレスが必要です。また、8個以上の未使用なIPアドレスが必要となります。以下ELBのドキュメントにも記載あり。
- ELBは負荷に応じてスケールしますが、スケール時にIPアドレスが変化するため、ELBのアクセスはIPアドレスではなく、DNS名でアクセスする必要があります。
ロードバランサーを作成するには、2 つ以上のアベイラビリティーゾーンからパブリックサブネットを 1 つ指定する必要があります。アベイラビリティーゾーンごとに 1 つだけパブリックサブネットを指定できます。 ロードバランサーが正しくスケーリングできるように、ロードバランサー毎に各サブネットの CIDR ブロックを、最低でも /27 ビットマスク (例: 10.0.0.0/27) にし、少なくとも 8 個の空き IP アドレスを用意してください。ロードバランサーはこれらの IP アドレスを使用して、ターゲットとの接続を確立します。
ELBの可用性
ELBは複数AZに負荷分散
- 下図を元に、ELBの負荷分散を説明します。ELBは2段階で負荷分散を行います。
- 1つ目は、DNS名からのラウンドロビンで各AZ内に配置されたELBにリクエストを分散します。
- 2つ目は、各ELBからのリクエストを負荷が均等になるようにバックエンドのEC2に分散します。
ELBのSLA
- ELBのSLAは99.99%です。(2019年9月現在)
- このSLAは、ELBが単一のプロダクトで実現しているわけではなく、冗長化され、自動でスケーラブル可能なマネージドサービスであるからこそ、実現されます。
- ELB は先にご紹介した 2つのAZだけでなく、3つのAZを跨いだ構成とすることも可能です。但し、リージョンを跨ぐことはできません。
ELBの暖気
- ELBはマネージドサービスと言えど、コンピューティングの上に動作するサービスであり、スケールアウトに多少の時間を要します。
- クライアントからスパイク的なアクセスの増加が予測される場合は、ELBの暖気申請をして、あらかじめスケールアウトさせることが可能です。但し、ELBの暖気申請は、Bussinessプラン以上の契約が必要となります。