一、全局负载均衡实现了什么?
1、全局负载均衡是基于DNS实现的一套负载均衡系统,系统具备基本的域名解析功能,通过用户请求的域名,响应经过负载策略计算后的ip地址给客户端。
2、客户端访问test.com的网站时,浏览器首先通过DNS查询,将域名转换为IP地址,然后再通过IP地址访问实际的网站服务器,完成网页的请求。
二、如何将域名DNS请求接入到全局负载均衡服务
通常DNS权威服务器可以采用两种方式将域名的请求引导至另一个DNS权威服务器。
1、第一种方式是通过NS记录子域授权的方式,将整个子域名授权到其他DNS权威服务器,比如设置www.test.com的ns记录为ns1.gslb.ctyun.cn和ns2.gslb.ctyun.cn。
2、第二种方式是通过CNAME记录的方式,设置www.test.com的CNAME记录指向xxxxx.gslb.ctyun.cn(开通全局负载均衡产品服务后,系统自动分配地址)。
三、全局负载均衡业务层整体原理图
1、负载均衡组件
全局负载均衡主要由Auth-DNS组件、GSLB组件、monitor组件组成。各自负责的功能如下:
Auth-DNS模块:基于DNS协议实现的简化版权威DNS服务器,只提供A记录和AAAA记录的DNS请求服务。
GSLB模块:根据用户创建的各种负载均衡策略、pool池负载均衡算法、和IP健康状态选择合适的IP地址返回给用户。
monitor模块:探测pool池内ip地址健康状态。
2、域名DNS请求流程
a) Auth-DNS组件接收用户请求
终端用户通过浏览器访问域名时,本地DNS会将域名解析请求发送到DNS递归服务器(如114.114.114.114),然后经过DNS递归服务器的迭代请求,最终会将域名解析请求发送到全局负载均衡服务的Auth-DNS组件;
Auth-DNS组件接收DNS请求后,根据RFC1035、RFC2671、RFC7871等相关DNS协议进行解析。获取DNS请求中的源IP地址、域名和请求类型,在获取源IP地址时,优先使用edns-client-subnet协议携带的用户真实IP地址。
b) GSLB组件选择合适的IP地址响应用户请求
第一步:通过域名,查找用户开通的GSLB实例。
第二步:根据GSLB实例可以查询到所有关联的访问策略,其中访问策略主要作用是将地域信息或运营商信息与pool池相关联。根据用户的真实IP地址,可以选择出符合条件的访问策略policy。并开始尝试使用所有匹配的访问策略policy所关联的pool地址池响应用户请求。
在系统中访问策略policy具有优先级属性,优先使用优先级别高的访问策略应答用户请求,优先级由高到低实例:
电信-西南-四川 > 中国-西南-四川 > 电信-西南 > 中国-西南 > 电信 > 中国 > 全局
第三步:资源池可以选择具体的负载均衡算法类型,包括轮询、加权轮询、哈希、随机、优先级。通过具体的负载均衡算法尝试在pool地址池内选择一个健康的IP地址响应用户DNS请求。
如果pool池内所有IP地址均为非健康,系统会尝试选择pool地址池指向的回退池(另一个pool地址池)进行IP地址选择,选择逻辑与第三步一致。如果还是不能找到合适的IP地址,系统会尝试使用其他访问策略从第二部重新开始获取IP地址。
第四步:将选择的IP地址结果,通过Auth-DNS组件,封装DNS响应消息体,应答DNS请求。
c) monitor组件对pool池中的IP地址进行健康探测
monitor组件支持icmp、udp、tcp、http、https健康检测方式,每一种健康检测具备各自的用户自定义参数,比如间隔时间、超时时间等信息。monitor组件会根据用户配置的检测信息,对pool池内的IP地址进行健康检测,并将检测结果实时返回给GSLB组件。
monitor组件在全国多个地点部署探测服务,各个探测节点独立运行,具备各自的探测数据;系统会收集所有探测节点的健康探测结果,目前版本采用多数原则决定IP地址是否健康,当认为IP地址健康的节点数大于认为IP地址非健康的节点数量时,将IP地址设置为健康状态。反之设置为非健康。
四、总结
全局负载均衡主要基于DNS技术,在提供域名解析服务的同时,增加根据客户端访问的源IP地址选择就近的服务器IP地址响应请求的能力。并且全局负载均衡系统提供用户资源池IP地址健康探测功能,能够对IP地址进行多种方式的健康检测,对异常的IP地址进行剔除。