SLB负载均衡和DNS协议

SLB负载均衡和DNS协议SLB 负载均衡负载均衡原理负载均衡的组成健康检测HTTP/HTTPS监听健康检查机制健康检测中域名的设置TCP监听健康检查机制健康检查状态对请求转发的影响如下:网络流量路径说明入网流量路径出网流量路径SLB使用实践监听配置选择转发策略DNSDNS基本概述DNS工作流程分布式、层次数据库DNS层次结构DNS查询步骤DNS解析器DNS查询类型DNS缓存DNS缓存的工作流程DNS缓存方式DNS报文报文段首部问题区域资源记录部分DNS安全DNS防火墙参考文献SLB 负载均衡负载均衡(
摘要由CSDN通过智能技术生成

SLB 负载均衡

负载均衡(Server Load Balancer,下文简称 SLB)的引入,可以降低单台云服务器 ECS(下文简称 ECS)出现异常时对业务的冲击,提升业务的可用性。同时,结合弹性伸缩服务,通过动态调整后端服务器,可以快速对业务进行弹性调整(扩容或缩容),以快速应对业务的发展。

负载均衡原理

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

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

负载均衡默认检查云服务器池中的ECS实例的健康状态,自动隔离异常状态的ECS实例,消除了单台ECS实例的单点故障,提高了应用的整体服务能力。此外,负载均衡还具备抗DDoS攻击的能力,增强了应用服务的防护能力。

负载均衡的组成

  • 负载均衡实例 (Instances):一个负载均衡实例是一个运行的负载均衡服务,用来接收流量并将其转发给后端服务器,至少添加一个监听(Listeners)和两台ECS实例
  • 监听(Listeners):监听客户端的请求并将其转发给后端服务器,监听也会对后端服务器进行健康检查。
  • 后端服务器(Backend Servers):后端服务器是一组接收前端请求的ECS实例,可以单独添加ECS实例到后端服务器池;

slb

健康检测

负载均衡通过健康检测来判断后端服务器(ECS实例)的业务可用性。健康检查机制提高了前端业务整体可用性,避免了后端ECS异常对总体服务的影响。

开启健康检测时,当后端某台ECS健康检测出现异常时,负载均衡会自动将新的请求转发到其他健康检测正常的ECS上;当ECS恢复正常运行时,负载均会会将其自动恢复到负载均衡服务中。

负载均衡在用集群部署,LVS集群或者Tengine集群内相关的节点服务器同时承载着数据转发和健康检测的职责。

Ps:

  • LVS集群:Linux Virtual Server,可以实现LINUX平台下的简单负载均衡,LVS采用三层结构:负载调度器、服务器池、共享存储。

  • Tengine集群:Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性;

healthcheck

HTTP/HTTPS监听健康检查机制

针对七层(HTTP或HTTPS协议)监听,健康检查通过HTTP HEAD探测来获取状态信息;

检查机制如下:

  • Tengine节点服务器根据监听的健康检测配置,像后端的向后端ECS的内网IP+【健康检查端口】+【检查路径】发送HTTP HEAD请求(包含设置的【域名】);
  • 后端ECS收到请求后,根据相应服务的运行情况,返回HTTP状态码;
  • 如果在【响应超时时间】之内,Tengine节点服务器没有收到后端ECS返回的信息,则认为服务无响应,判定健康检查失败;
  • 如果在【响应超时时间】之内,Tengine节点服务器成功接收到后端ECS返回的信息,则将该返回信息与配置的状态码进行比对。如果匹配则判定健康检查成功,反之则判定健康检查失败;

健康检测中域名的设置

当使用HTTP方式进行健康检查时,可以设置健康检查的域名,但并非强制选项。因为有些应用服务器会对请求中的host字段做校验,即要求请求头中必须存在host字段。如果在健康检查中配置了域名,则SLB会将域名配置到host字段中去,反之,如果没有配置域名,SLB则不会在请求中附带host字段,因此健康检查请求就会被服务器拒绝,可能导致健康检查失败。综上原因,如果您的应用服务器需要校验请求的host字段,那么则需要配置相关的域名,确保健康检查正常工作。

TCP监听健康检查机制

针对四层TCP监听,为了提高健康检查效率,健康检查通过定制的TCP探测来获取状态信息:

1、SLB服务器根据监听的健康检查配置,向后端ECS的内网IP+【健康检查端口】发送TCP SYN数据包;

2、后端ECS收到请求后,如果相应端口正在正常监听,则会返回SYN+ACK数据包;

3、如果在【响应超时时间】之内,LVS节点服务器没有收到后端ECS返回的数据包,则认为服务无响应,判定健康检查失败;并向后端ECS发送RST数据包中断TCP连接;

4、在【响应超时时间】之内,LVS节点服务器成功收到后端ECS返回的数据包,则认为服务正常运行,判定健康检查成功,而后向后端ECS发送RST数据包中断TCP连接;

健康检查状态对请求转发的影响如下:

  • 如果目标ECS的健康检查失败,新的请求不会再分发到相应ECS上,所以对前端访问没有影响;
  • 如果目标ECS的健康检查成功,新的请求会分发到该ECS上,前端访问正常;
  • 如果目标ECS存在异常,正处于健康检查失败时间窗,而健康检查还未达到检查失败判定次数(默认为三次),则相应请求还是会被分发到该ECS,进而导致前端访问请求失败;

业务流程如下所示:

健康检测业务流程

网络流量路径说明

传统型负载均衡CLB作为流量转发服务,将来自客户端的请求通过CLB集群转发至后端服务器,后端服务器再将响应通过内网返回给CLB。

入网流量路径

img

1、TCP/UDP协议和HTTP/HTTPS协议的流量都需要经过LVS集群进行转发;

2、LVS集群内的每一台节点服务器均匀地分配海量访问请求,并且每一台节点服务器之间都有会话同步策略,以保证高可用;

  • 如果相应的CLB实例服务端口使用的是四层协议(TCP或UDP),那么LVS集群内每个节点都会根据CLB实例的策略,将其承载的服务请求按策略直接分发到后端ECS服务器;
  • 如果相应的CLB实例服务端口使用的是七层HTTP协议,那么LVS集群内每个节点会先将其承载的服务请求均分到Tengine集群,Tengine集群内的每个节点再根据CLB策略,将服务请求按策略最终分发到后端ECS服务器;
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值