我们有一个 HAProxy 前端,用于平衡一层 Squid 服务器的负载,该层处理来自 Apache ModSecurity 层的数据,并最终提供来自 IIS 集群的数据。每台 Squid 服务器都以 1:1 的关系映射到一台 ModSecurity 服务器(例如 N 台 Squid 服务器和 N 台 ModSecurity 服务器)。
集群中的一台服务器在 HAProxy 中持续出现更高的健康检查时间。check.txt 文件配置为绕过缓存,因此它将从 IIS 层检索文件。Squid 访问日志(下面的示例)显示 ,TCP_MISS/000
而不是TCP_MISS/200
所有“良好”服务器显示的 。有人见过这种行为吗?
此外,在“好服务器”中,您会看到 是DIRECT/10.xxx.xxx.221
一致的。然而,在“坏服务器”中,日志在DIRECT/10.xxx.xxx.222
和之间交替DIRECT/www.example.com
。
有什么想法吗?
不良服务器的结果:
1308159554.223 0 xxx.xxx.xxx.49 TCP_MISS/000 0 HEAD http://www.example.com/check.txt - DIRECT/www.example.com -
1308159558.526 1 xxx.xxx.xxx.86 TCP_MISS/000 0 HEAD http://www.example.com/check.txt - DIRECT/10.xxx.xxx.222 -
1308159558.527 0 xxx.xxx.xxx.87 TCP_MISS/000 0 HEAD http://www.example.com/check.txt - DIRECT/www.example.com -
1308159558.621 0 xxx.xxx.xxx.48 TCP_MISS/000 0 HEAD http://www.example.com/check.txt - DIRECT/www.example.com -
良好服务器的结果:
1308159578.289 2 xxx.xxx.xxx.48 TCP_MISS/200 430 HEAD http://www.example.com/check.txt - DIRECT/10.xxx.xxx.221 text/plain
1308159578.695 6 xxx.xxx.xxx.86 TCP_MISS/200 430 HEAD http://www.example.com/check.txt - DIRECT/10.xxx.xxx.221 text/plain
1308159579.087 4 xxx.xxx.xxx.87 TCP_MISS/200 430 HEAD http://www.example.com/check.txt - DIRECT/10.xxx.xxx.221 text/plain
答案1
我相信我已经找到解决我的问题的方法。
第一个问题是,出现问题的 Squid 服务器由于与 SAN 数据存储的通信方式而出现 I/O 问题。
第二个问题可能是第一个问题的症状,即另外两个已弃用的 HAProxy 服务器也在 Squid 服务器上运行健康检查。然而,在无 I/O 瓶颈的环境中,我认为这不是真正的原因,除非它与不同版本的 HAProxy 有关。