バックエンド解決は、(アイデンティティを介した)バックエンドのノードまたは階層への関連付けです。
Problem
フローマップを生成する従来の方法では、exit コールの実行時にダウンストリーム層に直接接続されたアップストリーム層がコントローラ UI に表示されます。サービスプロキシがそれらの階層間に存在する場合、コントローラはサービスプロキシをバックエンドとして識別できません。
バックエンドコンポーネントを正確に識別しないと、システムにより、サービスプロキシがルーティングする可能性があるターゲットダウンストリーム層のいずれかとの単一のバックエンドの関連付けが定期的に変更されます。これにより、誤ったメトリックを持つ不正なフローマップが作成されます。
Solution
サービスプロキシはバックエンドとしてマークされ、フローマップに表示されます。このサービスプロキシにより、アップストリーム層からダウンストリーム層への要求が正確に表示されます。メトリックは正確に報告され、階層間で集計されて表示されます。
たとえば、コントローラが 192.168.1.9 という名前のバックエンドをサービスプロキシとして識別し、そのプロキシが restTier21 と restTier22 に 15 コール/分のレートでリクエストをルーティングしている場合、フローマップはメトリック(コール/分)を restTier21(8 コール/分)~ restTier22(7 コール/分)の間で正確に配布します。ダウンストリームメトリックを 15 コール/分までまとめて追加します。これは、アップストリームメトリックと同じ値です。
サービスプロキシがバックエンドとしてマークされると、再解決は停止します。
Python エージェントのバックエンド解決の仕組み
バックエンド解決は、コントローラで backend.detect.loadbalancer.enabled
フラグと backend.detect.urimisconfig.enabled
フラグが true
に設定されている場合に機能します。フラグが設定されると、バックエンドが階層間でのみスイッチングする場合、バックエンドはサービスプロキシとしてマークされます。すべてのアップストリーム エージェントは、バックエンドがサービスプロキシとしてマークされていることを通知されます。ただし、サービスプロキシ機能をサポートするエージェントのバージョンのみが、コントローラへのメトリックのレポートを開始します。
コントローラがバックエンド解決のためにサービスプロキシを識別すると、Python エージェントはサービスプロキシが検出されたという情報を取得し、適切なメトリックをコントローラに送信します。これが設計どおりに機能するには、アップストリーム エージェントのバージョンもサービスプロキシ機能をサポートしている必要があります。エージェントがアップグレードされていない場合、サービスプロキシは検出されず、このバックエンドは通常のバックエンドに戻り、コントローラは以前の動作に戻ります。
そのため、互換性のあるエージェントをバックエンド解決で使用することをお勧めします。
サービスプロキシの有効化
コントローラでサービスプロキシの検出を有効にするには、backend.detect.loadbalancer.enabled
および backend.detect.urimisconfig.enabled
フラグを設定します。詳細については、「サービスプロキシの概要」を参照してください。