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

Reply via email to