Kubernetes でホストされるクライアント アプリケーション

複数のポッドからのクライアント接続

Redis サーバーに複数のポッドを接続している場合は、ポッドからの新しい接続が段階的に作成されていることを確認します。 複数のポッドが短時間で時間差処理なく開始されると、作成されるクライアント接続数が急激に増加します。 接続数が多いと、Redis サーバーの負荷が高くなり、タイムアウトが発生する可能性があります。

同時に複数のポッドをシャットダウンする場合は、同じシナリオを避けてください。 時間差のシャットダウができないと、CPU 負荷につながる接続数が急に低下する可能性があります。

十分なポッド リソース

クライアント アプリケーションを実行しているポッドに十分な CPU リソースとメモリ リソースが割り当てられていることを確認してください。 クライアント アプリケーションがリソースの限界に近い状態で動作していると、タイムアウトが発生する可能性があります。

十分なノード リソース

クライアント アプリケーションを実行しているポッドは、同じノードで実行されている他のポッドの影響を受け、Redis 接続や IO 操作を抑えます。 そのため、クライアント アプリケーショのポッドが動作するノードに十分なメモリ、CPU、ネットワーク帯域幅が確保されている必要があります。 これらのリソースのいずれかが不足すると、接続の問題が発生する可能性があります。

Linux でホストされるクライアント アプリケーションと TCP 設定

Azure Cache for Redis クライアント アプリケーションが Linux ベースのコンテナーで実行されている場合は、一部の TCP 設定を更新することをお勧めします。 これらの設定の詳細については、「Linux でホストされるクライアント アプリケーションの TCP 設定」をご覧ください。

Istio/Envoy との潜在的な接続の競合

現在、Azure Cache for Redis では、クラスター化されたキャッシュにポート 15xxx を使用して、クラスター ノードをクライアント アプリケーションに公開しています。 こちらで説明されているとおり、同じポートが、Envoy と呼ばれる Istio.io サイドカー プロキシでも使用されるため、特にポート 15001 および 15006 での接続の作成を妨げる可能性があります。

Azure Cache for Redis クラスターで Istio を使用する場合は、 istio 注釈で潜在的な競合ポートを除外することを検討してください。

annotations:
  traffic.sidecar.istio.io/excludeOutboundPorts: "15000,15001,15004,15006,15008,15009,15020"

接続の干渉を回避するには、次の方法をお勧めします。

  • 非クラスター化キャッシュ、または Enterprise レベルのキャッシュを代わりに使用することを検討する
  • Azure Cache for Redis クライアント コードを実行しているポッドに Istio サイドカーを構成することを避ける