Прямо сейчас моя конфигурация выглядит так:
server node1 10.20.x.y:80 check
server node2 10.20.x.y:80 check
server node3 10.20.x.y:80 check
Как лучше всего использовать здесь URL-адреса вместо IP-адресов?
Что-то вроде (но вроде не работает):
server node1 url-1.google.com:80 check
server node2 url-2.google.com:80 check
server node3 url-3.google.com:80 check
Когда вы хотите использовать имена хостов, а не IP-адреса, это на жаргоне HAproxy называется разрешением DNS. Вам нужно будет указать "резолверы" раздел, в котором вы настраиваете DNS. Например:
resolvers mydns
nameserver dns1 10.0.0.1:53
nameserver dns2 10.0.0.2:53
resolve_retries 3
timeout resolve 1s
timeout retry 1s
hold other 30s
hold refused 30s
hold nx 30s
hold timeout 30s
hold valid 10s
hold obsolete 30s
Тогда вы должны уточнить один resolvers
параметр в каждой строке сервера, где требуется разрешение DNS.
server s1 app1.example.com:80 resolvers mydns resolve-prefer ipv6
Дополнительный кредит Вместо того, чтобы перечислять каждый узел в вашей конфигурации, вы также можете использовать циклическую запись DNS в своем URL-адресе. Это означает, что вы также можете уменьшить изменения конфигурации, необходимые при добавлении / удалении узлов из кластера, и изменить только запись DNS.
Тогда запись DNS будет выглядеть так:
app1.example.com. IN A 192.0.2.1
app1.example.com. IN A 192.0.2.2
app1.example.com. IN A 192.0.2.3