陈善亮 2017-12-13
针对企业而言,不管业务是不是在云上,服务的稳定和连续性总归是无法回避的话题,为了降低不可抗力因素对服务提供造成的影响,我们有了高可用性和容灾的概念。虽然我们的产品已有很高的可用性,我们仍不能忽视构建服务高可用性和容灾的重要性。
针对一般企业而言,主要会用到ECS, SLB, RDS, OSS
ECS
云服务器。相当于阿里云上的虚拟机,本身没有高可用性和容灾,需要通过架构来实现。
SLB
负载均衡,高可用性和容灾可以从两点来阐述:
1. 负载均衡的服务提供是基于集群部署的,各集群有一定数量的节点,避免了单点故障,个别或者部分节点服务器宕机不会影响负载均衡服务的提供。
2. 当前提供的负载均衡实例大多是多可用区实例,主备实例在同城不同可用区机房,当主实例机房出现故障,能及时进行切换,来实现容灾和服务的高可用性。
多可用区实例分布可以参考:
https://help.aliyun.com/document_detail/52395.html
RDS
云数据库。
单机基础版RDS:https://help.aliyun.com/document_detail/48980.html
双机高可用版RDS:在同一可用区有主备实例,在主实例出现故障时候可以进行主备切换,具有高可用和容灾特性.
多可用区RDS:主备实例在不同可用区
RDS之间还可以用DTS同步和迁移数据。
OSS
文件以chunk分块方式存储,默认每块存三副本,并分布在不同机架的ChunkServer节点上。在盘古集群中Master允许宕机1台,Chunkserver允许同时宕机2台,KVServer与WS允许宕机多台。
一. 多可用区SLB + 不同可用区ECS
如下图所示,在负载均衡实例下绑定不同可用区的 ECS,当可用区A未出现故障时,用户访问流量如蓝色实线所示;当可用区A发生故障时,用户访问流量的分发将变成黑色虚线,这样即可以避免因为单个可用区的故障而导致对外服务的不可用,也可以通过不同产品间可用区的选择来降低延迟。
搭建:
1.创建多可用区SLB实例
登录阿里云控制台,选择负载均衡,点击右上角“创建负载均衡”按钮
以华北2为例,购买主可用区B、备可用区A的多可用区实例。
2.在SLB主备可用区分别创建ECS实例
分别在华北2可用区A和B创建测试实例,本例中采用默认安全组,经典网络,1核1G内存CentOS 7.2实例。
3.创建监听并添加后端服务器
在控制台负载均衡界面,找到创建的实例,点击“管理”
点击后端服务器,选择未添加的服务器,找到对应实例并点击“添加”
我们可以在已添加界面看到对应ECS实例及其权重
点击左侧监听栏,选择“添加监听”,根据需要选择监听属性。本例中采用TCP四层模式,监听80端口,后端转发80端口,使用默认加权轮询,并开启会话保持,使用默认1000s超时时间。
设置健康检查为TCP模式,检查后端80端口
之后我们可以在监听页面看到添加的监听及其状态。
后续客户只需要在ECS上部署相关服务并监听80端口,并将域名解析到SLB公网IP,那么负载均衡即可将请求转发到后端ECS并提供服务。
二. 多可用区SLB + 不同可用区ECS +高可用RDS
多可用区版RDS:
对于没有多可用区RDS的地域,可以在对应可用区分别建立一台RDS,其中备用可用区的作为备库,跟主可用区的RDS实例进行同步。
搭建:
多可用区RDS的情况:
在多可用区SLB和不同可用区ECS的基础上,购买rds实例:
只有部分地域有多可用区RDS:
购买后可以在控制台查看:
同样在控制台我们可以查看RDS高可用信息以及进行主备切换:
不同可用区分别搭建RDS的情况:
分别在可用区A和B购买双机高可用RDS。然后创建DTS同步
具体同步作业创建参考:
https://help.aliyun.com/document_detail/26633.html?spm=5176.doc26592.6.597.1CsqxD
三.高可用性-异地容灾
在前面同城多可用区的情况下,异地也部署一套环境。
具体访问哪边可以配置DNS解析,RDS用DTS同步。