On Mon, Jul 3, 2017 at 9:32 AM, Igor Cicimov <ig...@encompasscorporation.com > wrote:
> Hi, > > If I remember correctly, there was a feature that was talked about on the > mailing list, and was said it should make it into 1.7, where the > dns-resolver can work with dns records that return multiple IP's, like lets > say: > > root@ip-10-77-0-94:~# dig +short tomcat.service.consul A > 10.77.4.234 > 10.77.3.227 > > and account for all records returned (till 1.6 the resolver was grabbing > only the first IP returned) in terms of load balancing. So I'm testing this > with 1.7.7 like this: > > > server tomcats tomcat.service.consul:8080 check resolvers dns_resolvers > resolve-prefer ipv4 > > instead of: > > server tomcat1 10.77.4.234:8080 check resolvers dns_resolvers > resolve-prefer ipv4 > server tomcat2 10.77.3.227:8080 check resolvers dns_resolvers > resolve-prefer ipv4 > > to load balance between all ip's, but seeing in the logs messages like > this: > > Jul 3 17:13:15 ip-10-77-0-94 haproxy[22902]: tomcats/tomcats changed its > IP from 10.77.3.227 to 10.77.4.234 by dns_resolvers/dns0. > > so does this mean the feature is not implemented yet? > > Thanks, > Igor > > Hi Igor, For now, you can't replace a couple of "hard coded" server lines by a single server line with DNS enabled. The second case will make you have in the end a single server in the backend. HAProxy 1.8 will bring the features you need: 1. use the server-template line to configure 2 servers (or more) in HAProxy while using a single configuration line 2. a cache of the DNS response has been implemented and each time a record is used, it is internally moved to the bottom of the list, so all IPs will be used as best as possible Example with server-template to apply to your example: server-template tomcat 2 tomcat.service.consul:8080 check resolvers dns_resolvers resolve-prefer ipv4 I would also recommend to set 'init-addr none' to prevent HAProxy from using libc at configuration parsing. I saw some deployments where the host below HAProxy was not be able to resolve an IP address from a consul endpoint. Baptiste