给好几个客户做了 BIND 转发服务,其中一个老是出各种幺蛾子,今天又碰上。
客户多个出口断开,但不是所有,但全网 DNS 服务全断了, DNS 服务器本身访问内外网络正常,配置如下:
options {
recursion yes;
blackhole { };
forward only;
allow-query { any; };
forwarders { a.a.a.a;b.b.b.b; };
}
......
zone "taobao.com" {
type forward;
forwarders { a.a.a.a;b.b.b.b; };
};
.....
BIND 的选择算法之前还真没仔细分析过,当其中一个转发目标不可用时,另一个转发目标被启用,但是有个超时时间,我搜索到下面的文章:
http://blog.csdn.net/midsum/article/details/21477975
“ 直到客户遇到了这样的问题。该客户有两个转发服务器 A 和 B ,现在是 A 正常, B 超时并且一直超时,也就是说, B 在每一次被重试之后,都被重新设定为 20000 ,之后都会转发给 A , 直到 B 乘以 0.98 的数次之后又小于 A ,才又被重试。但是,根据客户的计算, 20000 的值在 150 多次之后将会减小到 A 值相同的值(即: 20000 * 0.98^150 < A->srtt ),而 B 因为超时,每次往 B 的转发都会长达 30 秒钟(默认设定重试时间为 30 秒)。而当访问量很大时, 150 次的查询只需要几秒钟(该客户好像是每分钟上万次的查询)。这样就造成了这么一种感觉,即几秒钟的反应之后,接着是 30 秒钟的超时,然后又是几秒, 30 秒....,整体上看来,就是绝大多数时间里, DNS 都是不可用的状态。”
我的客户也正好是碰到这个问题,断开的出口恢复后, DNS 转发也立即恢复了,但是预期的多个转发备份功能失效了。本来客户同时有两个转发服务器,但出口断了,全部都是一样的问题,
那么如何更好的解决这个问题,避免全网投诉。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.