对于企业而言,无论业务是否上云,服务的稳定性和连续性一直都是至关重要的。为了降低不可抗力因素对服务的正常运行造成的影响,您需要努力提高产品的高可用性和容灾能力。虽然目前的产品已经有很高的可用性了,但是仍不能忽视构建服务高可用性和容灾的重要性。

为了提高服务的高可用性和容灾能力,通常会使用到如下几种云产品:云服务器ECS、负载均衡SLB、数据库RDS以及对象存储服务OSS。

可用区(Zone)

可用区是指在同一地域内,电力和网络互相独立的物理区域。同一可用区内的 ECS 实例网络延时更小。

在同一地域内可用区与可用区之间内网互通,可用区之间能做到故障隔离。是否将云服务器 ECS 实例放在同一可用区内,主要取决于对容灾能力和网络延时的要求。

  • 如果您的应用需要较高的容灾能力,建议您将 ECS 实例部署在同一地域的不同可用区内。
  • 如果您的应用在实例之间需要较低的网络时延,则建议您将 ECS 实例创建在相同的可用区内。

您可以在地域列表中查看每个地域的可用区数量。您也可以在 OpenAPI Explorer 上通过 API 接口地域列表查看完整的可用区列表。

产品介绍

ECS

云服务器Elastic Compute Service(ECS)是阿里云提供的一种基础云计算服务。ECS实例作为一个虚拟的计算环境,包含了CPU、内存、操作系统、磁盘、带宽等最基础的服务器组件,是ECS提供给每个用户的操作实体。

您无需提前采购硬件设备,而是根据业务需要,随时创建所需数量的云服务器实例。使用过程中,随着业务的扩展,您可以对云服务器进行扩容磁盘、增加带宽。如果不需要了,您还可以释放资源,节省费用。

云服务器ECS实例本身没有高可用性和容灾功能,需要通过架构搭建来实现。

SLB

负载均衡(Server Load Balancer)是将访问流量根据转发策略分发到后端多台云服务器(ECS实例)的流量分发控制服务。负载均衡扩展了应用的服务能力,增强了应用的可用性。

负载均衡通过设置虚拟服务地址,将添加的ECS实例虚拟成一个高性能、高可用的应用服务池,并根据转发规则,将来自客户端的请求分发给云服务器池中的ECS实例。

关于负载均衡在提高服务器高可用性和容灾中的作用,可以从以下 2 点来阐述:

  • 负载均衡的服务提供是基于集群部署的。各集群有一定数量的节点,避免了单点故障,个别或者部分节点服务器宕机不会影响负载均衡服务的提供。

    负载均衡系统中四层负载均衡(LVS)服务、七层负载均衡(Tengine)服务和控制系统等关键组件都采用集群化部署,以提高扩展性和可用性。

  • 当前提供的负载均衡实例大多是多可用区实例,主备实例在同城不同的可用区机房。当主实例机房出现故障,能及时进行切换,来实现容灾和服务的高可用性。想了解多可用区在各个地域的分布情况,请点击这里

RDS

阿里云关系型数据库(Relational Database Service,简称 RDS)是一种稳定可靠、可弹性伸缩的在线数据库服务。基于阿里云分布式文件系统和高性能存储,RDS 支持 MySQL、SQL Server、PostgreSQL 和 PPAS(Postgre Plus Advanced Server,一种高度兼容 Oracle 的数据库)引擎,并且提供了容灾、备份、恢复、监控、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。

  • 关于单机基础版RDS,请点击这里
  • 对于双机高可用版RDS,您可以在同一可用区有主备实例。在主实例出现故障时可以进行主备切换,具有高可用和容灾特性。
  • 关于多可用区RDS,其主备实例在不同可用区。
  • RDS之间还可以用DTS同步和迁移数据。
OSS

阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以通过调用API,在任何应用、任何时间、任何地点上传和下载数据,也可以通过Web控制台对数据进行简单的管理。OSS适合存放任意类型的文件,适合各种网站、开发企业及开发者使用。按实际容量付费真正使您专注于核心业务。

文件以Chunk分块方式存储,默认每块存三副本,并分布在不同机架的ChunkServer节点上。在盘古集群中Master允许宕机1台,Chunkserver允许同时宕机2台,KVServer与WS允许宕机多台。

针对服务高可用性以及容灾功能的具体架构和搭建过程,下面作详细介绍。

多可用区SLB + 不同可用区ECS

如下图所示,在负载均衡实例下绑定不同可用区的 ECS,当可用区A未出现故障时,用户访问流量如蓝色实线所示;当可用区A发生故障时,用户访问流量的分发将变成黑色虚线,这样即可以避免因为单个可用区的故障而导致对外服务的不可用,也可以通过不同产品间可用区的选择来降低延迟。



关于上述架构的搭建流程,请参照如下步骤。

  1. 登录阿里云控制台,选择负载均衡,单击右上角创建负载均衡

    以华北2为例,购买主可用区B、备可用区A的多可用区实例。



  2. 在SLB主备可用区分别创建ECS实例。
    分别在华北2可用区A和B创建测试实例,本例中采用默认安全组,专有网络(VPC),1核2G内存CentOS 7.2实例。

  3. 创建监听并添加后端服务器。
    1. 在负载均衡控制台界面,找到创建的实例,单击管理
    2. 单击后端服务器,选择未添加的服务器,找到对应实例并单击添加

    3. 完成后,您可以在已添加界面看到对应ECS实例及其权重。
    4. 单击左侧监听栏,选择添加监听,根据需要选择监听属性。本例中采用TCP四层模式,监听80端口,后端转发80端口,使用默认加权轮询,并开启会话保持,使用默认1000s超时时间。

    5. 设置健康检查为TCP模式,检查后端80端口。
    6. 完成上述操作后,您可以在监听页面看到添加的监听及其状态。
      说明 后续客户只需要在ECS上部署相关服务并监听80端口,并将域名解析到SLB公网IP,那么负载均衡即可将请求转发到后端ECS并提供服务。

多可用区SLB + 不同可用区ECS + 高可用RDS

关于多可用区的RDS架构,如下图所示:



对于没有多可用区RDS的地域,可以在对应可用区分别建立一台RDS,其中备用可用区作为备库,跟主可用区的RDS实例进行同步。



关于多可用区RDS的搭建流程,具体如下所示:

  1. 在多可用区SLB和不同可用区ECS的基础上,购买RDS实例。

  2. 选择其中具有多可用区RDS的地域。
  3. 完成购买后,您可以在控制台进行查看。

    同样在控制台中,您可以查看RDS高可用信息以及进行主备切换,如下图所示。



针对不同可用区分别搭建RDS的情况,具体示例如下所示。

  1. 分别在可用区A和B购买双机高可用RDS。
  2. 创建DTS同步。

高可用性-异地容灾

在同城多可用区的情况下,异地也同时部署一套环境,可以更大程度地提高服务的高可用性,并达到异地容灾的目的。



说明 最终的服务访问区域可以通过配置DNS解析来实现,同时RDS用DTS同步来实现。