2.6. AWS での Ingress クラスタートラフィックの設定
OpenShift Container Platform は、クラスター内で実行されるサービスを使用してクラスター外からの通信を可能にする方法を提供します。この方法は、Amazon Web Services (AWS) のロードバランサー、具体的には Network Load Balancer (NLB) または Classic Load Balancer (CLB) を使用します。どちらのタイプのロードバランサーもクライアントの IP アドレスをノードに転送できますが、CLB はプロキシープロトコルのサポートを必要とし、OpenShift Container Platform はこれを自動的に有効にします。
NLB を使用するように Ingress Controller を設定するには、次の 2 つの方法があります。
-
現在 CLB を使用している Ingress Controller を強制的に置き換える。これにより
IngressControllerオブジェクトが削除され、新しい DNS レコードが伝播し、NLB がプロビジョニングされている間、サービスが停止します。 -
CLB を使用している既存の Ingress コントローラーを編集して、NLB を使用するように変更します。これにより、
IngressControllerオブジェクトを削除して再作成することなく、ロードバランサーが変更されます。
どちらの方法も、NLB から CLB への切り替えに使用できます。
これらのロードバランサーは、新規または既存の AWS クラスターで設定できます。
2.6.1. AWS での Classic Load Balancer タイムアウトの設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform で長時間実行されるプロセスにおける接続切断を防ぐには、特定のルートまたは Ingress コントローラーに対してカスタムタイムアウト期間を設定します。
安定したネットワークトラフィックを維持するために、これらの設定が Amazon Web Services Classic Load Balancer (CLB) のデフォルトのタイムアウト値である 60 秒を考慮していることを確認してください。
CLB のタイムアウト期間がルートタイムアウトまたは Ingress Controller タイムアウトよりも短い場合、ロードバランサーは接続を途中で終了する可能性があります。ルートと CLB の両方のタイムアウト期間を増やすことで、この問題を防ぐことができます。
2.6.1.1. ルートのタイムアウトの設定 リンクのコピーリンクがクリップボードにコピーされました!
Service Level Availability (SLA) で必要とされる、低タイムアウトが必要なサービスや、バックエンドでの処理速度が遅いケースで高タイムアウトが必要なサービスがある場合は、既存のルートに対してデフォルトのタイムアウトを設定することができます。
OpenShift Container Platform クラスターの前にユーザー管理の外部ロードバランサーを設定した場合は、ユーザー管理の外部ロードバランサーのタイムアウト値がルートのタイムアウト値よりも高いことを確認してください。この設定により、クラスターが使用するネットワーク上でのネットワーク輻輳の問題を防ぐことができます。
前提条件
- 稼働中のクラスターに Ingress コントローラーをデプロイしました。
手順
oc annotateコマンドを使用して、ルートにタイムアウトを追加します。$ oc annotate route <route_name> \ --overwrite haproxy.router.openshift.io/timeout=<timeout><time_unit>< タイムアウト >: サポートされている時間単位は、マイクロ秒 (us)、ミリ秒 (ms)、秒 (s)、分 (m)、時間 (h)、または日 (d) です。以下の例では、2 秒のタイムアウトを
myrouteという名前のルートに設定します。$ oc annotate route myroute --overwrite haproxy.router.openshift.io/timeout=2s
2.6.1.2. Classic Load Balancer タイムアウトの設定 リンクのコピーリンクがクリップボードにコピーされました!
Classic Load Balancer (CLB) のデフォルトのタイムアウトを設定して、アイドル接続を延長できます。
前提条件
- 実行中のクラスターにデプロイ済みの Ingress Controller がある。
手順
以下のコマンドを実行して、デフォルトの
イングレスコントローラーの Amazon Web Services 接続アイドルタイムアウトを 5 分に設定します。$ oc -n openshift-ingress-operator patch ingresscontroller/default \ --type=merge --patch='{"spec":{"endpointPublishingStrategy": \ {"type":"LoadBalancerService", "loadBalancer": \ {"scope":"External", "providerParameters":{"type":"AWS", "aws": \ {"type":"Classic", "classicLoadBalancer": \ {"connectionIdleTimeout":"5m"}}}}}}}'オプション: 次のコマンドを実行して、タイムアウトのデフォルト値を復元します。
$ oc -n openshift-ingress-operator patch ingresscontroller/default \ --type=merge --patch='{"spec":{"endpointPublishingStrategy": \ {"loadBalancer":{"providerParameters":{"aws":{"classicLoadBalancer": \ {"connectionIdleTimeout":null}}}}}}}'注記現在のスコープがすでに設定されている場合を除き、接続タイムアウト値を変更するには
scopeフィールドを指定する必要があります。デフォルトのタイムアウト値に戻す場合は、scopeフィールドを設定する際に再度設定する必要はありません。