作为测试,我运行了一个本地绑定实例:
>netstat -ant | grep LISTEN
tcp 0 0 10.72.186.23:53 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN
...
>nslookup mysubdomain.example.com 127.0.0.1
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: mysubdomain.example.com
Address: nn.nn.nn.251
Name: mysubdomain.example.com
Address: nn.nn.nn.249
Name: mysubdomain.example.com
Address: nn.nn.nn.201
Name: mysubdomain.example.com
Address: nn.nn.nn.138
我在同一台主机上运行haproxy 1.6.2,并带有解析器部分:
resolvers dns
nameserver dns1 127.0.0.1:53
nameserver dns2 10.72.186.23:53
hold valid 10s
它不会拒绝解析器部分,但似乎也没有使用它。它不会显示在统计信息页面中,并尝试添加此服务命令:
server mysubdomain-dev mysubdomain.example.com
导致此错误:
>service haproxy restart
* Restarting haproxy haproxy
[ALERT] 322/171813 (10166) : parsing [/etc/haproxy/haproxy.cfg:77] : 'server mysubdomain-dev' : invalid address: 'mysubdomain.example.com' in 'mysubdomain.example.com'
[ALERT] 322/165300 (29751) : Error(s) found in configuration file : /etc/haproxy/haproxy.cfg
[ALERT] 322/165300 (29751) : Fatal errors found in configuration.
haproxy doc https://cbonte.github.io/haproxy-dconv/configuration-1.6.html表明这应该有用。
服务器< name> < address> [:[port]] [param *]
...
<地址>是服务器的IPv4或IPv6地址。或者,a 支持resolvable hostname,但将解析此名称 在启动期间。地址" 0.0.0.0"或" *"具有特殊意义。
是否需要将其他一些部分添加到激活解析器部分的haproxy.cfg中?
答案 0 :(得分:6)
当HAProxy首次启动时,它会尝试解析所有后端中任何服务器的主机名以填充服务器结构。在第一个启动阶段,HAProxy使用操作系统解析程序,即通常是protocol DeletableImageViewDelegate {
func deleteImageWithTag(tag: Int!) -> (Bool)
func addImageOnViewWithTag(tag: Int!) -> (Bool)
...
}
class DeletableImageView: UIView {
var view: UIView!
var delegate: DeletableImageViewDelegate?
// Some random methods + some use of the delegate protocol's methods
...
}
文件中定义的服务器。
仅在稍后,当检查期间更新服务器的IP地址时,HAProxy将使用其内部解析程序配置及其内部DNS解析程序。
从您的错误说明中,现在看起来您的主机本身无法解析/etc/resolv.conf
主机名。只有在没有明确命名的名称服务器的情况下它才能解析主机名,HAProxy才能启动。这可以用例如
mysubdomain.example.com
答案 1 :(得分:0)
可能是您没有指定要用于该服务器的解析器
服务器mysubdomain-dev mysubdomain.example.com - >
服务器mysubdomain-dev mysubdomain.example.com resolvers dns