Message Processor / Router の到達可能性の有効化と無効化

サーバーの再起動やアップグレードなど、メンテナンス中はサーバーの到達可能性を無効にすることをおすすめします。到達可能性を無効にすると、そのサーバーにトラフィックが送信されません。Message Processor の到達可能性を無効にした場合、その Message Processor にトラフィックは配信されません。

たとえば、Message Processor をアップグレードする場合の手順は次のようになります。

  1. Message Processor で到達可能性を無効にします。
  2. Message Processor をアップグレードします。
  3. Message Processor で到達可能性を有効にします。

Message Processor の到達可能性を無効または有効にする

Message Processor で到達可能性を無効にする場合、Message Processor を停止します。

/opt/apigee/apigee-service/bin/apigee-service edge-message-processor stop

Message Processor は、保留中のメッセージを処理してからシャットダウンします。新しいリクエストは、使用可能な他の Message Processor にルーティングされます。

Message Processor を再起動するには、次のコマンドを使用します。

/opt/apigee/apigee-service/bin/apigee-service edge-message-processor start
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor wait_for_ready

Message Processor でメッセージを処理する準備ができると、wait_for_ready コマンドは次のメッセージを返します。

Checking if message-processor is up: message-processor is up.

Router の到達可能性を無効または有効にする

通常、本番環境では Edge Router の前にロードバランサが配置されています。ロードバランサは、Router のポート 15999 を監視し、Route が使用可能かどうか確認します。

次の URL を使用して、Router で HTTP または TCP のヘルスチェックを実行するようにロードバランサを構成します。

http://router_IP:15999/v1/servers/self/reachable

Router が到達可能な場合、この URL から HTTP 200 レスポンス コードが返されます。

Router を到達不能にするには、Router のポート 15999 をブロックします。ロードバランサが Router のポート 15999 にアクセスできない場合、リクエストは Router に転送されません。たとえば、Router ノードで次の iptables コマンドを使用すると、ポートをブロックできます。

sudo iptables -A INPUT -i eth0 -p tcp --dport 15999 -j REJECT

Router を使用可能にするには、iptables をフラッシュします。

sudo iptables -F

iptables でノードの他のポートが管理されている場合があります。iptables をフラッシュしたり、iptables でポート 15999 をブロックしたりする場合は、この点に注意してください。他のルールで iptables を使用している場合、-D オプションを指定すると特定の変更を元に戻すことができます。

sudo iptables -D INPUT -i eth0 -p tcp --dport 15999 -j REJECT

Router のヘルスチェックを実行する

Router では、次のタイプのヘルスチェックを実行できます。

  • ライブネス: コンポーネントを再起動できることをモニタリング サブシステムに知らせます。例:
    To check a router's liveness:
        http://router_IP:8081/v1/servers/self/up
    
        To check a load balancer's liveness:
        http://router_IP:15999/v1/servers/self/reachable
  • レディネス: ルーターが特定の環境に対するお客様のリクエストを処理できるかどうかを指定します。

    例:

    To check both a router and MP pool's availability:
        http://router_IP:15999/{org}__{env}
    これらのコンポーネントを混在させないでください。混在していると、稼働中のコンポーネントと処理の準備ができたコンポーネント間のリクエストが失われます。MP の例では、サーバーが起動してからすべてのプロキシ定義がインスタンス化されるまでに時間がかかります。MP の準備が整うまでは、R のロードバランサに MP を追加しないでください。実施すべき処理: Router のポート要件から 15999 を削除し、nginx 用に https://docs.apigee.com/private-cloud/v4.18.05/port-requirements *を追加し直す。* : * 実際のレディネス チェックは現時点では存在しません。そのため、たとえばその Planet で 1 つの DC の MP がすべてダウンした場合、一部の顧客は正当なリクエストを失います。リクエストを処理する準備ができた R の状態に対応している必要があります。当然ながらリクエストには多数の前提条件がありますが、最も重要なことは、少なくとも 1 つの MP の準備ができていることです。(MP のライブネス プローブとレディネス プローブにカスケードします)。[@Nicola Cardace では、以前は機能していたが、もう使えないというのは本当でしょうか。]

    Router のステータスを確認するには、Router のポート 8081 にリクエストを送信します。

    curl -v http://router_IP:8081/v1/servers/self/up

    Router が稼働していれば、レスポンスで "true" と HTTP 200 が返されます。ただし、この呼び出しで確認できるのは Router が稼働しているかどうかだけです。ロードバランサから Router への到達可能性はポート 15999 によって制御されます。

    Message Processor のステータスを確認するには、次のリクエストを送信します。

    curl http://Message_Processor_IP:8082/v1/servers/self/up