我有一个高可用性系统,如下图所示:
DNS RR -> Balancer1 \ \ HAproxy1 ---> Backend Servers HAproxy2 ---> Backend Servers HAproxy3 ---> Backend Servers / / DNS RR -> Balancer2
简而言之:两个带VIP的负载平衡器可以接收来自客户端的请求,然后在作为SSL卸载和后端平衡的3台HAproxy服务器之间进行分配。
我现在的问题是DNS RR。 它有它的好处,但我正在寻找一个更好的解决scheme,以在Balancer1和Balancer2之间分配客户端。 任何消化?
PS:GeoDNS不是一个选项。
您可以将CDN用作面向用户的客户端。 然后,您将利用CDN的function在您的平衡器主机之间平衡负载。 这可能包括DNS RR,但是CDN的configuration是已知和可pipe理的,所以您可以确信CDN将正确响应后端更改。
例如,您可以使用Akamai CDN路由用户请求。 然后,您可以使用Akamai全球stream量pipe理器(GTM)来控制Akamai使用的来源。 他们有一个可以使用的“故障转移”和“轮循”function,Akamai的健康检查人员将pipe理哪些来源可用。 如果他们在与您的来源交谈时遇到错误,他们也可以重试。
Amazon Cloudfront + Route53“加权”logging+ Route53健康检查以类似的方式完成。
即使您的内容不可caching,这也可以工作,因为CDN不必专门用于caching内容。 它具有将用户带入靠近“边缘”的控制生态系统的好处,并且对CDN->原始连接进行故障诊断比未知用户起源要容易得多。
这条路线也为您提供了一个DoS防护措施,因为您可以在边缘应用滤波器。