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

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

我想测试对负载平衡器后面的两个服务器之间的单向同步进行一些配置更改(仅供参考,这都是 Rackspace Cloud 基础设施)。我遇到的问题是,我无法分辨我被负载平衡到哪个服务器,因为我给出的 IP 始终是负载平衡器的 IP。

有没有一种简单(甚至不是很简单)的方法来判断我实际上被定向到哪个服务器。我理想情况下希望在浏览器中使用某些功能,因为这意味着非技术团队成员也可以相对轻松地报告问题,但如果有任何关于最佳方法的想法,我将不胜感激。

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

答案1

如果你想谨慎行事,只需让网络服务器在Server:响应标头中标识自己(RFC 2616 第 14.38 节)。例如,在 Apache 中,该标头中返回的信息由ServerTokens指令。然后,只需检查响应标头即可萤火虫Chrome 开发者工具, 或者Safari Web Inspector 时间线

如果您想让其显而易见,您可以让您的 Web 应用程序将服务器名称嵌入到其生成的页面中作为可见文本。您还可以在 HTML 注释中报告服务器名称,这需要查看源代码才能看到。

答案2

您没有说明您正在使用哪种协议,所以我假设我们正在讨论 https。

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

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

负载均衡器可以记住过去一小时内看到的所有客户端 IP 地址最近使用的后端,以便大多数时间重复使用相同的后端。负载均衡器无法获得任何更详细的信息(例如 cookie 和用户 ID),因此它无法使用这些信息将用户保持在同一个后端上。

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

相关内容