在传统单中心单活环境下,负载(workload)也存在于应用服务器层和数据库层,所以这2个层也应该都要做负载均衡的。而在双活环境下,这2个层的负载均衡有什么不同的考虑点和策略?
首先我们要明确知道负载均衡的目的,从字面理解而言,建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性,这就要求我们,双活的环境也需要和传统单中心一样的架构,从某一个角度而言双活中心是一模一样的,而且由于双活的要求实际的情况更加复杂,因此很多时候双中心是耦合的,目前常见的双活中心,很多都是主备模式,更多的是做一个灾备的规划,有的双中心是分应用主备模式,数据库主备模式,这个就会造成一个问题,那就是木桶效应,尽量不要造成单个中心的短板,所以2个层的负载需要额外考虑性能问题,同时还有应用或者数据库切换和回退问题。
收起在双活环境最需要考虑的就是避免跨中心访问。所以对于负载均衡的直接需求就是在同中心内负载均衡就行。应用的调用也是一样。其他应用优先调用本地的应用服务器,本地应用服务器连接本地的数据库节点。所以无论是前面的F5设置,还是数据库客户端的偏好链接设置,都要按照这个原则来。
收起采用静态负载均衡,把不同客户端配到不同服务器。
容错问题:
每个客户端有主连接地址,如果主地址失效,自动连到副地址。
所以客户端不是透明的,需要一点点软件来支持。
如果双中心对等式双活,任意一笔业务请求可以分发到任意一个数据中心来处理,那么请求亲缘性问题如何解决?例如:end user发一个multi-page query request到双中心去处理,然后双中心返回了first-page response给end user,接着end user又发next-page request到双中心去处理,这个next-page request如何上次的multi-page query request处在(affinity)同一个app server来处理?关于这个有推荐的做法?
收起