我如何知道我已被负载平衡到哪个服务器?


8

我想测试位于负载均衡器后面的两台服务器之间的单向同步的一些配置更改(这就是Rackspace Cloud基础设施FYI)。我遇到的问题是,我无法确定已将负载均衡到哪个服务器,因为给出的IP始终是负载均衡器的IP。

是否有一种简单(甚至不是很简单)的方法来告诉我实际上已定向到哪个服务器。理想情况下,我希望使用浏览器中的内容,因为这意味着非技术团队的成员也可以相对轻松地报告问题,但是最好的解决方法构想也应受到赞赏。

附加信息:两台服务器都运行Apache,并且负载平衡器已配置了会话持久性。

Answers:


8

如果您想保持谨慎,只需让Web服务器在Server:响应标头中标识自己(RFC 2616 Sec 14.38)。例如,在Apache中,该标头中返回的信息由ServerTokens指令控制。然后,只需检查FirebugChrome DevToolsSafari Web Inspector时间轴中的响应头即可

如果您想明显地表现出来,可以让您的Web应用程序将服务器名称嵌入到它作为可见文本生成的页面中。您还可以在HTML注释中报告服务器名称,这需要使用View Source来查看。


谢谢@ 200_success。听起来很简单。更新了我的问题,说服务器正在运行Apache,因此您的链接也很有用且相关。
Willl

2

您没有说明要使用的协议,所以我假设我们正在使用https。

每个后端可能都知道一些有关自身的信息,这些信息将唯一地标识该后端。可以是主机名或单播IP地址。后端可以在适当的位置包含该信息。您可以将其包含在每个页面的页脚中。或者,如果您认为它太明显,则仅将其包含在用户在正常情况下不会访问的页面上。任何错误页面(404、500等)应始终包含后端标识。

如果您的负载平衡器只是负载平衡,而不执行其他任何操作,那么您将在后端终止https,并且每当TCP连接关闭并且客户端重新连接时,客户端就有可能被定向到另一个后端。

负载平衡器可以记住最近一个小时内看到的所有客户端IP地址的最近使用的后端,以便在大多数时间重用同一后端。Cookie和用户ID之类的任何更详细的信息对于负载均衡器来说都是遥不可及的,因此它不能使用它来使用户保持在同一后端。

这意味着对用户正在使用哪个后端的任何标识都应该一粒盐,因为用户可能在遇到问题的时间与发现正在使用哪个后端的时间之间在后端之间移动。但是它仍然是有价值的信息,因为在大多数情况下,它将有助于更快地找到相关日志。


感谢Kasperd,这很有帮助。我已经更新了问题,以注意会话持久性是在负载均衡器上配置的。
Willl
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.