1.概述
1.1. 基于负载均衡在阿里云上实现高可用集群的方法
阿里云的传统负载均衡CLB实例,可以在后端服务器组中绑定多台服务器,在实现负荷分散的同时,负载均衡还可以通过健康检查来判断后端ECS实例的可用性。健康检查机制提高了前端业务整体可用性,避免了后端ECS异常对总体服务的影响。
开启健康检查功能后,当后端某个ECS实例健康检查出现异常时,负载均衡会自动将新的请求分发到其他健康检查正常的ECS实例上,而当该ECS实例恢复正常运行时,负载均衡会将其自动恢复到负载均衡服务中。
1.2. 英诺天玑高可用集群软件的实现方式
在ECS实例高可用方面,有些课题负载均衡方式无法直接解决:
- 无法处理数据的迁移和恢复,不适用于数据库服务器
- 实例健康检查机制仅能通过端口的可达性来判断,无法检测到应用系统的进程故障,操作系统级别故障等。
- 负载均衡检测到ECS实例异常时,响应时间通常在几分钟到十几分钟
上述课题,利用安装在ECS实例内部的英诺天玑高可用集群软件可以轻松解决。
1) 利用英诺天玑的实时数据镜像复制功能,可以在两个ECS实例之间实时同步数据;
2) 利用英诺天玑的丰富的深层次健康状态检查程序,可以检测到影响业务运行的进程级别故障;
3) 英诺天玑在检测到故障后,将磁盘和业务服务切换到备机后,可以调用阿里云命令行接口(CLI)在数秒内完成负载均衡的后端ECS实例列表。
下面我们来讨论一下实现的过程。
2. 操作过程
该文档以Windows操作系统的ECS实例为例进行相关说明。
2.1. 搭建基本环境
搭建高可用集群环境的第一步,需要首先在阿里云上搭建基本的网络环境(专有网络,虚拟路由器,虚拟交换机,云防火墙等),之后创建云服务器ECS实例。并确保ECS实例之间网络连通。以下为验证环境的搭建过程。
2.1.1. 创建专有网络VPC
打开VPC菜单
https://vpc.console.aliyun.com/vpc/cn-beijing/vpcs
点击【创建专有网络】
设置名称和网段等信息
可同时创建第一个虚拟交换机,需要设置名称,网段,并选择可用区
可以参考右侧的专有网络架构预览
创建完成后,会自动创建专有网络VPC,虚拟路由器,虚拟交换机。
根据业务需要,可以追加其他的虚拟机交换机。
2.1.2. 创建安全组
进入云服务器ECS菜单后,在子菜单中选择 >网络安全>安全组
点击创建安全组,设置基本信息
在访问规则中添加英诺天玑所用到的端口(例如29000~29100,具体请参考英诺天玑的手册)
创建完成后确认访问规则列表
2.1.3. 创建2台云服务器ECS
请根据业务需要,可以在同一地域的不同可用区上分别创建2台云服务器ECS实例,并将两个实例连接到各自的虚拟交换机,实现跨可用区的高可用集群。如果需要在两个实例之间进行数据镜像同步,请在创建实例时为每个实例增加一个数据盘(数据盘大小和性能,请根据业务需要进行设置)。
2.1.4. 信息整理
在创建好ECS之后,整理相关信息(如下为本次验证环境信息,仅供参考)
|
ECS实例1 |
ECS实例2 |
实例ID |
i-2ze4cvv06cz31g3qmpfx |
i-2zeemwnuccrf4or0luws |
实例名称 |
ecs01 |
ecs02 |
可用区 |
北京 可用区K |
北京 可用区L |
主私网IP |
172.16.1.67 |
172.16.2.67 |
主机名 |
ecs01 |
ecs02 |
操作系统 |
Windows Server 2012 R2 数据中心版 64位中文版 |
|
专有网络VPC |
vpc-2zee5n1a4bwpaj9gjagqs |
|
安全组 |
sg-2zebhham2apu5cr6352t |
|
虚拟交换机 |
vsw-2ze5astbteszvrj3z0gzc (vSwitch1) |
vsw-2zeq8q076xprfnmd47ceb (vSwitch2) |
主弹性网卡 |
eni-2ze7mui52i4gtjp4w8cl 00:16:3e:16:f1:bc |
eni-2zegk14xa1zamvunxye4 00:16:3e:2e:8c:81 |
2.1.5. 验证网络互通
首先,利用VPC的路径分析功能,确认两个云主机ECS之间网络互通。
https://vpc.console.aliyun.com/nis/diagnosis/pathAnalysis
并在两个实例的控制台中确认实例之间是否可以互相Ping通。
2.2. 英诺天玑高可用集群软件的安装和基本设置
本文以<英诺天玑高可用集群软件标准版MD套件 for Windows>(简称天玑MD套件)为例进行安装和设置的说明。请通过北京英诺艾智的官网下载英诺天玑的安装程序和文档。
在进行安装操作之前,请先通过如下任意方式登录实例的操作系统
阿里云控制台ECS实例的Web终端
通过远程桌面访问实例的公网IP。
2.2.1. 确认环境并创建数据分区和集群分区
请分别在两个实例的数据盘中创建集群分区和数据分区
集群分区 (D: ) 1GB (1024MB以上即可,不需要格式化)
数据分区 (E: ) 5GB (根据业务需要划分)
2.2.2. 在2台ECS上分别安装天玑MD套件
登录ECS实例的操作系统后,请上传天玑的安装程序,并按照天玑的安装手册正常完成安装,安装操作与物理机环境下无任何差异。
安装完成后,请按照提示重启动操作系统。
2.2.3. 完成天玑基本配置,并添加镜像磁盘资源
操作系统重启动完成后,请登录ECS实例的操作系统,访问http://localhost:29003/ 打开Cluster WebUI。
在编辑模式下,首先根据2.1.4节整理的信息完成天玑的基本配置;再利用2.2.1节中创建的集群分区和数据分区,在失效切换组(failover)中添加镜像磁盘资源(md)
2.2.4. 验证集群运行正常
请通过手动切换或服务器关机/重启动等方式,验证天玑MD套件可以正常运行。
2.3. 阿里云负载均衡相关配置
2.3.1. 创建传统型负载均衡CLB实例
1)在工作台中选择传统型负载均衡CLB
https://slb.console.aliyun.com/slb/cn-beijing/slbs
2)选择创建传统型负载均衡
根据业务需要选择相关参数并创建负载均衡实例。需要确保ECS实例的地域和CLB实例的地域相同,并且ECS实例与CLB实例属于同一个VPC。
本次验证环境中所创建的负载均衡实例,作用在内网,未分配公网IP地址。如果需要向公网提供服务,创建弹性公网IP后与负载均衡实例绑定即可。
3)配置监听
请根据业务需要设置监听的协议和对外提供服务的端口
本次验证环境,协议选择HTTP,端口为29003
4) 后端服务器组
在配置向导中选择【新建虚拟服务器组】,并将在2.1.3节创建的ECS实例添加到服务器组中
5) 设置(关闭)健康状态检查
开启健康检查功能后,当后端某个ECS健康检查出现问题时,负载均衡服务会将请求转发到其它健康检查正常的ECS上,而当该ECS恢复正常运行时,负载均衡会自动恢复它的请求转发。
为了对ECS实例做更精准的深层次状态监控,因为我们需要由英诺天玑在ECS内部通过各种监视器来进行健康状态检查,并且是通过直接修改后端服务器组的成员列表的方式来确保请求能够由健康的服务器来处理。所以这里我们选择关闭负载均衡实例自身的健康状态检查。
6) 信息整理
创建完成后整理CLP实例相关信息如下,部分信息在后续操作中需要用到。
CLB实例ID |
lb-2zeb0oyau9mb6n5944bq7 |
可用区 |
北京 可用区 L(主) / 北京 可用区K(备) |
服务地址 |
172.16.2.65(未绑定弹性公网IP) |
所属网络 |
vpc-2zee5n1a4bwpaj9gjagqs vsw-2zeq8q076xprfnmd47ceb(vSwitch2) |
监听协议端口 |
HTTP:29003 |
后端服务器组 |
虚拟服务器组:SG01 |
服务器组ID |
SG01:rsp-2ze2jdjvlxgxu |
服务器组成员/ID |
ECS01:i-2ze4cvv06cz31g3qmpfx(北京 可用区K) ECS02:i-2zeemwnuccrf4or0luws(北京 可用区 L) |
后端协议端口 |
HTTP:29003 |
7) 确认负载均衡实例已经生效
在任意ECS实例上通过浏览器访问实例的服务地址和端口http://172.16.2.65:29003确认可以访问到ClusterWebUI界面
2.3.2. 在ECS实例上安装阿里云命令行接口
为了让英诺天玑可以在服务器切换之后自动修改CLI实例的设置,需要使用阿里云的命令行接口。
1. 安装和配置
请参考如下的手册,在两个ECS实例中完成阿里云命令行接口的安装和初始配置(注意:阿里云CLI配置和运行时均需要访问公网。)
https://help.aliyun.com/product/29991.html
2. 验证
安装和配置完成后,在每个ECS实例中验证如下命令可以正确执行:
aliyun slb DescribeRegions
该命令可以获取所有地域列表。请确认并记录所创建环境的地域(华北2北京)所对应的RegionId(cn-beijing),后续撰写命令时会用到。
2.3.3. 在天玑中添加脚本资源
下面通过天玑的脚本功能完成如下自动操作:业务运行在ecs01时,自动将负载均衡实例的后端服务器列表设置为仅包括ecs01(访问负载均衡实例的所有请求,均转发到ecs01);业务运行在ecs02时,自动将负载均衡实例的后端服务器列表设置为仅包括ecs02(访问负载均衡实例的所有请求,均转发到ecs02)
1. 打开天玑的WebUI后选择编辑模式
2. 添加脚本执行账户
在集群属性页面,选择【账户】页签,点击添加按钮
输入操作系统本地管理员账户Administrator和密码后点击确定(与配置阿里云CLI时所使用的账户一致即可)
3. 添加新资源
点击资源组failover右端的加号(+),添加新资源
4. 资源类型选择
选择“脚本资源”,为了便于识别,设置资源名称为ScriptCLB
5. 设置脚本
在详细页面选中Start Script(start.bat)后,点击编辑
清空原有脚本内容后,插入下面的内容(变量赋值部分替换成实际环境的值)
set RGID=cn-beijing set RSPID=rsp-2ze2jdjvlxgxu set SERVER01="[{'ServerId':'i-2ze4cvv06cz31g3qmpfx','Weight':'100','Port':'29003'}]" set SERVER02="[{'ServerId':'i-2zeemwnuccrf4or0luws','Weight':'100','Port':'29003'}]" rem Priority check IF "%CLP_SERVER%" == "OTHER" GOTO ON_OTHER1 rem On Server 1 aliyun slb ModifyVServerGroupBackendServers --RegionId %RGID% --VServerGroupId %RSPID% --OldBackendServers %SERVER02% --NewBackendServers %SERVER01% clplogcmd -m "Running on ECS Server 1 " GOTO EXIT :ON_OTHER1 rem On Server 2 aliyun slb ModifyVServerGroupBackendServers --RegionId %RGID% --VServerGroupId %RSPID% --OldBackendServers %SERVER01% --NewBackendServers %SERVER02% clplogcmd -m "Running on ECS Server 2 " GOTO EXIT :EXIT
上述SLB 替换服务器组中的后端服务器命令格式如下
aliyun slb ModifyVServerGroupBackendServers --RegionId [地域id] --VServerGroupId [服务器组ID] --OldBackendServers [旧服务器列表] --NewBackendServers [新服务器列表]
具体参数说明,请参考阿里云的手册:
https://help.aliyun.com/document_detail/35220.html
修改后点击确定保存
在详细页面点击调整按钮,在最下方的执行用户,选择administrator
该脚本将以Administrator用户的身份被执行(也可以用其他账户执行,与配置阿里云CLI时所使用的账户一致即可)
6. 上传配置
在编辑模式的主页面下点击应用配置文件,跟随提示进行操作,最新的配置信息将自动上传到两个ECS实例。
7. 在WebUI中,切换到操作模式
在状态页,可以看到新添加的脚本资源(ScriptCLB)还未启动,展开ScriptCLB后点击三角形按钮启动该资源
等待页面刷新后,可以看到脚本在ecs02这一端启动成功。
2.3.4. 功能验证
1) 打开负载均衡实例的属性页面,确认后端服务器列表与英诺天玑的WebUI显示的一致(均为ecs02)。
2) 通过负载均衡实例的服务地址(http://172.16.2.65:29003),确认可以访问英诺天玑的WebUI
3) 在WebUI的状态页,手动将资源组failover切换到ecs01
4) 刷新负载均衡实例的属性页面,确认后端服务器列表与英诺天玑的WebUI显示的一致(均为ecs01)。
5) 再次通过负载均衡实例的服务地址(http://172.16.2.65:29003),确认仍然可以访问英诺天玑的WebUI
2.3.5. 总结
至此,高可用集群环境的基础部分搭建完成(镜像磁盘+CLB控制脚本)。
后续可以在ECS实例中搭建业务系统,并通过英诺天玑进行监控和保护。配置过程与物理机环境没有任何差异。
- 利用CLB的请求转发功能可以将访问服务地址的请求自动转发到后端服务器组处理,而不需要关心具体由哪台ECS实例来处理请求;
- 英诺天玑则负责后端服务器的健康状态检查,在检测到故障后,自动将磁盘和业务服务切换到备机运行,然后自动调用阿里云命令行接口(CLI)在瞬间完成负载均衡的后端服务器组的ECS实例列表的替换。业务切换和实例列表的更新最短可以在数秒内完成。
- 并且,利用英诺天玑的实时数据镜像复制功能,可以在两个ECS实例之间实时同步数据,可以支持包括数据库,文件服务在内的广泛的应用类型。
3. 参考信息
3.1. 专有网络
专有网络是您专有的云上私有网络。每个专有网络创建成功后,系统会自动创建一个路由器。每个路由器关联一张路由表。
3.2. 虚拟交换机
创建专有网络后,您可以通过创建交换机(vSwitch)为专有网络划分一个或多个子网。同一专有网络内的不同交换机之间内网互通。您可以将应用部署在不同可用区的交换机内,提高应用的可用性。
3.3. 安全组
安全组是一种虚拟防火墙,用于控制安全组内ECS实例的入流量和出流量,从而提高ECS实例的安全性。
3.4. 云服务器
云服务器ECS(Elastic Compute Service)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备,让您像使用水、电、天然气等公共资源一样便捷、高效地使用服务器,实现计算资源的即开即用和弹性伸缩。
3.5. 弹性公网IP
弹性公网IP(Elastic IP Address,简称EIP)是可以独立购买和持有的公网IP地址资源。目前,EIP支持绑定到专有网络类型的ECS实例、专有网络类型的私网SLB实例、专有网络类型的辅助弹性网卡、NAT网关和高可用虚拟IP上。
3.6. 传统型负载均衡CLB
传统型负载均衡CLB(Classic Load Balancer)是将访问流量根据转发策略分发到后端多台云服务器(ECS实例)的流量分发控制服务。CLB扩展了应用的服务能力,增强了应用的可用性。
CLB由以下三个部分组成:
CLB实例 (Instances)
一个CLB实例是一个运行的负载均衡服务,用来接收流量并将其分配给后端服务器。要使用负载均衡服务,您必须创建一个CLB实例,并至少添加一个监听和两台ECS实例。
监听 (Listeners)
监听用来检查客户端请求并将请求转发给后端服务器。监听也会对后端服务器进行健康检查。
后端服务器(Backend Servers)
后端服务器是一组接收前端请求的ECS实例。您可以单独添加ECS实例到后端服务器池,也可以通过虚拟服务器组或主备服务器组来批量添加和管理。
3.1. 英诺天玑高可用集群软件
英诺天玑高可用集群,是北京英诺艾智数据科技有限公司出品的最大化业务运营时间的软件解决方案。包括国产操作系统平台,虚拟化平台,公有云平台,以及PPC64和ARM平台在内,北京英诺艾智一直致力于提高产品的平台适用性和易用性,在高可用领域拥有丰富的经验。结合英诺重明容错服务器和虚拟化技术等,北京英诺艾智提供的多层次高可用解决方案,为您的业务持续性保障提供更多的选择。
产品体系
标准版:支持双机热备高可用架构,提供软硬件故障检测,自动故障转移,IP迁移,数据保护等丰富的功能。
专业版:支持高可用服务器集群架构,单个集群最大支持32节点。提供丰富的功能选件以及全面的平台支持。
单机版:提升单体服务的可用性,提供软件故障监控和本地自动恢复。
标准集群架构
共享存储架构
利用共享存储设备在服务器之间交接业务数据,在确保数据一致性和可靠性的同时,提供良好的扩展性和性能,适用于I/O频繁,业务繁重的大型关键业务系统
数据镜像架构
在服务器之间以分区为单位实施数据镜像,以独有的快速数据恢复技术跨服务器实现Raid1级别的数据保护,为灾难恢复,虚拟化平台支持,云平台支持提供技术支撑