图3-25 网络层 B/S请求转发拓扑图
如图所示,一个站点部署多台Web服务器,不组成集群,在SLB (F5 LTM)上创建两个资源池,将一个站点内部的所有Web服务器组成一个资源池。双活数据中心方案分别创建 DC1资源池和DC2资源池;
一个站点部署多台应用服务器,跨站点将同类应用服务器组成AA集群。 两个数据中心的应用服务器集群均连接跨DC的数据库集群。 HTTP Session持久化管理
一个HTTP Session是指一个用户在同一个浏览器上对服务器发出的一系列请求。HTTP Session使得运行在Web容器上的应用能够跟踪记录每个用户的一系列操作。Session持久化管理是指客户的所有后续请求都会被分发到同一台应用服务器上。通过 Session持久化管理,系统的性能会得到提高,因为各个应用服务器不需要重新创建和维护Session信息,
[键入文字]
而且这样也避免了前面Session丢失的情况。
应用服务器集群跨数据中心创建,使用内存同步完成Session持久化管理,即使跨数据中心访问,也不会Session丢失。 负载均衡
B/S应用的双活负载均衡,流程如下:
1.SLB接受到新的HTTP请求,根据负载均衡算法分发到Web服务器;
2.Web服务器接受到SLB分发下来的新的HTTP请求,然后在资源池中选择应用服务器节点进行转发。
a.HTTP Session持久化检查,检查请求的Cookie或URL中的jSession id参 数。如果匹配,那么插件就会将请求转给这台应用服务器。 b.如果不能匹配。插件会根据既定规则寻找合适的应用服务器。
3.Web服务器通过TCP/IP协议将浏览器请求转发给应用服务器。如果请求转发成功,应用服务器返回成功的TCP/IP ACK回复。如果超时无回复,Web服务器会返回一个500错误。
4. 返回应用服务器处理请求结果。发送请求后,Web服务器会进入等待状态。当应
用服务器返回对应的结果后,Web服务器结束其等待状态。如果请求处理失败, Web服务器会把应用服务器标为不可用的状态,并将请求转给另一台应用服务器。
3.3.2 C/S应用双活
C/S业务一般对外提供IP访问,例如使用一款Client软件,使用IP地址、用户名和密码登录某款应用。
如果C/S应用不支持分布式部署。主路由只能在一个数据中心发布,所以应用只能在单数据中心运行,但支持故障自动切换至备站点。将不同应用分布到2个数据中心运行。 图3-26 C/S应用双活原理(IP访问,C/S应用不支持分布式部署)
[键入文字]
如果C/S应用支持分布式部署,在两数据中心运行(对外使用不同IP地址)。手动配置客户端对应的服务器端IP,将不同客户负载均衡到两个DC;
图3-27 C/S应用双活原理(IP访问,C/S应用支持分布式部署)
[键入文字]
3.3.3数据库双活
数据库层双活通过数据库集群实现,在业界主要分为两种方式:A/S (Active- Standby)集群与 A/A (Active-Active)集群。
常见的 Active-Standby 集群系统有:IBM PowerHA、HP ServiceGuard、Microsoft WSFC、Veritas Cluster Server等。在主节点故障后,集群备节点将自动重新启动应用系统,无需管理员干预,即所谓的“故障切换(Failover)”管理员需要提前在所有集群主备节点上部署集群软件,由集群软件控制文件系统的挂载,应用系统服务的启动,以及公网IP地址的配置。主备集群架构如图3-28所示:
图3-28 A/S集群
Active-Active集群的多个集群节点可以同时提供同一项服务。采用Active-Active集群,可以做到故障的无缝切换,而且可以提升应用系统整体性能。当前典型、应用最广泛使用的是 Active-Active 集群,例如 Oracle RAC(Real Application Cluster)集群系统。Active-Active集群架构如图3-29所示: 图3-29 A/A 集群
[键入文字]
3.3.3.1 Oracle RAC 双活
Oracle RAC以共享存储为基础,通过共享的存储资源,实现各节点对数据文件、重做日志文件、控制文件和参数文件的并行访问,且在单个节点出现故障时,业务能自动切换到正常节点,从而保证数据库系统正常可用。
存储双活提供的双活LUN作为共享卷,实现跨数据中心的Oracle Extended RAC集群构建。Oracle Extended RAC集群配合Oracle监听器技术,可实现客户端在数据中心间业务双活访问和负载均衡;配合Oracle透明应用程序故障转移(TAF)技术,当服务器或单数据中心故障时,使客户端能够在新的连接中继续工作,防止业务中断。 在出现中间网络心跳链路故障时,Oracle RAC会采用如下的原则进行仲裁:
? 拥有最多节点数目的子集群(Sub-cluster with largest number of Nodes)获胜。 ? 若子集群内数目相等则拥有最低节点号的子集群(Sub-cluster with lowest node
number)获胜。
Oracle RAC建议采用“2+1”的部署方式,数据中心A部署2台服务器,数据中心B 部署1台服务器。保证在出现心跳链路故障时数据中心A的实例优先存活。若节点数一致,则建议部署时将节点号小的服务器部署在数据中心A。
Oracle Extended Distance Cluster 节点部署如图 3-30 所示: 图3-30 RAC网络拓扑图
[键入文字]