现在,我的配置如下:
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
答案1
当您想使用主机名而不是 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
额外积分您还可以在 URL 中使用循环 DNS 记录,而不是枚举配置中的每个节点。这意味着您还可以将添加/删除集群中的节点时所需的配置更改减少到仅更改 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