サービスプロバイダーを停止、再起動、またはリリースした後、その IP アドレスが Microservices Engine (MSE) コンソールに引き続き表示されることがあります。このトピックでは、古いエントリが残る理由と、それらを削除する方法について説明します。
症状
サービスプロバイダーが停止しても、その情報が MSE コンソールに表示されたままになる。
サービスプロバイダーが再起動またはリリースされても、以前のインスタンスが MSE コンソールにリストされたままになる。
原因
Nacos ベースのサービスレジストリは、ハートビートメッセージの受信を停止した後にのみインスタンスを削除します。古いエントリが残る理由は、次のいずれかです。
サービスプロセスが完全に停止していない。 プロセスがバックグラウンドで実行され続け、MSE Nacos インスタンスにハートビートを送信し続けるため、登録がアクティブなままになります。
重複したプロセスがハートビートを送信している。 同じホストまたは異なるホスト上の追加のアプリケーションプロセスが、サービスプロバイダーに代わってハートビートを送信するため、MSE Nacos インスタンスがその登録を解除できません。
ソリューション
ステップ 1: 古いサービスプロバイダーへのトラフィックのブロック
根本原因を診断する前に、MSE コンソールで古いサービスプロバイダーを無効にすることで、トラフィックの受信を防止します。
詳細については、「アプリケーションインスタンスの起動またはシャットダウン」をご参照ください。
ステップ 2: サービスプロセスの完全停止の確認
診断アプローチは、サービスプロバイダーのデプロイ環境によって異なります。
ECS デプロイ
MSE コンソールに表示されている IP アドレスの Elastic Compute Service (ECS) インスタンスにログインし、次のコマンドを実行します。
サービスプロセスがまだ実行されているかどうかを確認します。
<application-name>をご利用のアプリケーション名に置き換えてください。ps -ef | grep <application-name>プロセスが MSE Nacos インスタンスへの接続を維持しているかどうかを確認します。
# Nacos gRPC ポートを確認 netstat -anp | grep 9848 # Nacos HTTP ポートを確認 netstat -anp | grep 8848
プロセスがまだ実行されており、MSE Nacos インスタンスに接続されている場合は、プロセスを停止します。
Kubernetes、Docker、または ACK デプロイ
サービスプロバイダーが自己管理型 Kubernetes クラスター、Docker 環境、または Container Service for Kubernetes (ACK) クラスターで実行されている場合:
ノードまたはホストで、サービスプロセスの実際の数が期待される数と一致するかどうかを確認します。
ps -ef | grep <application-name>余分なプロセスが存在する場合は、古いエントリに対応する Pod またはコンテナを特定し、停止します。
ACK クラスターの場合、古い Pod を特定できない場合は、チケットを送信して ACK テクニカルサポートにお問い合わせください。
EDAS または SAE デプロイ
サービスプロバイダーが Enterprise Distributed Application Service (EDAS) または Serverless App Engine (SAE) で実行されている場合は、以下の DingTalk グループを通じて各テクニカルサポートチームに連絡してください。
| プラットフォーム | DingTalk グループ ID |
|---|---|
| EDAS | 31723701 |
| SAE | 32874633 |