高可用的好处
高可用架构可以提供业务分发、弹性扩展、以及多可用区部署等功能。相较于使用单台ECS实例部署数据库与应用,对于高可用只需要简单部署,并且拥有更高的稳定性和可扩展性。
有句古话“牵一发而动全身”。
面对一个庞然大物,如果没有一个合理的分工分层,任何一个小小事务都会无限放大,酿成巨大灾难。
万物想通,回到我们的软件架构。
早期的系统都是单体系统,比如电商业务,会员,商品,订单,物流,营销等模块都堆积在一个系统。每到节假日搞个大促活动,系统扩容时,一扩全扩,一挂全挂,只要有一个接口出了问题,整个系统都不可用。
系统拆分成子系统,每个子系统只负责专属的业务功能,做好春之花建设,各个子系统之间做好边界隔离,降低风险蔓延。
高可用架构有如下特点:
- 1. 使用多可用区高可用版的负载均衡SLB(Server Load Balancer)能对多台云服务器ECS进行流量分发,能够扩展应用系统的对外服务、能够消除单点故障,提升应用系统的整体可用性,我们如果使用SLB能够自动跨可用区进行部署,能够加强业务容灾能力。
- 2. 另外用自定义镜像,可以迅速复制出相同应用部署的云服务器ECS实例,之后把实例添加到SLB后端服务器组里面,实现业务的高可用。SLB可以同时配置四层以及七层监听,及轮循、加权轮循、加权最小连接数等多种算法,这样能够合理分配后端ECS计算资源。
- 3. 最后用云数据库RDS,针对高并发场景进行特殊优化,同时也引入线程池、并行复制、隐含主键等功能保证系统持续稳定和高吞吐。这样云数据库CloudDBA就具有完备的性能监控数据,实时监控实例的各种硬件使用指标、慢SQL,并给出各种优化建议供你选择,帮您快速定位出并顺利解决问题。
部署流程
如果您现在已拥有一台ECS实例,并且在该实例上部署了数据库与应用,现在可以将单实例部署方式转变为单可用区或多可用区高可用架构,教你如何使用ECS、EIP、SLB和RDS产品来部署多可用区高可用架构,看下图
第一步,使用自定义镜像,部署多台相同配置的ECS实例;
第二步,创建负载均衡SLB实例,把实例添加到SLB后端服务器组里面,用于跨可用区挂载ECS实例,实现业务的高可用性。详情参考如何配置SLB实例;
第三步,使用DTS将ECS实例上的自建数据库迁移至RDS实例,保障业务数据库不中断,自动备份保障数据不丢失。详情请参考迁移自建数据库至RDS实例;
第一步 复制ECS实例
为了支持跨可用区容灾部署,本教程使用源实例的自定义镜像复制出三台ECS实例出来,一台与源实例位于同一可用区,两台与源实例位于同一地域下的不同可用区
1 前提条件
- 已经注册阿里云账号,如果还未注册,请先完成账号注册
- 已经拥有待复制的一个源ECS实例
2 操作步骤
- 给ECS实例创建自定义镜像
- 登录ECS管理控制台。
- 在左侧导航栏,单击实例与镜像 > 实例。
- 在顶部菜单栏处,选择地域。
- 找到目标实例。在操作列中,单击更多 > 磁盘和镜像 > 创建自定义镜像。
- 输入镜像名称和描述信息。
- 单击创建。
说明 创建镜像需要一段时间,请您耐心等待。
在左侧导航栏,单击实例与镜像 > 镜像。当目标镜像的进度为100%、状态为可用时,表示镜像已经创建成功
- 用自定义镜像创建出3台ECS实例
- 在左侧导航栏,单击实例与镜像 > 镜像
- 在自定义镜像页面,找到上一步创建的自定义镜像,在操作列,单击创建实例
- 在自定义购买页面,镜像区域已设置为您选择的自定义镜像。根据页面提示,完成其他配置项并购买1台ECS实例。其中:
- 地域:选择与源实例相同的地域。
- 可用区:选择与源实例相同的可用区。
- 公网带宽:取消勾选分配公网IPv4地址。
- 地域:选择与源实例相同的地域。
- 可用区:选择与源实例不同的可用区。
- 实例区域:设置购买实例数量为2。
- 公网带宽区域:取消勾选分配公网IPv4地址。
- 更多配置详情,请参考使用向导创建实例。
3 执行结果
在左侧导航栏,单击实例与镜像 > 实例。在实例列表页面,四台ECS实例的状态均为运行中,可用区两两是相同的
第二步 配置SLB实例
ECS实例复制完成后,在支持多可用区的地域创建负载均衡SLB实例,能够用于跨可用区挂载ECS实例,扩展应用系统对外的服务能力、消除单点故障,提高应用系统的可用性,本文介绍SLB实例的部署方法。
1 准备工作
- 已复制三台ECS实例,更多信息,请参考复制ECS实例
- 四台ECS实例的Web服务均已启动并能够正常运行
注意 若Web服务未运行,则SLB实例与ECS实例之间无法正常通信的哈
2 操作步骤
- 首先创建SLB实例,具体操作,请参考创建实例,配置如下:
- 地域:必须与ECS实例位于同一地域。
- 可用区类型:选择多可用区。
- 实例类型:选择私网。
- 网络类型:选择专有网络。
- 主可用区和备可用区:按需配置。
- 把源实例的公网IP转成弹性公网IP,具体操作,请参考专有网络类型ECS公网IP转为弹性公网IP
说明 为避免影响业务,需保证源实例IP地址不变。所以,需要先把源实例的公网IP转换成弹性公网IP,然后与源实例解绑后,再把它绑定至高可用版SLB实例上面
- 解绑源实例与弹性公网IP
- 在源实例的IP地址列,单击弹性IP地址链接。
- 在弹性公网IP页面,单击解绑。
- 单击确定。更多信息,请参考解绑EIP
- 绑定弹性公网IP到SLB实例上面
- 在弹性公网IP页面,找到与源实例解绑后的弹性公网IP
- 在操作列,单击绑定。
- 实例类型选择SLB实例,SLB实例选择刚创建的SLB实例,单击确定。更多信息,请参考绑定SLB实例
- 配置SLB实例,具体操作,请如何配置配置实例,基本配置如下:
- 在协议&监听页签,完成以下配置。
- 负载均衡协议:选择TCP。
- 监听端口:输入
80
。 - 调度算法:按需选择。本教程选择轮询。
- 其他配置使用默认值。
- 单击下一步。在后端服务器页签,选择默认服务器组,单击继续添加添加ECS实例
- 勾选源实例和已复制的三台ECS实例,单击下一步:配置权重和端口号。端口配置为80,其他值保持默认,单击下一步
- 在健康检查页签,使用默认值,单击下一步。
- 在配置审核页签,核对信息后,单击提交。
- 单击确定,返回实例管理页面,单击,当健康检查状态为正常时,表示后端ECS实例可以正常处理负载均衡转发的请求了。
说明 健康检查需要几分钟时间,请您耐心等待并单击刷新图标查看状态。
第三步 执行结果
为方便测试,本教程分别在四台ECS实例上搭建了静态网页,来标识每台ECS实例。在浏览器中输入负载均衡实例的服务地址,测试负载均衡服务。由于调度算法为轮询,那么请求会轮流发往每台ECS实例里面。
将源ECS实例上的数据库迁移至高可用版云数据库RDS,可实现数据库服务的高可用性、高可靠性、高安全性和高易用性。以MySQL数据库为例,介绍如何使用DTS将ECS实例上的自建数据库迁移至高可用版RDS实例上面
1 准备工作
- 已配置SLB实例,详情请参考配置SLB实例
- 已经创建高可用版RDS实例,并且部署方案为多可用区部署。但是未创建,请参考创建RDS MySQL实例
- 已为RDS实例创建账号。但是如未创建,请参考创建数据库和账号
- 已为ECS实例上的自建数据库创建非root账号,用于DTS迁移。例如,您可以运行以下命令为MySQL数据库创建名为dts、密码为123456的账号
grant all on *.* to 'dts'@'%' IDENTIFIED BY '123456';
2 背景信息
DTS提供的数据迁移功能能够支持同异构数据源之间的数据迁移,同时提供了库表列三级映射、数据过滤多种ETL特性。
您可以使用DTS进行零停机迁移,在迁移过程中,源数据库正常持续提供服务,最大程度降低迁移对业务的影响。DTS支持的数据库类型请参考数据迁移
3 操作步骤
- 登录数据传输DTS控制台
- 在左侧导航栏,单击数据迁移
- 选择目标RDS实例所在地域,并单击创建迁移任务
- 配置迁移任务
- 配置任务名称。您可以使用默认的名称或者自定义名称。
- 配置源库信息。DTS支持通过公网、VPN网关、专线及智能网关访问的自建数据库。本教程使用的源数据库为ECS实例上的自建数据库。其他类型数据库的迁移方案;
参数名称 | 描述 |
实例类型 | ECS上的自建数据库。 |
实例地区 | 源ECS实例所在地域。 |
ECS实例ID | 源ECS实例的实例ID。DTS支持经典网络及专有网络的ECS实例。 |
数据库类型 | 源ECS实例上自建数据库的类型。本示例中,数据库类型为MySQL。 |
端口 | MySQL数据库监听的端口号。 |
数据库账号 | 源ECS实例上MySQL数据库的非root账号。 说明 数据库账号必须填写非root账号,否则测试连接时会报错。 |
数据库密码 | 非root账号对应的密码。 |
- 单击源库信息右下角的测试连接。当返回的结果为测试通过时,表示源库连接正常。
- 配置目标库信息。
参数名称 | 参数值 |
实例类型 | RDS实例。 |
实例地区 | RDS实例所在地域。 |
RDS实例ID | RDS实例的实例ID。 |
数据库账号 | RDS实例的账号。 为RDS实例创建账号,请参考创建数据库和账号。 说明 数据库账号必须填写非root账号,否则测试连接时会报错。 |
数据库密码 | 账号对应的密码。 |
- 单击目标库信息右下角的测试连接。当返回的结果为测试通过时,表示目标库连接正常。
- 单击授权白名单并进入下一步。
- 配置迁移类型及迁移对象。
- 配置迁移类型。
- 业务零停机迁移,请选择:结构迁移+全量数据迁移+增量数据迁移。
- 全量迁移,请选择:结构迁移+全量数据迁移。
- 配置迁移对象。在迁移对象框中单击要迁移的数据库对象,如数据库、表或列,然后单击>添加到已选择对象框中。
说明
默认情况下,数据库对象迁移到ECS自建MySQL实例后,对象名跟本地MySQL实例一致。如果迁移的数据库对象在源实例跟目标实例上名称不同,您需要使用DTS提供的对象名映射功能,详情请参见库表列映射
- 单击预检查并启动。在迁移任务正式启动之前,会预检查连通性、权限及日志格式等。下图表示预检查成功通过
- 预检查通过后,您可以在迁移任务列表中查看迁移任务的迁移状态及进度
- 已部署完成