準備状況プローブまたはライブネスプローブの設定

Flex Gateway では、信頼性と効率を確保するための 2 つの方法がサポートされます。

  • 準備状況プローブでは、ゲートウェイインスタンスが正しく設定され、受信トラフィックへの準備が整っているかどうかをテストします。これにより、部分的に設定された API によってエンドユーザーが影響を受けないようにします。詳細は、​準備状況プローブの設定​を参照してください。

  • ライブネスプローブでは、ゲートウェイインスタンスが稼働可能かどうかをテストします。これにより、クラッシュや他の障害によるダウンタイムを最小限に抑えます。詳細は、​ライブネスプローブの設定​を参照してください。

準備状況プローブの設定

Flex Gateway インスタンスで受信トラフィックへの準備が整っているかどうかをテストするには、次の CLI コマンドを使用します。

flexctl probe --check=readiness
ssh

Flex Gateway インスタンスで受信トラフィックを受信する準備が整っている場合、このコマンドは終了コード ​0​ を返します。それ以外の場合、このコマンドは終了コード ​1​ を返します。

Flex Gateway が開始されると、その準備状況は ​false​ になります。この状況は、次の条件が満たされると ​true​ に変わります。

  • API インスタンスがデプロイされた (1 つ以上の API が設定されている必要があります)

  • ポリシーが初期化された

設定の変更を実行中のゲートウェイに適用しても、準備状況に影響はありません。これにより、インスタンスは、設定の更新中であってもトラフィックを継続的に受信することができます。

特定の環境での準備状況プローブの設定についての詳細は、次を参照してください。

デフォルトでは、Kubernetes で実行されている Flex Gateway には、Helm チャートで設定された準備状況プローブが含まれています。準備状況プローブは ​flexctl probe --check=readiness --allow-api-errors --allow-envoy-errors --allow-policy-errors​ を 10 秒間隔で自動的に実行します。

準備状況プローブには、次のデフォルト値があります。

readinessProbe:
 exec:
   command:
   - flexctl
   - probe
   - --check=readiness
   - --allow-api-errors
   - --allow-envoy-errors
   - --allow-policy-errors
 initialDelaySeconds: 10
 periodSeconds: 10
 failureThreshold: 2
 timeoutSeconds: 5
helm

パラメーター

説明

exec.command

準備状況プローブコマンド

--allow-api-errors

API インスタンスでのエラーを許可するフラグ

--allow-envoy-errors

Envoy 設定エラーを許可するフラグ

--allow-policy-errors

ポリシー設定エラーを許可するフラグ

initialDelaySeconds

起動後、最初の準備状況プローブを実行するまで待機する時間 (秒単位)

periodSeconds

各準備状況プローブ間の間隔 (秒単位)

failureThreshold

Kubernetes 準備状況を ​false​ に設定するまでの失敗した準備状況プローブ数

timeoutSeconds

準備状況プローブがタイムアウトになるまでの時間 (秒単位)

デフォルトのパラメーターを変更するには、Helm チャートを更新します。これらのパラメーターは、Helm チャートの初回インストール中またはインストール後に変更できます。Helm チャートの更新についての詳細は、『Helm チャートを介した Flex Gateway デプロイメントのポッド設定の更新』を参照してください。

デフォルトの Kubernetes 準備状況プローブは、エラーを許容するように設定されています。これにより、設定エラーの可能性があっても Flex Gateway を拡張できます。エラーの許容範囲についての詳細は、​エラーの許容範囲の設定​を参照してください。

デフォルトでは、Kubernetes または Openshift で実行されている Flex Gateway は準備状況プローブを使用します。Flex Gateway インスタンスにデプロイされた API がない場合、準備状況は ​false​ になります。これは、カスタム準備状況プローブ設定では問題にはなりません。

外部コンポーネントの設定

準備状況を照会するように外部コンポーネントを設定します。たとえば、ロードバランサーの背後で実行される AWS 仮想マシンでは、準備状況クエリを状態チェックとして設定します。準備状況 API を外部コンポーネントに公開するには、次の設定を Flex Gateway インスタンスに適用します。

apiVersion: gateway.mulesoft.com/v1alpha1
kind: Configuration
metadata:
 name: probe
spec:
 probe:
   enabled: true
   port: 3000
yaml

YAML 設定スニペットを適用すると、準備状況 API で ​GET​ 要求に応答することができます。

http://<flex-gateway-url>:<port-configured>/probes/readiness?allowEnvoyErrors=<true|false>&allowAPIErrors=<true|false>&allowPolicyErrors=<true|false>

エラーの許容範囲の設定

エラーを許容しないまたは許容するように準備状況プローブを設定できます。エラーを許容しない場合、誤って設定されたゲートウェイインスタンスでは、準備状況が ​true​ に達することはありません。エラーを許容するデプロイメントでは、設定エラーが発生した (たとえば、ポリシーを誤って設定した) 場合、API インスタンスおよびポリシーがデプロイされた後も準備状況は ​true​ のままです。これにより、設定エラーの可能性があっても Flex Gateway を拡張できます。

準備状況 CLI コマンドでは、エラーの許容範囲を設定する次のフラグが提供されます。

  • --allow-api-errors

  • --allow-envoy-errors

  • --allow-policy-errors

準備状況 API への HTTP 要求を介して準備状況を照会するデプロイメントでは、次のクエリパラメーターを使用します。

  • allowEnvoyErrors=false

  • allowAPIErrors=false

  • allowPolicyErrors=false

シャットダウン中の準備状況のプローブ

ゲートウェイで ​Connection: close​ ヘッダーが送信された場合、準備状況はシャットダウン中もプローブされます。​SIGTERM​ シグナルでは、ダウンストリーム接続に再接続の信号を送信することで、ダウンストリーム接続のドレーンを開始します。デフォルトのドレーン期間は 25 秒で、その後、Flex Gateway は適切に終了します。

ドレーン期間を変更するには、Docker および Linux では ​FLEX_SERVICE_ENVOY_DRAIN_TIME​ 環境変数、Kubernetes Helm チャートでは ​gateway.drainSeconds​ オプションを使用できます。

Flex Gateway では、ドレーン期間よりも 5 秒長い 30 秒のグレースフルシャットガウンが事前設定されています。ドレーン期間を増加する場合は、​TimeoutStopSec​ (Linux) または ​terminationGracePeriodSeconds​ (Kubernetes) を使用してシャットダウン期間も増加します。シャットダウン期間はドレーン期間を超える必要があります。

Kubernetes のデフォルトの準備状況プローブは、失敗しきい値 2 で 10 秒ごとに実行され、20 秒以内にシャットダウンを検出できます。これにより、シャットダウン中のインスタンスに新しいトラフィックは送信されなくなります。AWS ロードバランサーなどの他の環境で準備状況プローブの同様の設定を使用します。

ライブネスプローブの設定

Flex Gateway インスタンスが稼働可能かどうかをテストするには、次の CLI コマンドを使用します。

flexctl probe --check=liveness
ssh

Flex Gateway インスタンスが稼働可能な場合、このコマンドは終了コード ​0​ を返します。それ以外の場合、このコマンドは終了コード ​1​ を返します。

ライブネスプローブコマンドを手動で実行することも、自動的に実行されるようにコマンドを設定することもできます。デフォルトでは、Flex Gateway の Kubernetes デプロイメントには自動ライブネスプローブが設定されています。デフォルトのプローブは、ライブネスプローブコマンドを定期的に実行し、指定された回数の失敗の後に Flex Gateway ポッドを自動的に再起動します。

特定の環境でのライブネスプローブの設定についての詳細は、次を参照してください。

デフォルトでは、Kubernetes で実行されている Flex Gateway には、Helm チャートで設定されたライブネスプローブが含まれています。ライブネスプローブは、​flexctl probe --check=liveness​ を 10 秒間隔で自動的に実行し、テストが 5 回失敗した後に稼働していないポッドを再起動します。

ライブネスプローブはデフォルトで次の値で設定されています。

livenessProbe:
 exec:
   command:
   - flexctl
   - probe
   - --check=liveness
 initialDelaySeconds: 10
 periodSeconds: 10
 failureThreshold: 5
 timeoutSeconds: 1
helm

パラメーター

説明

exec.command

ライブネスプローブコマンド

initialDelaySeconds

起動後、最初のライブネスプローブを実行するまで待機する時間 (秒単位)

periodSeconds

各ライブネスプローブ間の間隔 (秒単位)

failureThreshold

Kubernetes ポッドが再起動されるまでの失敗したライブネスプローブ数

timeoutSeconds

ライブネスプローブがタイムアウトになるまでの時間 (秒単位)

デフォルトのパラメーターを変更するには、Helm チャートを更新します。これらのパラメーターは、Helm チャートの初回インストール中またはインストール後に変更できます。Helm チャートの更新についての詳細は、『Helm チャートを介した Flex Gateway デプロイメントのポッド設定の更新』を参照してください。