1.概述
阿里云负载均衡SLB的主备可用区提供了多个层级的高可用,可阅读《负载均衡SLB高可用的四个层次》。但很多用户常常在下单选购时,对可用区的选择感到困惑。到底如何选择SLB的主备可用区,如何搭配不同可用区的ECS,来构建高可靠应用系统呢?客官请听下文分解。
首先,我们要搞清楚一个事实,负载均衡SLB的可用区设计的初衷,是用来抵御可用区(机房)级别的重大灾情的,比如机房整体掉电,机房出口光缆中断等,即当某个可用区整体不可用时,备可用区才派上用场,也就是说只在上述情况下,SLB的主备可用区才会发生倒换。而并非用户的某个实例出现故障,就会自动发生主备倒换的,这是一个很典型的误区。
图注:当可用区A整体不可用时,SLB才会发生主备倒换
那么主备可用区应该如何选择比较合适呢?对于SLB的主可用而言,主要看用户的ECS主要分布在那个可用区,SLB的主可用区和ECS的主可用区保持一致,将获得最小的访问延迟,但是我们并不推荐用户将所有后端ECS都放置与同一可用区中,这是因为一旦可用区出现灾情,用户所有的后端服务器全部都无法提供正常服务,应用系统就彻底瘫痪了。
下文我们分别针对单SLB实例和多SLB实例场景,介绍高可用部署的最佳实践。
2.单SLB实例场景下的高可用部署建议
SLB实例主可用区选择可用区A,备可用区选择可用区B,大部分ECS部署在可用区A,另外一少部分ECS部署在可用区B。这里为之所以将大部分ECS放置与可用区A,而少部分ECS放置于可用区B,是因为SLB绝大部分时间都是主可用区实例在工作(毕竟可用区级别的灾情是非常罕见的),而SLB和ECS处于同一可用区时,拥有最小的访问延迟;同时部署一小部分ECS与可用区B是为了万一出现了可用区A整体不可访问的情况时,可用区B还有ECS可以维持系统的正常工作。而如果所有的ECS都部署在可用区A,那么一旦出现可用区灾情时,整体服务就不可用了。
以上介绍的是单SLB实例的高可靠部署方案,虽然用户只购买了一个SLB实例,但是由于SLB本身提供了主备可用区的冗余,因此基本上消除了系统中的单点故障,对于一般的系统应用而言,这样的部署方案已经可以基本满足高可用需求。
但是对于特别重要的业务,对可用性要求极高的业务,单SLB实例的部署方案显得不足了,原因就是上面提到的,只有可用区整体不可用时,才会发生SLB主备切换,因为配置不正确、网络攻击或其他异常因素导致的用户实例不可用,这是由于不满足可用区整体不可用的条件,因此并不会触发主备切换动作,此时用户的业务就有可能受损了,对于这类用户而言,我们建议使用不同可用区多SLB实例的部署方案,详见下文。
3.多SLB实例场景下的高可用部署建议
对系统可用性要求特别高的用户,建议用户在可用区A和可用区B分别购买SLB实例,同样ECS也分别在可用区A和可用区B购买,将可用区A和可用区B的ECS分都挂载于不同可用区的SLB实例后端,前端再使用全球负载均衡(云解析DNS)进行调度,用户通过域名来访问服务。这样部署的好处如下,不论是可用区级别的故障,还是用户SLB实例级别的故障,或者是后端ECS的故障,系统都具备容灾能力,另外由于前端使用了云解析DNS,在遇到访问量突增时,还可以通过横向扩展SLB实例来提升系统的整体处理能力,另外随着企业的逐步发展,还可以通过在异地部署SLB和ECS来实现多地多活的云上业务架构,因此该方案是对系统高可用要求非常高的用户首选部署方案。