NGINX.COM
Web Server Load Balancing with NGINX Plus


[この投稿は、eBook「Managing Kubernetes Traffic with F5 NGINX: A Practical Guide」からの抜粋です。今すぐ無料でダウンロードしてください。]

HTTPトラフィックに加え、NGINX Ingress ControllerはTCPとUDPのトラフィックをロードバランシングするため、下記に含まれるプロトコルに基づくさまざまなアプリやユーティリティのトラフィック管理に使用することができます。

  • MySQL、LDAP、MQTT – 多くの一般的なアプリケーションで利用されているTCPベースのアプリケーション
  • DNS、syslog、RADIUS – エッジデバイスや非トランザクションアプリケーションで使用されるUDPベースのユーティリティ

NGINX Ingress ControllerによるTCPおよびUDPのロードバランシングは、以下のような状況でKubernetesアプリケーションにネットワークトラフィックを分散させるのにも効果的なソリューションです。

  • エンドツーエンド暗号化(EE2E)を使用し、NGINX Ingress Controllerではなく、アプリケーションに暗号化と復号化を処理させる場合。
  • TCPまたはUDPをベースとするアプリケーションで、高いパフォーマンスのロードバランシングが必要な場合。
  • 既存のネットワーク(TCP/UDP)ロードバランサーをKubernetes環境に移行する際に、変更点を最小限に抑えたい場合。

NGINX Ingress Controllerには、TCP/UDPのロードバランシングをサポートする2つのNGINX Ingressリソースが付属しています。

  • GlobalConfiguration リソースは通常、クラスタ管理者が、DevOpsチームが使用できるTCP/UDPポート(listeners)を指定するために使用されます。各NGINX Ingress Controllerのデプロイメントには、1つのGlobalConfigurationリソースしかないことに注意してください。
  • TransportServer リソースは通常、DevOpsチームがアプリケーションのTCP/UDPロードバランシングを構成するために使用されます。NGINX Ingress Controllerは、GlobalConfigurationリソースで管理者がインスタンス化したポートのみをリッスンします。これにより、ポート間の競合を防ぎ、管理者が安全であると事前に判断したポートのみをDevOpsチームが公共の外部サービスに公開することを保証し、セキュリティのレイヤーを追加します。

次の図は、GlobalConfiguration および TransportServer リソースの使用例の例です。gc.yamlでは、クラスタ管理者がGlobalConfigurationリソースでTCPおよびUDPリスナーを定義しています。ts.yamlでは、DevOpsエンジニアがTransportServerリソースでTCPリスナーを参照し、MySQL展開にトラフィックをルーティングしています。

Topology diagram of use case for GlobalConfiguration and TransportServer resources

gc.yaml definesのGlobalConfigurationリソースは、2つのリスナーを定義しています。ポート514のUDPリスナーはsyslogサービスへの接続用、ポート5353のTCPリスナーはMySQLサービスへの接続用です。

ts.yamlのTransportServerリソースの6~8行目は、gc.yamlで定義されているTCPリスナーを名前(mysql-tcp)で参照し、9~14行目はTCPトラフィックをmysql-db upstreamに送るルーティングルールを定義しています。

この例では、DevOpsエンジニアがMySQLクライアントを使用して、MySQLデプロイメント内のrawdata_content_schemaデータベースのテーブルのリストを出力して確認し、設定が機能していることを検証しています。

$ echo “SHOW TABLES” | mysql –h <external_IP_address> -P <port> -u <user> –p rawdata_content_schema
Enter Password: <password>
Tables_in_rawdata_content_schema
authors
posts

UDPトラフィック用のTransportServerリソースも同様に構成されます。完全な例については、GitHubのNGINX Ingress ControllerリポジトリのBasic TCP/UDP Load Balancingをご覧ください。NGINXに詳しい ユーザーであれば、リポジトリの Support for TCP/UDP Load Balancing の例で示されているように、stream-snippets ConfigMap キーを使用してネイティブ NGINX 設定で TransportServer リソースを拡張することができます。

TransportServerリソースで設定可能な機能の詳細については、NGINX Ingress Controllerのドキュメントのドキュメントを参照してください。

この投稿は、当社のeBook「Managing Kubernetes Traffic with F5 NGINX: A Practical Guide」からの抜粋です。今すぐ無料でダウンロードできます。

NGINX PlusをベースにしたNGINX Ingress Controllerを30日間の無料トライアルで今すぐお試しいただくか、お客様の使用例について弊社までお問い合わせください。

Hero image
Managing Kubernetes Traffic with F5 NGINX: A Practical Guide

Learn how to manage Kubernetes traffic with F5 NGINX Ingress Controller and F5 NGINX Service Mesh and solve the complex challenges of running Kubernetes in production.



著者について

Amir Rawdat

Solutions Engineer

Amir Rawdat is a technical marketing engineer at NGINX, where he specializes in content creation of various technical topics. He has a strong background in computer networking, computer programming, troubleshooting, and content creation. Previously, Amir was a customer application engineer at Nokia.

About F5 NGINX

F5 NGINXについて
F5, Inc.は、人気のオープンソースプロジェクト「NGINX」を支援しています。NGINXはモダンアプリケーションを開発・構築するためのテクノロジースイートを提供しています。NGINXとF5製品との併用で、コードからユーザーまでの広範なアプリケーション領域をサポートし、マルチクラウドアプリケーションサービスとしてNetOpsとDevOps間の課題を解決します。

詳しくはnginx.co.jpをご覧ください。Twitterで@nginxをフォローして会話に参加することもできます。