能否将DNS轮询与nscd的DNS缓存配合使用?相关疑问求证
DNS轮询与nscd缓存配合使用的可行性分析
1. nscd是否遵循DNS回复中的TTL
- nscd默认会忽略DNS返回记录的TTL值,而是采用自身配置的缓存时长。相关规则在
/etc/nscd.conf的positive-time-to-live(正向查询缓存时长)参数中定义,默认值通常为3600秒(1小时)。 - 若要让nscd遵循DNS记录的TTL,需修改配置:在
enable-cache设为yes的前提下,将positive-time-to-live设为0。但这种配置会让nscd完全依赖DNS返回的TTL,可能导致DNS查询频率大幅增加。
2. 配备nscd的客户端流量能否平均分配到后端服务器
- 无法保证平均分配。nscd会缓存DNS查询结果,同一客户端在缓存有效期内的所有请求都会直接使用缓存中的IP,不会重新发起DNS查询获取轮询列表中的其他IP,这直接破坏了DNS轮询的负载均衡逻辑。
- 即使缩短nscd的缓存时长,也只能在缓存过期后重新获取新IP,但缓存有效期内仍会集中访问单台服务器,无法实现实时的轮询流量分配。
总结:是否可以配合使用?
如果核心需求是实现DNS轮询的负载均衡,不建议将nscd与DNS轮询配合使用,nscd的缓存机制会彻底打乱轮询的流量分配效果。如果仅需DNS缓存减少查询开销,且对流量均匀性要求不高,可以将nscd的缓存时长设为较短值,在缓存效率和轮询有效性之间做平衡,但无法做到完美的流量平均分配。
内容的提问来源于stack exchange,提问作者nimdrak
相关产品推荐
相关产品推荐

