在B/S应用中的双活设计一般考虑三个层次,分别是WEB层、APP层、DB层。一般web层的虚机不需要进行跨数据中心集群部署,因为web是无状态的,所以可以在2个数据中心独立进行集群部署,同时在每个数据中心部署独立的SLB,可以把SLB和WEB组合为一个资源池协同提供web相关服务。
在APP层和DB层就需要部署跨数据中心集群软件,从而实现应用层双活。
当客户侧http请求过来,SLB会呈现一个虚拟IP,对这个虚拟IP的访问会被SLB重定向到SLB后端的服务器资源池中的某一台虚机,即左右2边的WEB服务器会组成各自的资源池。
在SLB上让虚拟IP关联2个资源池即关联到2个数据中心(可以设置优先级)。这样客户可以就近优选资源池中的WEB来提供服务。如果当前资源池中的服务器全部出现故障,没关系,在SLB里还关联了另外一个即另外中心的资源池中使用右边的服务器处理。
无论客户在哪里,都是通过域名来访问的,不同的客户端访问的同一个域名可能会得到不同的IP地址,通过对不同IP地址的调度,将流量定义到不同的数据中心。
数据库主要和应用服务器对接,数据库双活一般都是AA的,也可以是AS。AA部署成本很高(AA服务器之间始终做状态同步即左边右边服务器内存里的状态要同步到右边服务器里去),若左边DB服务器挂了,I/O会定义到右端。同步的开销很大,但当发生故障时业务可以无时延的切换。