このトピックでは、重みを変更した後に、Microservices Engine (MSE) Nacosインスタンスでアプリケーションインスタンスの重みが有効にならない問題を解決する方法について説明します。
問題の説明
MSEコンソールでアプリケーションインスタンスを追加または変更すると、ロードバランシングのためにアプリケーションインスタンスの重みが設定されます。ただし、トラフィックが呼び出されると、変更された重みに基づいてトラフィックは分散されません。
考えられる原因
使用しているアプリケーションフレームワークが、重みベースのロードバランシングをサポートしていません。
ロードバランシングは、MSE Nacosインスタンスの重みプロパティではなく、アプリケーションフレームワークのロードバランシング設定に基づいて実装されています。
アプリケーションのアドレス指定が、重み値に基づいて実装されていません。
解決策
アプリケーションインスタンスの重みは、MSE Nacosインスタンスのプロパティにのみ該当します。重み値を変更すると、インスタンス情報に含まれる重み値がNacosクライアントにプッシュされます。実際には、使用方法が異なるため、重みプロパティが無視される場合があります。
使用しているアプリケーションフレームワークが、重みベースのトラフィック分散をサポートしていません。たとえば、
Spring Cloud Alibaba
などのフレームワークは、重み値をゼロとゼロ以外の値としてのみ識別します。重み値がゼロの場合、トラフィックは分散されません。重み値がゼロ以外の場合、トラフィックは分散されます。 MSE Nacosインスタンスの重み値に基づいてロードバランシングを実装することはできません。次のいずれかの方法を使用して、問題を解決します。アプリケーションフレームワークに重みベースのトラフィック分散を導入できるかどうかを確認します。重みベースのトラフィック分散を導入できる場合は、この機能を実装できます。
既存のアプリケーションフレームワークを別のアプリケーションフレームワークに置き換えます。
使用しているアプリケーションフレームワークには、独自のロードバランシング設定方法があります。 MSE Nacosインスタンスの重みプロパティは使用できません。 MSE Nacosインスタンスの重みプロパティには、
Dubbo
とSpring Cloud Alibaba + Loadbalance
が含まれます。オープンソースコミュニティに助けを求めるか、ドキュメントを参照して、ロードバランシングの設定手順を開始することができます。
アプリケーション開発にアプリケーションフレームワークが使用されていない可能性がありますが、アプリケーションがサービスを処理するときに、アドレス指定に重み値を使用していません。
アプリケーションインスタンスリストを取得した後、
weight
フィールドに基づいてカスタムアドレス指定ロジックを実装できるようにアプリケーションを有効にします。Nacosクライアントのデフォルトの
selectOneHealthyInstance
メソッドを使用して、アドレス指定を実行します。詳細については、Nacos Java SDKをご参照ください。