通过粘性会话和安全性对20台服务器进行DNS负载平衡

我在一个位置有20台服务器,我想做负载平衡。 无论如何,这可以达到100。 有没有已知的方法来做到这一点? 我还希望有一些机制,当客户查询,如service.example.com,他将继续使用相同的服务器,直到机器由于失败从集群中取出。 客户端每分钟进行一次DNS查询,假设自上而下的DNSloggingTTL为30-60秒,其他时间可以在24小时左右,所以每次会话在初始查询后最长可以有效24小时,然后客户将切换到另一台服务器。

我发现L4-L7的负载均衡器相当无用,因为我想我只能使用DNS。

协议是仅基于二进制的TCP连接以及HTTP协议。

我在想,对于二进制连接(就像没有任何协议),我可以在DNS上使用循环,所以每次查询DNS时,我都会得到不同的响应。

对于HTTP这是我不知道的东西。 我可以把也许HAProxy就是这样,但对于DNS我不知道。

我曾想过以下方法。 发送客户到一些“master.example.com”,这是HTTP服务器只做redirect,这将生成唯一的FQDN,这意味着它就像一个会话ID。 这样,这个FQDN将总是parsing为相同的ip号码,并且只能用于为其查询的ip,在接下来的24小时或永远closures服务器。

所以这看起来像下面这样:

http://redirect.example.com/resource => http://67hkkdbvh.example.com/resource 

现在会议看起来像这样:

 1st minute: http://67hkkdbvh.example.com/resource/1 TTL 60s 2nd minute: http://67hkkdbvh.example.com/resource/2 TTL 60s 

如果67hkkdbvh将死亡,客户请求再次redirect。

现在我不知道如何使用HAProxy来帮助它?

当然,你可以使用DNS,但我更喜欢使用适当的负载平衡器(我使用Zeusstream量pipe理器 – 现在称为Riverbed Stingrays – 和Cisco ACE),它们不仅可以扩展,而且可以设置它们来探测实际的服务器响应只是无所事事,所以你可以把它们停止服务而不做任何改变。 虽然不是免费的。

听起来你想要复制一个负载均衡器工作的确切方式,所以真正的问题是:负载均衡器做/不做你想要/不想做的事情?

你试着看看haproxy ? 看来stackexchange 正在使用它 。 这在HA集群中可以是更为优雅的解决scheme,它将为您提供故障切换function。