Linkerd seems to be ignoring SRV priority field


We’re using linkerd as a client-side load balancer using DNS SRV records, and it looks as if Linkerd is ignoring the priority field in the SRV records. We have DNS entries like this (I’ve changed the hostnames):

_http._tcp.service 300 IN SRV 10 10 8443 service1
_http._tcp.service 300 IN SRV 20 10 8443 service2
_http._tcp.service 300 IN SRV 30 10 8443 service3

and verified these with an nslookup from the box on which linkerd is running. The expected behaviour according to the the SRV RFC is that linkerd should send all requests to service1 since it has the lowest priority field. However what we’re seeing is requests going to all three nodes. Is this deliberate behaviour, or a bug, or have we got something set up wrong?

From looking at the code here where linkerd fetches the DNS record, it seems that the priority field is just never read, so this is unimplemented behaviour. Should I raise an issue for this on Github?

@tca-ms great work in finding the root cause to this issue! We would be more than happy to review a PR for this.

Thanks Dennis! We’re unlikely to be able to write a fix for this ourselves, but I’ll raise a feature request to help anyone with the same question and in case anyone else wants to pick it up.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.