我在 Ubuntu 16.04 上;我将 HAProxy 设置为通过域名定义的服务的入口点;这些域名由同一台机器(或 VLAN 网络)中的 DNS 服务器 (coredns) 提供服务。使用 nslookup 或 dig 实用程序,我们获得了名称解析;但 HAProxy 抛出了错误:
[ALERT] 134/160502 (25218) : parsing [/etc/haproxy/haproxy.cfg:57] : 'server example' : could not resolve address 'example.service.com'.
[ALERT] 134/160502 (25218) : Failed to initialize server(s) addr.
在我的 /etc/haproxy/haproxy.cfg 文件中,我有一个如下所示的解析器部分:
resolvers dnsmasq
nameserver ip 10.80.10.25:5353
resolvers coredns
nameserver ip 10.80.10.25:53
并且我设置了一个前端和一个后端,它引用由上面添加的两个服务器作为解析器解析的域名:
frontend example-service
bind :80
mode http
default_backend example
backend example
mode http
balance roundrobin
option forwardfor
http-request set-header X-Forwarded-Port %[dst_port]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
option httpchk HEAD / HTTP/1.1rnHost:localhost
server example example.service.com resolvers coredns check inter 1000
通过 dig 我们可以得到:
dig @10.80.10.25 -p 53 example.service.com +noall +answer
; <<>> DiG 9.11.3-1ubuntu1.7-Ubuntu <<>> @10.80.10.25 -p 53 example.service.com +noall +answer
; (1 server found)
;; global options: +cmd
example.service.com. 3600 IN A 127.0.0.1