《大规模Java平台虚拟化与调优》——2.3 Active-Active架构与现代化数据平台-阿里云开发者社区

开发者社区> 华章出版社> 正文

《大规模Java平台虚拟化与调优》——2.3 Active-Active架构与现代化数据平台

简介:

本节书摘来自华章计算机《大规模Java平台虚拟化与调优》一书中的第2章,第2.3节,作者:(美)Emad BenjaminLiang) 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.3 Active-Active架构与现代化数据平台

图2-25展现了位于两个数据中心中的4个active-active端。在数据中心-1中,有Active-1A和Active-1B端,在数据中心-2中,有Active-2A和Active-2B端。Active-1A、1B、2A和2B端都包含了典型企业级应用的所有分层。在本例中,我们使用SpringTrader作为参考应用。对于数据中心-1来说,企业级应用实例可能同时分布于Active-1A和1B中,对于数据中心-2来说,情况类似。如果Active-1A出现了故障,Active-1B中的应用实例将会继续为访问流量提供服务,而不管Active-1A何时恢复在线状态。这表明Active-1B必须要准备承担Active-1A


<a href=https://yqfile.alicdn.com/94fb6fb68e9b2451ff3c6951f82ee8b381f7e016.png
" >

完整的峰值负荷。当然,有时候这不一定是可行的,因此部分额外的流量会转向数据中心-2,尤其是数据中心-2的地理位置在60英里的距离之内时。SLA需求会决定采用什么样的方式,如何平衡硬件成本和位置对SLA和响应时间的影响。你还可以使用如上所示的一种变体,也就是数据中心-1和2在60英里以内,而数据中心-3可以通过WAN连接。
如图2-26所示,联合使用了全局负载平衡器(global load balancer,GLB)和本地负载均衡器(local load balancer,LLB)来实现应用的快速响应,使其不受地理位置的负面影响。GLB会将用户的流量转移到本地地理位置的LLB。(例如,伦敦的流量会被转移到位于伦敦的LLB上,纽约的用户访问会被转移到纽约的LLB上,而东京的流量会转发到东京的LLB上)。GLB会保持与所有LLB的心跳连接并作出最优的路由决策。


c98618855b063d1a607f6b4dbe01e4b263208db2

地理位置节点的LLB配置池中都具有到每个SpringTrader应用服务的入口。图2-26展现了3个LLB配置。
东京的LLB池配置实际上是在负载均衡器池中所配置的4个SpringTrader应用服务。LLB有4个分发流量的入口。这4个入口在逻辑上分为Active-1A和Active-1B,这表明Active-1A应用服务的VM位于相同的vSphere主机上,而Active-1B SpringTrader应用服务的VM位于另外一个vSphere主机上。这种模式的LLB配置在纽约和伦敦站点上是类似的。要注意的是,对SpringTrader应用服务的流量是通过负载均衡的,但是每个应用服务到SQLFire数据fabric的通信是通过定位器的(locator),在这个调用中并没有涉及负载均衡器架构。在SpringTrader应用服务和SQLFire数据成员之间如果使用负载均衡器拦截调用的话是一种多余的行为,vFabric SQLFire定位器进程能够胜任对数据fabric访问的负载均衡和负载调节功能。
此外,为了更清晰地展现配置的其余部分,此处省略了Web服务器池的细节。如果你要添加对Web服务器池的单独配置,Web服务器会将LLB的流量分发到应用服务的LLB池中,理想情况下,要按照最少连接(least-connection)类型的调度算法。这意味着前端池(在本例中,也就是本地LLB Web服务器池)从GLB接收到访问流量,然后Web服务器池会将流量转发到应用服务的本地LLB中。在流量分发到具体的SpringTrader应用服务时,很重要的一点就是维持会话黏性(session stickiness)。注意,建议避免只有一个LLB Web服务器池(这意味着每个Web服务器池成员只指向一个具体的SpringTrader应用服务),这会提供一种不准确的容错性服务水平。SpringTrader应用服务,本质上也就是一个vFabric tc Server实例,可能会出现故障,但因为服务水平的测试是针对LLB Web服务器成员的,因此可能会产生误报(false positive)。最好是遵循双LLB的方式,在本地LLB所管理的地理节点中,有一个池用于Web服务器,另一个池用于SpringTrader应用服务。从active-active部署架构的视角来看,企业级应用层包含了两个主LLB池。第一个池中是一组vFabric Web服务器实例,它会将请求流量分发到第二个池中。到第二个池的典型分布式算法是最少连接算法。第二个池由vFabric tc Server实例组成,以无状态的方式运行,实际上,Web服务器和tc Server本身都是无状态的。没有必要再配置额外的Web服务器和tc Server集群,LLB会负责分布式流量。从Web服务器池到tc Server池的分发基于最少连接分布式算法,因此SpringTrader的会话一旦被初始化,在整个用户-会话/浏览器生命周期活动中,会话会保持粘性。
图2-27扩展了图2-26中的LLB池配置,在这个图中展现了2个LLB池,一个用于vFabric Web服务器,另一个用于vFabric tc Server实例。


fed690f7b6a89099d3f81952582dee716068b6fb

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接