トラフィックに影響を与えずに Router と Message Processor を再起動する

現在、Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントをご確認ください
情報

このドキュメントでは、受信 API トラフィックに影響を与えずに Router と Message Processor(MP)を再起動する方法について説明します。状況によっては、Router と MP の再起動が必要になることがあります。以下にいくつか例を示します。

  • 仮想ホストで直接参照されるキーストアが、参照を使用せずにターゲット サーバーまたはターゲット エンドポイントを更新すると、
  • API プロキシが一部の MP に部分的にデプロイされている場合。

始める前に

Router と Message Processor の詳細については、Edge for Private Cloud の概要をご覧ください。

トラフィックに影響を与えない Router のローリング再起動

このセクションでは、受信 API トラフィックに影響を与えずに Router を再起動する手順について説明します。

  1. 再起動が必要な Router にログインします。
  2. 次のコマンドを使用して、Router のヘルスチェック ポートをブロックします。これにより、Router は異常とみなされ、この Router にトラフィックはルーティングされません。
    sudo iptables -A INPUT -i eth0 -p tcp --dport 15999 -j REJECT
        
  3. 処理中のトラフィックがスムーズに処理されるように 2 分間待ってから、Router を再起動します。これを行うには、次のように sleep コマンドを実行します。
    for i in {001..120}; do sleep 1; printf "\r ${i}"; done
        
  4. 次のように Apigee Monit サービスを停止します。
    apigee-service apigee-monit stop
        
  5. 次のように Apigee Router サービスを停止します。
    apigee-service edge-router stop
        
  6. 次のように Apigee Router サービスを開始します。
    apigee-service edge-router start
        
  7. Apigee Router サービスが起動し、次のコマンドを使用して受信トラフィックを処理する準備が整うまで待ちます。
    apigee-service edge-router wait_for_ready
        
  8. 次のように Apigee Monit サービスを起動します。
    apigee-service apigee-monit start
        
  9. 次のコマンドを実行して、IP テーブルをフラッシュしてヘルスチェック ポート 15999 のブロックを解除し、Router がトラフィックを処理できるようにします。
    sudo iptables -F
    sudo iptables -L
        
sudo iptables -A INPUT -i eth0 -p tcp --dport 15999 -j REJECT
for i in {001..120}; do sleep 1; printf "\r ${i}"; done
apigee-service apigee-monit stop
apigee-service edge-router stop
apigee-service edge-router start
apigee-service edge-router wait_for_ready
apigee-service apigee-monit start
sudo iptables -F
sudo iptables -L

トラフィックに影響を与えずに Message Processor のローリング再起動を実行する

このセクションでは、受信 API トラフィックに影響を与えずに Message Processor(MP)を再起動する手順について説明します。

  1. 再起動が必要な Message Processor にログインします。
  2. 次のコマンドを使用して、Message Processor のヘルスチェック ポートを特定します。
    curl 0:8082/v1/servers/self -s | jq '.tags.property' | jq '.[] | select(.name=="http.port")'
        
  3. Message Processor のヘルスチェック ポート(手順 2 で特定)をブロックします。これにより、Message Processor は正常でないと見なされ、この Message Processor にトラフィックがルーティングされなくなります。
    sudo iptables -A INPUT -i eth0 -p tcp --dport port # -j REJECT
        

    ここで、port # は手順 2 で実行したコマンドから返されたポート番号です。

  4. 処理中のトラフィックがスムーズに処理されるように 2 分間待ってから、Message Processor を再起動します。これを行うには、次のように sleep コマンドを実行します。
    for i in {001..120}; do sleep 1; printf "\r ${i}"; done
        
  5. 次のように Apigee Monit サービスを停止します。
    apigee-service apigee-monit stop
        
  6. 次のように Apigee Message Processor サービスを停止します。
    apigee-service edge-message-processor stop
        
  7. Apigee Message Processor サービスを次のように作成します。
    apigee-service edge-message-processor start
        
  8. Apigee Message Processor サービスが起動し、次のコマンドを使用して受信トラフィックを処理できるようになるまで待ちます。
    apigee-service edge-message-processor wait_for_ready
        
  9. 次のように Apigee Monit サービスを起動します。
    apigee-service apigee-monit start
        
  10. 次のコマンドを実行して、IP テーブルをフラッシュしてヘルスチェック ポートのブロックを解除し、Message Processor でトラフィックを再度処理できるようにします。
    sudo iptables -F
    sudo iptables -L
        
curl 0:8082/v1/servers/self -s | jq '.tags.property' | jq '.[] | select(.name=="http.port")'

sudo iptables -A INPUT -i eth0 -p tcp --dport port # -j REJECT
for i in {001..120}; do sleep 1; printf "\r ${i}"; done
apigee-service apigee-monit stop
apigee-service edge-message-processor stop
apigee-service edge-message-processor start
apigee-service edge-message-processor wait_for_ready
apigee-service apigee-monit start
sudo iptables -F
sudo iptables -L

ここで、port # は手順 2 で実行したコマンドから返されたポート番号です。