由于每个应用服务器上的请求数量巨大(每秒向几百个域发送几千个 api 调用),我决定在每个应用服务器上安装 Bind9 作为仅缓存转发的服务器,它将使用我们已经拥有的“主”递归 DNS。这种设置运行良好,大约一年了。从上周开始(上周没有执行任何更新),Bind9 停止响应查询。日志什么都没有返回,没有崩溃报告,因为服务仍在运行,rndc 状态(或任何 rndc 命令)挂起。我启用了 querylog,认为可能发生了什么事情,Bind 没有收到查询。事实并非如此,因为即使在 Bind 堵塞之后,我仍然看到查询被记录下来。这是我使用的配置:
acl goodclients {
172.16.0.0/21;
localhost;
};
statistics-channels {
inet 127.0.0.1 port 8653 allow { 127.0.0.1; };
};
options {
querylog yes;
directory "/var/cache/bind";
max-cache-size 10G;
recursion yes;
allow-query { goodclients; };
# listen-on { 127.0.0.1; };
listen-on { any; };
# clients-per-query 100;
# max-clients-per-query 100;
clients-per-query 1000;
max-clients-per-query 1000;
tcp-clients 1000;
recursive-clients 5000;
forwarders {
172.16.2.200;
};
forward only;
dnssec-enable yes;
dnssec-validation yes;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { none; };
};
今天我还设定了
logging {
channel default_file {
file "/var/cache/bind/named.log" size 100m versions 100 suffix increment;
severity debug;
print-time yes;
print-severity yes;
print-category yes;
};
category default{ default_file; };
};
此外,我已经改变了
dnssec-enable yes;
dnssec-validation yes;
到
dnssec-enable no;
dnssec-validation no;
希望这能有所进展。任何帮助都将不胜感激。