我正在使用amazon route 53将DNS请求路由到负载均衡器。对于负载平衡,我使用ha-proxy负载均衡器路由53将请求路由到ha-proxy。
在路线53中,我给了三个负载平衡器33.33%的重量。假设当客户端发出路由请求53时,将请求路由到第一个ha代理服务器并建立tcp连接。
所以问题是当客户提出第二个请求时它会去哪里?是否有可能第二个请求转到已建立tcp连接的第一个服务器?
图像中有三个服务器,并且还有使用route-53 DNS加权的ha-proxy的route-53客户端请求。
答案 0 :(得分:1)
下一个请求的位置没有明确定义。如果您在DNS响应上设置了一个简短的TTL,那么保证会比预期的少,因为客户端可能会忽略或无法访问TTL信息。
然而,您仍然需要简短的TTL,以便客户端不会遇到停止服务的代理的A记录。
将DNS加权为33.3%可能不是最好的计划。您可以使用每个DNS响应返回所有健康代理的IP地址 - 不需要平衡命中每个代理的请求数。
让我验证一下我对设置的理解。假设这是正确的,这里的其余答案应该是适用的。
情景:
您有多个HAProxy服务器,模式tcp,终止TLS,并使用leastconn平衡对后端服务器的请求,以便具有最少连接数的后端服务器将接收下一个传入连接。
分析:
您希望在后端平衡事物,因此您无需在正面加权DNS响应以使其正常工作。您真正需要做的就是对代理进行健康检查,如果代理的IP地址不健全,则不要通告代理的IP地址。否则,返回每个DNS响应的所有代理地址。
理由:
客户端连接到哪个代理并不重要。返回所有地址将以随机顺序返回它们,客户端将任意使用一个。
每个代理保留自己对每个后端的连接数的计数,并始终将连接发送到从其角度来看具有最少连接的后端。它不需要知道其他代理所持有的连接数,因为每个代理独立地确保向每个后端服务器发送相同数量的连接。因此,在峰值需求时,每个代理发送到每个后端的连接数在每个代理中将是相同的+/- 1,并且在代理之间相同,仅受DNS的随机性...以及不平衡正面会自行取消,因为如果一个IP地址收到的流量多于其他IP地址,那只表示该代理的所有后端的连接数高于其他地址的数量,但不管这个数字是多少,它在峰值负荷时仍然是+/- 1 - 而峰值负荷下的分布应该是你唯一真正关心的问题。
随着越来越多的客户端断开而不是连接,您将离开一段高峰需求(按照定义),并且连接数量往往会减少平衡,但这也无关紧要,因为代理将当新连接到达时,它会立即再次退出 - 它们将自动从该代理的角度给予服务器连接最少的连接,并且我们已经假设此时您没有达到峰值需求,因此精确的平衡变得不太相关。在非高峰期间传送到任何一个后端服务器的并发连接数将不会超过使用此配置在峰值期间传送到服务器的连接数。