サーバーの再起動やアップグレードなどのメンテナンス中は、サーバーでネットワーク到達性を無効にすることをおすすめします。ネットワーク到達性を無効にすると、サーバーにトラフィックは転送されません。たとえば、Message Processor のネットワーク到達性が無効になっている場合、Router はその Message Processor にトラフィックを転送しません。
たとえば、Message Processor をアップグレードするには、次の操作を行います。
- Message Processor のネットワーク到達性を無効にします。
- Message Processor をアップグレードします。
- 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 をブロックします。ロードバランサがポート 15999 で Router にアクセスできない場合、リクエストは 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}
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