我有一个负载均衡器,它将流量分配到 5 个 Web 节点中的 1 个。当它为我提供内容时,有没有一种简单的方法可以告诉我正在与哪个 Web 节点通信。例如,我是否应该在 Apache 中实现 Header?在每个页面上添加一个隐藏的 HTML 元素?
加分点:人们会做什么来强迫自己进入一个特定的网络节点?
答案1
有多种方法可以解决这个问题。我最喜欢的方法,主要是因为它很容易,就是在 apache 配置中为每个服务器设置一个特定的 HTTP 标头,该标头仅包含主机名。如果您不想泄露底层主机名,您可以使用任意字符串。
# On host1
Header set ServerID host1
# On host2
Header set ServerID host2
# etc.
然后您可以在请求响应中看到相关的 HTTP 标头。
关于强迫您将自己定位到特定节点,这取决于您如何对服务器进行负载平衡的细节。
如果您正在运行无状态应用程序,而负载均衡器只是以循环或某种随机方式发送请求,那么您几乎无法强制自己到达特定的底层节点(除了关闭所有其他节点)。
然而,如果您的负载均衡器正在执行某种形式的 cookie 插入(或类似操作)以提供粘性会话,那么您通常可以定制一个请求,允许您强制自己进入特定的底层节点,但这很大程度上取决于所使用的方法。