Backend resolution is the association of a backend (through identity) to node or tier.
Problem
In the traditional way of generating flow maps, the Controller UI displays the upstream tier as connected directly to the downstream tier when it makes an exit call. If a Service Proxy is present in between these tiers, the Controller is unable to identify that Service Proxy as a backend.
The inaccurate identification of the backend component causes the system to periodically change the association of the single backend with one of the potential target downstream tiers to which the Service Proxy could route. This results in an incorrect flowmap with the wrong metrics.
Solution
A Service Proxy is marked as a backend and shown on the flow map. This Service Proxy ensures that the requests from the upstream tiers to the downstream tiers are displayed accurately. The metrics are reported accurately and shown in such a way that the metrics tally between the tiers.
For example, the Controller identifies a backend named 192.168.1.9 as a Service Proxy, and that proxy routes requests to restTier21 and restTier22 at the rate of 15 calls/min, the flow map distributes the metrics (calls/min) accurately between restTier21 (8 calls/min) and restTier22 (7 calls/min). The downstream metrics collectively add up to 15 calls/min, which is the same value as the upstream metric.
Once the Service Proxy is marked as backend, re-resolution stops.
How Does Backend Resolution Work for Python Agent?
The backend resolution works when the backend.detect.loadbalancer.enabled
and backend.detect.urimisconfig.enabled
flags are set to true
on the Controller. Once the flags are set, if the backend switches between the tiers only then the backend is marked as a Service Proxy. All the upstream agents are informed that a backend is marked as a Service Proxy. But only those versions of agents that support the Service Proxy feature start reporting the metrics to the controller.
After the Controller identifies a Service Proxy for the Backend Resolution, the Python Agent gets the information that a Service Proxy has been detected and the agent sends the right metric to the controller. The upstream agent version should also support the Service Proxy feature for this to work as designed. If the agent is not upgraded, then the Service Proxy is not detected and the backend is reverted as a normal backend and the Controller will function with the previous behavior.
Therefore, it is recommended that a compatible agent is used in the Backend resolution.
Enable the Service Proxy
The Service Proxy detection is enabled on the Controller by setting the backend.detect.loadbalancer.enabled
and backend.detect.urimisconfig.enabled
flags. For more information, see Service Proxy Overview.