ブログ | NGINX

NGINX を使用した Kubernetes での TCP および UDP トラフィックの負荷分散

NGINX-F5 水平黒タイプ RGB の一部
アミール・ラウダットのサムネイル
アミール・ラウダット
2022年6月7日公開

[編集者– この投稿は、当社の包括的な電子書籍「F5 NGINX による Kubernetes トラフィックの管理」からの抜粋です。 実用ガイド今すぐ無料でダウンロードしてください

NGINX Ingress Controller は、HTTP トラフィックに加えて、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 ポート (リスナー) を指定するために使用されます。 各 NGINX Ingress Controller デプロイメントには、GlobalConfiguration リソースを 1 つだけ含めることができることに注意してください。
  • TransportServerリソースは通常、DevOps チームがアプリケーションの TCP/UDP 負荷分散を構成するために使用されます。 NGINX Ingress Controller は、GlobalConfiguration リソースで管理者によってインスタンス化されたポートのみをリッスンします。 これにより、ポート間の競合が防止され、DevOps チームが管理者が安全であると事前に決定したポートのみをパブリック外部サービスに公開できるようになり、セキュリティがさらに強化されます。

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

GlobalConfiguration および TransportServer リソースの使用例のトポロジ図

gc.yamlの GlobalConfiguration リソースは、syslog サービスに接続するためのポート 514 の UDP リスナーと、MySQL サービスに接続するためのポート 5353 の TCP リスナーの 2 つのリスナーを定義します。

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

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

$ echo “テーブルを表示” | mysql –h <外部 IP アドレス> -P <ポート> -う <ユーザー> –p 生データコンテンツスキーマ パスワードを入力してください: <パスワード>
Tables_in_rawdata_content_schema
著者
投稿

UDP トラフィックの TransportServer リソースも同様に構成されます。完全な例については、GitHub の NGINX Ingress Controller リポジトリの「Basic TCP/UDP Load Balancing」を参照してください。 上級の NGINX ユーザーは、リポジトリのTCP/UDP ロード バランシングのサポートの例に示されているように、 stream-snippets ConfigMap キーを使用してネイティブ NGINX 構成で TransportServer リソースを拡張できます。

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

この投稿は、当社の包括的な電子書籍「NGINX を使用した Kubernetes トラフィックの管理」からの抜粋です。 実用ガイド今すぐ無料でダウンロードしてください

今すぐ30 日間の無料トライアルで NGINX Plus ベースの NGINX Ingress Controller をお試しいただくか、弊社にお問い合わせの上、ユースケースについてご相談ください


「このブログ投稿には、入手できなくなった製品やサポートされなくなった製品が参照されている場合があります。 利用可能な F5 NGINX 製品およびソリューションに関する最新情報については、 NGINX 製品ファミリーをご覧ください。 NGINX は現在 F5 の一部です。 以前の NGINX.com リンクはすべて、F5.com の同様の NGINX コンテンツにリダイレクトされます。"