すべてのプロダクト
Search
ドキュメントセンター

Microservices Engine:グレースフルリリース、起動、シャットダウンを実装する方法

最終更新日:Nov 09, 2025

このトピックでは、Microservices Governance を使用してマイクロサービスアプリケーションをグレースフルにリリース、起動、またはシャットダウンする方法について説明します。

問題の説明

ダウンストリームのマイクロサービスアプリケーションがリリースまたは再起動されると、アップストリームアプリケーションが、シャットダウン中のダウンストリームアプリケーションへの呼び出しを開始することがあります。その結果、サービストラフィックエラーが報告されます。このようなエラーには、接続タイムアウトやビジネスエラーが含まれます。

考えられる原因

  • 呼び出しが開始された後に、ダウンストリームアプリケーションがシャットダウンされます。その結果、ダウンストリームアプリケーションは呼び出し要求に応答しません。

  • ダウンストリームアプリケーションのロジックが複雑なため、シャットダウンに時間がかかります。この結果、アプリケーションがレジストリから登録解除されるまでに遅延が発生します。

  • ダウンストリームサービスは期待どおりに停止しますが、アップストリームサービスはサービスレジストリからのダウンストリームサービスアドレスの新しいリストを迅速に処理できません。これは、ネットワーク障害、リソース不足、または異常な処理ロジックが原因である可能性があります。

  • 使用中のクライアントは以前のバージョンであり、無効なメカニズムが原因で、シャットダウンされたダウンストリームアプリケーションの IP アドレスリストをできるだけ早く削除しません。

ソリューション

最善のソリューションは、マイクロサービス管理のグレースフルリリース機能を使用することです。この機能は、グレースフルリリース、起動、シャットダウンのための包括的なソリューションを提供し、複雑なトラブルシューティングと解決プロシージャを不要にします。詳細については、「グレースフルローリングデプロイを構成する」をご参照ください。

マイクロサービス管理のグレースフルリリース機能を使用できない場合は、アップストリームサービスの Nacos クライアントログを表示できます。ログで、ダウンストリームサービスの名前とキーワード current ips を取得し、ダウンストリームサービスが変更された時刻Nacos クライアントログメッセージの時刻、およびアップストリームサービスがエラーを報告した時刻を比較します。

  • 3 つのタイムスタンプがほぼ一致している場合 (つまり、ダウンストリームサービスの変更が開始された後にアップストリームサービスがエラーの報告を開始し、Nacos クライアントログメッセージが表示された後に停止する場合)、これはプログラムが期待どおりに動作していることを示します。以下で説明する一般的なソリューションを使用できます。詳細については、「一般的なソリューション」をご参照ください。

  • ダウンストリームサービスが変更された時刻Nacos クライアントログメッセージの時刻がほぼ一致しているにもかかわらず、アップストリームサービスからのエラーが続く場合、これは Nacos サーバーがアドレスを正しくプッシュし、Nacos クライアントがそれを受信したものの、アプリケーションがそれを使用しなかったことを示します。この問題をトラブルシューティングするには、次の手順を実行します。

    • オープンソースフレームワークを使用していない場合は、アプリケーションロジックをチェックして、キャッシュメカニズムが使用されているかどうか、およびキャッシュの更新が失敗したかどうかを確認します。

    • オープンソースフレームワークを使用している場合は、対応するコミュニティに助けを求めることができます。

  • ダウンストリームサービスが変更された時刻Nacos クライアントログメッセージの時刻がほぼ一致しているにもかかわらず、アップストリームサービスのエラーからの回復が非常に遅い場合、これは Nacos サーバーがアドレスを正しくプッシュし、Nacos クライアントがそれを受信したものの、アプリケーションがそれをすぐには使用しなかったことを示します。この問題をトラブルシューティングするには、次の手順を実行します。

    1. オープンソースフレームワークを使用していない場合は、アプリケーションにキャッシュ機構があるかどうか、およびキャッシュ更新に遅延があるかどうかを確認します。

    2. ribbonfeignloadbalance などの補助フレームワークを使用しているかどうかを確認します。これらのフレームワークには、更新が遅いアドレスリストキャッシュがあります。特定のフレームワークのキャッシュ更新構成を変更できます。

    3. オープンソースフレームワークを使用している場合は、対応するコミュニティに助けを求めることができます。

    4. 上記の手順を実行しても問題が解決しない場合は、以下で説明する一般的なソリューションを使用します。詳細については、「一般的なソリューション」をご参照ください。

  • ダウンストリームサービスが変更された時刻と、Nacos クライアントログメッセージの時刻またはアップストリームサービスがエラーを報告した時刻の間に大きな不一致がある場合、これは Nacos クライアントがダウンストリームサービスの変更を検出しなかったことを示します。この問題をトラブルシューティングするには、次の手順を実行します。

    1. アップストリームおよびダウンストリームサービスの Nacos クライアントをバージョン 2.X 以降にアップグレードします。

    2. アップストリームサービスにネットワーク障害リソース不足などの問題がないか確認します。

    3. ダウンストリームサービスのシャットダウンプロセスにブロッキングロジックがないか確認します。このロジックは、アプリケーションがまだサービスレジストリに登録されている間にリクエストへの応答を妨げる可能性があります。

    4. 上記の手順を実行しても問題が解決しない場合は、以下で説明する一般的なソリューションを使用します。詳細については、「一般的なソリューション」をご参照ください。

一般的なソリューション

  1. ダウンストリームサービスを停止する前に、Nacos OpenAPI を使用して enabled=false を設定してインスタンスを更新するか、MSE コンソールでインスタンスを非公開にします。次に、モニタリングとログを使用して、ダウンストリームサービスノードがリクエストを受信しなくなったことを確認します。詳細については、「OpenAPI」および「アプリケーションインスタンスの非公開」をご参照ください。

  2. ダウンストリームサービスノードを停止し、変更を実行します。

  3. ダウンストリームサービスノードへの変更が完了し、ノードがサービスを正しく提供していることを確認した後、Nacos OpenAPI を使用して enabled=true を設定してインスタンスを更新するか、MSE コンソールでインスタンスを公開します。詳細については、「OpenAPI」および「アプリケーションインスタンスの公開」をご参照ください。