MEGAZONEブログ
Enhance your app’s security & availability with Elastic Load Balancers
Elastic Load Balancersでアプリのセキュリティと可用性を強化する
Pulisher : Enterprise Managed Service Group ミン・ジホ
Description:ALB、NLB、GLBがどのように構築され、その背後にあるアプリケーションの高可用性とセキュリティ特性の紹介セッション
はじめに
AWSでALB、NLB、GLBがどのように構築されるのか、ロードバランシングされるトラフィックを受信するための拡張特性について
知りたいと思いました。ELBについて最近リリースされる機能及びELB使用アーキテクチャについてアップデートするため、セッションに申し込みました。
セッションの概要紹介
Elastic Load Balancingは、AWSおよびオンプレミスの複数の宛先と仮想アプライアンスに着信トラフィックを自動的に分散する、完全に管理されたAWSサービスのポートフォリオです。 このセッションでは、アプリケーションロードバランサー、ネットワークロードバランサー、ゲートウェイロードバランサーがどのように構築され、その背後にあるアプリケーションの高いセキュリティと可用性を実現するために設計されたスケーラビリティの特徴について詳しく学び、その主な機能について説明します。
新機能をリリースするにあたり、隠れた部分の設計上の考慮事項を適用し、どのように使用できるかについて議論しました。私たちは、コードを通してこれを解決するために努力します。
このセッションの終わりには、可用性とセキュリティについて私たちがどのように考えているかについての良いアイデアが得られます。 また、私たちがそれをどのように構築したかを知ることができます。
使用方法に関するベストプラクティスが含まれています。
機能の可用性、スケーラビリティ、ステータス、運用についても説明します。
Elastic Load Balancerを拡張して、ほぼすべてのサイズのアプリケーションをサポートする方法について説明します。システムの内部動作の詳細を説明し、拡張機能を実装するためのユーザーガイドを提供します。
アプリロードバランサーは、まず既存のインスタンス内の容量を増やし(アップスケール)、その後、より多くのインスタンスを追加(アウトスケール)して拡張します。
トラフィックの変化に素早く反応し、数秒から数分以内に積極的にアップスケールしますが、安定性とスムーズな作業負荷を維持するために慎重にダウンスケールします。
このような多次元的なスケーリングは、最適なパフォーマンスとリソース活用を可能にします。
NLBとゲートウェイロードバランサーは、拡張にHyperplaneを活用します。HyperplaneはElastic Network InterfacesとEC2のSDNを利用します。メリットは、固定IPアドレス、一貫したデータフロー、シームレスなスケーリングです。
NLBはHyperplaneを使用して可用性領域内で独立して拡張されます。NLBは各ゾーンのトラフィックに基づいて透過的に拡張されます。既存接続の中断を最小限に抑えます。新しい接続がスムーズに接続できるようにします。
オーバープロビジョニングとは、少なくとも1つの可用性領域に追加の容量を維持することを意味します。
これは次の2つの目的で使用されます。
・突然のトラフィックの急増に対応するための即時のリソースを提供します。
・障害が発生した場合、他の領域へのスムーズな障害移行を保証します。
具体的には、オーバープロビジョニングには次のような利点があります。
・急激なトラフィックの急増を処理するのに必要な時間を短縮します。
・障害が発生した場合のサービス中断を最小限に抑えます。
オーバープロビジョニングはコストがかかる可能性があるため、ワークロードのニーズを慎重に評価し、適切なレベルを決定することが重要です。
オーバープロビジョニングは、少なくとも1つの可用性領域に追加の容量を確保します。このバッファは、突然のトラフィックの急増に対応するのに役立ちます。数秒から数分以内のスムーズな拡張を容易にします。障害やゾーンの中断が発生した場合のバックアップ容量を提供します。
・ターゲットグループフェイルオープン:ターゲットグループのすべてのインスタンスが利用できない場合でも、トラフィックを許可します。
・DNS障害切り替えしきい値:DNSの応答時間が特定のしきい値を超えると、トラフィックを別のゾーンに切り替えます。
・クロスゾーンロードバランシング:アプリケーションロードバランサーが他のゾーンのインスタンスにトラフィックを分散します。
・異常検知:アプリケーションのパフォーマンスや動作の異常を検知します。
ロードバランサーのすべてのノードは、内部システムによって継続的に監視されます。頻繁な状態チェックにより、故障したノードを特定し、健全なノードと交換することで、最適なパフォーマンスと可用性を確保します。
対象者の健康診断には、大きく分けて2つの側面があります。
・タイミング:状態チェックの頻度と回数
・しきい値:正常/非正常の状態数
・ヘルスチェックの選択は、正常な結果に正常なアプリケーション応答が必要かどうかによって異なります。HTTPヘルスチェックは、TCPヘルスチェックよりも深いレベルの検証を提供します。
具体的には、ステータスチェックは次のことを考慮して設定する必要があります。
・アプリケーションの要件: アプリケーションが正常と見なされるためには、どのような応答が必要か。
・トラフィックの重要性:重要なトラフィックはより頻繁にチェックする必要があります。
・環境: 環境に特定の要件があるかどうか
適切に構成されたヘルスチェックは、アプリケーションの可用性を確保するのに役立ちます。
・ターゲットグループのフェイルオープンしきい値を下げることで、過負荷シナリオからの回復に役立ちます。
・DNSフェイルオーバーを使用すると、異常な宛先がDNSレコードから削除され、トラフィックが別の宛先にルーティングされます。
・クロスゾーンロードバランシングを使用すると、ゾーンに障害が発生した場合、トラフィックは別のゾーンにルーティングされます。
これらの機能を使用すると、アプリケーションの可用性を高め、ユーザーエクスペリエンスを向上させることができます。
・クロスゾーンロードバランシングを無効にすると、ゾーンごとの隔離を提供することができます。
・各ゾーンに十分なリソースがあり、トラフィックを均等に分散して拡張する必要があります。
この機能を使用すると、アプリケーションの可用性を向上させ、単一ゾーンの中断による影響を軽減することができます。
・ゾーンシフトは、Route 53アプリケーションリカバリコントローラーと一緒に使用して、健全でないゾーンからトラフィックを削除します。
・高速ヘルスチェックを使用して、制御された高可用性の方法でトラフィックを除去します。
・テストまたは他のアラームによってトリガーすることができます。
この機能を使用すると、アプリケーションの可用性を向上させ、問題のあるゾーンによる影響を減らすことができます。
ネットワークロードバランサーの機能の一つは、クライアントを同じゾーンにルーティングすることです。100%接続または85%接続のどちらかを選択できます。85%接続は、潜在的なフェイルオーバーの柔軟性を提供します。100%接続は、厳格なゾーン分離とヘルスチェックに推奨されます。
セッションを終えて
ALB、NLB、GWLBがどのように拡張されるかを知ることができました。 特に、ターゲットグループ障害開放、DNS障害切り替えしきい値、クロスゾーン負荷分散、異常検知機能をうまく活用すれば、ELBの可用性を高めることができることを知ったのは大きな収穫だったと思います。