クラウドネイティブシナリオの要件を満たすために、Application Load Balancer (ALB) はクラウドネイティブサービスと深く統合され、クラウドネイティブIngressの一種であるALB Ingressをサポートしています。 ALB Ingressは、レイヤー7のContainer Service for Kubernetes (ACK) またはContainer Service for Kubernetes Serverless (ACK Serverless) クラスターのサービスへの外部トラフィックのバランスを取るために使用できます。 このトピックでは、ALB Ingressの概念、利点、使用シナリオ、およびALB Ingressの使用方法について説明します。
基本概念
ALB Ingressは、レイヤー7でACKまたはACKサーバーレスクラスターへの外部トラフィックのバランスを取るために使用できます。 KubernetesクラスターにデプロイされたALB Ingressコントローラーは、APIサーバー上のAlbConfigs、Ingress、およびServicesの変更を監視し、既存のAlbConfigsを動的に更新できます。 ALB Ingressコントローラーの詳細については、「ALB Ingressコントローラー」をご参照ください。
ALB Ingressでの作業
ALBによって強化されたALB Ingressは、ネットワークトラフィックに対してより強力な管理機能を提供します。 ALB IngressはNGINX Ingressと互換性があります。 これにより、ALB Ingressは複雑なルーティングを実行し、証明書を自動的に検出し、HTTP、HTTPS、およびQUICをサポートできます。 ALB Ingressは、高いスケーラビリティとレイヤ7での大規模なトラフィック転送を必要とするクラウドネイティブシナリオに最適です。
手順
ALB Ingressは完全に管理されています。 ALBコンソールでALB Ingressを設定しないでください。 そうでない場合、Ingressエラーが発生する可能性があります。 ALBクォータの詳細については、「制限」をご参照ください。
ALB Ingressは、クラウドネイティブサービスと深く統合されています。 ALB Ingressは幅広い機能をサポートしており、すぐに使用できます。 次の手順は、ACKまたはACKサーバーレスクラスターでALB Ingressを使用する方法を示しています。
API 操作 | 説明 |
ALB Ingressコントローラのインストール | ALB Ingressコントローラーは、クラスターの作成時またはコンポーネントページでインストールできます。 詳細については、以下のトピックをご参照ください。
説明
|
(オプション) ACK専用クラスターへのアクセス許可の付与 | ACK専用クラスターのALB Ingressを使用してサービスにアクセスする場合は、サービスをデプロイする前に、ALB Ingressコントローラーに必要な権限を付与する必要があります。 詳細については、「ACK専用クラスターにALB Ingressコントローラーへのアクセスを許可する」をご参照ください。 |
サービスやデプロイメントなどのバックエンドサービスのデプロイ | ALB Ingressがネットワークトラフィックを転送するサービスやデプロイなどのバックエンドサービスをKubernetesにデプロイできます。 詳細については、以下のトピックをご参照ください。
|
(オプション) AlbConfigとIngressClassの作成 | 重要 ALB Ingressコントローラーを作成するときに、[ゲートウェイソース] を [新規] または [既存] に設定すると、コントローラーは自動的にalbという名前のAlbConfigとalbという名前のIngressClassを作成します。 この場合、この手順をスキップできます。 ALB Ingressコントローラーに権限を付与した後、AlbConfigとIngressClassを作成し、それらを相互に関連付けることができます。 AlbConfigはALBインスタンス専用で、ALBインスタンスの設定を定義します。 IngressClassは、IngressとAlbConfigとの間の関連付けを定義する。詳細については、以下のトピックを参照してください。
|
Ingress の作成 | 上記の操作を完了した後、Ingressを作成し、転送ルールに基づいてリクエストをバックエンドサービスに転送するようにIngressを設定し、IngressをIngressClassおよびAlbConifgに関連付けることができます。 これにより、クライアントはALB Ingressを使用してKubernetesのリソースにアクセスできます。 詳細については、以下のトピックをご参照ください。
|
転送ルールに加えて、ALB Ingressにアノテーションを追加して、セッション永続性やカナリアリリースなどの高度な機能を設定できます。 ALB Ingressのその他の機能の詳細については、以下のトピックを参照してください。
ACKクラスター: 高度なALB Ingress設定
ACKサーバーレスクラスター: 高度なALB Ingress設定
ALB Ingressの仕組み
ALB IngressはKubernetes機能と互換性があり、CustomResourceDefinitions (CRD) オブジェクトであるAlbConfigオブジェクトとアノテーションを使用して詳細設定を構成できます。
AlbConfig CRD: AlbConfig CRDは、ALBインスタンスとリスナーを設定するために使用されます。 各AlbConfigオブジェクトは1つのALBインスタンスに対応します。
注釈: ALB Ingressに注釈を追加して転送ルールを設定できます。 このようにして、HTTPおよびHTTPSリクエストを転送ルールに基づいてサービスに転送できます。
サービスは、複製されたポッドのセットで実行されるバックエンドアプリケーションの抽象化です。
メリット
ALB IngressはAlibaba Cloudによって完全に管理され、超高処理能力を提供します。 それに比べて、NGINX Ingressは高度にカスタマイズ可能ですが、手動管理が必要です。 NGINX IngressとALB Ingressは、異なるサービススコープ、アーキテクチャ、処理およびセキュリティ機能を提供します。 NGINX IngressとALB Ingressの違いの詳細については、「NGINX IngressとALB Ingressの比較」をご参照ください。
ALB Ingressは、次のシナリオでNGINX Ingressよりも優れています。
永続的な接続
永続的な接続は、モノのインターネット (IoT) 、インターネットファイナンス、オンラインゲームなど、頻繁なやり取りが必要なシナリオに最適です。 設定が変更されると、NGINX Ingressはプロセスをリロードし、永続接続を一時的に閉じる必要があります。 これは、サービスの中断を引き起こし得る。 この問題を防ぐために、ALB Ingressはローリングアップデートを使用して永続的な接続の安定性を確保します。
高い並行性
IoTサービスは、端末デバイスから開始される多数の同時接続を維持することが期待される。 ALB IngressはAlibaba CloudのCloud Network Managementプラットフォームで実行され、セッションを効率的に管理できます。 各ALBインスタンスは数千万の接続をサポートしています。 NGINX Ingressesは、手動のO&Mを必要とする限られた数のセッションのみをサポートします。NGINX Ingressのスケールアウトはクラスター内のリソースを消費し、手動操作が必要です。 スケールアウト費用は比較的高い。
高いQPS
インターネットサービスは、プロモーション活動や速報イベントなど、ほとんどのシナリオで高いQPSに耐えることが期待されています。 ALB Ingressは自動スケーリングをサポートしています。 QPS値が増加すると、仮想IPアドレスが自動的に追加されます。 各ALBインスタンスは最大100万個のQPSをサポートするため、ALB IngressはNGINX Ingressよりも低いネットワーク遅延をサポートします。 さらに、NGINX Ingressはクラスター内のリソースに応答し、高QPSシナリオでパフォーマンスのボトルネックが発生する可能性があります。
大きなワークロードの変動
ALBは、eコマースやゲームサービスなど、ワークロードの変動が大きいサービスに最適な、より費用対効果の高い価格設定モデルを提供します。 ALBは従量課金方法をサポートしています。 オフピーク時に消費されるロードバランサー容量単位 (LCU) は少なくなります。 さらに、ALBは自動スケーリングをサポートしています。 トラフィックの流れをリアルタイムで確認する必要はありません。 ただし、NGINXはオフピーク時にアイドルリソースを自動的に解放しません。 ワークロードの変動に対処するには、クラスター内の一定量のリソースを手動で予約する必要があります。
アクティブゾーン冗長性とアクティブな地理冗長性
ソーシャルネットワーキングやストリーミングメディアサービスなど、高いビジネス継続性と信頼性を必要とする業界およびアプリケーションシナリオでは、Distributed Cloud Container Platform For Kubernetes (ACK One) を使用してALBマルチクラスタゲートウェイを作成し、ALB Ingressを使用してマルチクラスタトラフィックを管理できます。 これらにより、アクティブなゾーン冗長性とアクティブな地理冗長性を実装できます。
シナリオ
ALB Ingressはオープンで、プログラム可能で、完全に管理されています。 ALB Ingressは超高性能を提供し、自動スケーリングをサポートします。
複数レベルでの負荷分散とスケジューリングをサポートし、1つのインスタンスあたり最大100万個のQPSをサポートできます。
ソフトウェアの利点とハードウェアの利点を組み合わせることで、超堅牢な転送機能をサポートします。
自動スケーリングをサポートし、O&Mを簡素化し、サービスの稼働時間の99.995% を保証します。
複雑なワークロードをルーティングするカスタマイズ可能なシステムを提供します。
ALB Ingressは複数のシナリオに適用できます。 次の図は、一般的なシナリオを示しています。