固定链接 关于滴滴云负载均衡 开发者需要知道的九件事

关于滴滴云负载均衡 开发者需要知道的九件事

关于滴滴云负载均衡 开发者需要知道的九件事

导读

负载均衡作为云计算的基础服务组件,通常都会搭配云主机来构建云服务。滴滴云也不例外,为用户提供了安全稳定、简明易用、超强性能的负载均衡(SLB)产品支持。本文将与大家分享相关的技术原理、基础功能、应用场景及开发者需要了解的九件事。

 

关于负载均衡

负载均衡(Server Load Balance,简称SLB),可以将公网或内网的流量分发至多台后端云服务器,通过健康检查和流量分发等技术,隐藏实际的服务端口,消除服务的单点故障,达到应用系统提高可用性、增强安全性、提升可靠性的目的,从而提高整个系统的处理能力。

 

负载均衡是云网络中非常重要的网络组件,产品形态主要通过硬件和软件来实现,市面上常用的硬件负载均衡产品有F5A10Array,常用的软件负载均衡产品有LVSNginxHaproxy等。

 

基础功能

1.多种协议支持

目前支持TCP四层负载均衡,HTTP/HTTPS七层负载均衡业务即将上线,敬请关注。

 

2.超强性能保障

最大支持5000万并发连接、每秒100万最大连接数、每秒20HTTP查询。

 

3.会话保持

将一定时间内来自同一用户的访问请求转发到同一服务器上处理。

 

4.灵活调度

多种负载均衡调度算法与转发策略可选。

 

5.多种管理途径与付费方式

根据业务特征,灵活选择规格与付费方式。

 

6.安全性

集中管理HTTPS证书与私钥。

 

实现方式

考虑到维护成本和定制化需求,滴滴云负载均衡采用了软件实现方式,更确切的说是DPDK加速的LVS ,即基于DPDK加速传统内核版的LVS,极大地提高了LVS性能。

 

滴滴云负载均衡通过健康检查及时发现后端云服务池中不可用的DC2实例,自动隔离故障的DC2实例,在数据面转发上及时屏蔽不可用的DC2实例,有效地避免了服务单点故障问题,常用的健康方式有:TCP/UDP/ICMP等,健康检查的可靠性直接决定了整体服务的高可用性。

 

目前,滴滴云负载均衡支持基于TCP协议的健康检查,基本原理是用户创建的监听和后端云服务器池的DC2实例基于TCP的三次握手,健康检查流量较小,不会对后端与服务器产生负面作用,这是相对靠谱的检查方式,用户可以放心使用。

 

SLB数据面转发通过设置虚拟服务地址(vip),将后端云服务器池虚拟成一个整体的高可用、高性能的应用池,对外暴露SLB供外部访问,通过灵活可配置的负载均衡调度算法将数据面流量分发到云服务器池中的DC2实例。

 

滴滴云负载均衡访问流程如下:

 

【滴滴云负载均衡,开发者需知道的九件事】

 

Q1SLB后端添加的云服务器(DC2),必须绑定公网IP(EIP)吗?

 

A1不是必须,针对SLB业务,无论SLB后端添加的云服务器(DC2)是否绑定公网IP(EIP),都是可以的,是否绑定公网IP(EIP)取决于用户需求。

 

比如,如果用户在SLB后端添加的云服务器仅仅用来做SLB业务并且想要对外隐藏,就推荐后端的云服务器不绑定公网IP,对外暴露的只是SLB的公网IP,同时可以为用户节省EIP费用,请参考弹性公网IP购买须知。

 

Q2SLB与云服务器(DC2)绑定的安全组(SG)有关系吗?

 

A2有关系,关于防火墙组的介绍,请参考购买须知,用户流量经过SLB负载到后端云服务器,在后端云服务(DC2)中看到的是真实的公网流量 。

 

因此,SLB后端的DC2实例需要打开公网端口,才能保证SLB业务可用,如下图所示:

用户创建了一个监听:(负载均衡)TCP:80->(后端云服务器)TCP:8000,那么后端云服务器绑定的防火墙组就需要配置一条源IP0.0.0.0/24、目的端口为8000放行的规则,更多信息具体请参考防火墙组使用教程。

 

Q3SLB业务与专有网络(VPC)如何一起使用?

 

A3SLB依赖于VPCVPC提供用户安全、隔离、IP地址可自定义配置的网络环境,用户可以构建自己的专有网络,目前使用滴滴云SLB需要指定VPC,即SLB也是用户自定义VPC的一部分,这个需要注意。

 

Q4:基于SLB使用长链接如何保活?

 

A4有用户反馈说基于滴滴云SLB业务使用长链接,会出现一段时间内链接断掉的情况,是不是产品缺陷? 在这里特别说明下,用户使用长链接的数据流是经过SLB到后端云服务器(DC2实例),SLB是会针对链接建立会话机制的。

 

与此同时,这个会话是会超时老化的,目前设定的是15分钟,就是说15分钟内不通信的话,会话超时,进而导致链接断开。

 

所以,用户基于滴滴云SLB产品使用长链接的时候,推荐用户做应用层的探活,探测的间隔应小于15分钟。与此同时,长链接是否断开也与后端DC2实例中使用的业务有关。比如:nginx.conf中的keepaliv e_timeout参数的配置,如果配置了120s,那么Nginx也会在客户端120s内没有通信的情况下主动断开链接。

 

Q5:在SLB后端云服务器(DC2)实例中,可以看到客户端访问的真实IP吗?

 

A5可以,使用滴滴云SLB(四层负载均衡)业务访问后端云服务器(DC2),在后端的DC2实例中是可以访问到真实的客户端IP,并且无须做其他的配置和操作,这点不同于其他的大多数云厂商的SLB产品。

 

与此同时这也是滴滴云SLB设计之初考虑的一个重要因素,7层负载均衡(http/https协议)服务目前还没有上线,也会最大程度保留或者简化获取真实的客户端IP的操作,关于7层负载均衡产品的上线,可以密切关注滴滴云官网动态,上线初期会有大力度的优惠!

 

Q6SLB业务是如何计费的?

 

A6SLB的计费规则按EIP计费规则操作,健康检查不会计入流量计费,EIP提供包年包月(预付费)和按时长(后付费)两种计费规则。

 

Q7:多个SLB后面挂同一个后端云服务器(DC2),做SLB层面的容灾有必要吗?

 

A7有用户咨询,考虑到SLB可能有不可用的风险,是否可将一个后端云服务器(DC2)实例挂在多个SLB listener上,即使一个SLB listener不可用,还是可以保证自己的SLB业务可用,如下图所示的使用方式是否支持?

目前,滴滴云的SLB产品不支持该场景。

 

补充说明:滴滴云SLB产品的设计考虑到了容灾的情况,SLB集群内的多个SLB节点都会承载用户下发的SLB listener配置,可以理解为用户的SLB listener也是集群模式,即使一个不可用,也能够最大程度保证用户SLB业务的正常使用。

 

稍微解释下,之所以不支持这种场景,是因为在后端DC2实例中有可能看到相同的五元组连接,会产生冲突,但是这种冲突也是基于客户端访问时使用相同的源IP和源端口的情况下才会发生,这是小概率事件,因为客户端访问时候的源端口一般都是随机产生的。

 

Q8SLB健康检查的间隔是不是越长越好,如何避免健康检查流量对后端云服务器影响?

 

A8并不是越长越好,健康检查间隔设置的时间过长,负载均衡需要经过较长时间才能检测到后端的DC2实例不可用的情况,并且需要多次的健康检查失败才会将不可用的DC2实例从可用列表中移除,从而不会转发数据流到改DC2实例。

 

间隔设置较长有可能会造成SLB不能及时发现故障DC2实例的情况 ,健康检查的流量并不大,并不会对后端DC2云服务器造成攻击,因此,实际使用过程中,不推荐将健康检查间隔设置的很长,保证您更好的产品体验!

 

Q9:如何识别SLB健康检查失败的情况,是SLB健康检查出问题了吗?

 

A9健康检查是SLB数据面流量转发的基础,SLB通过健康检查发现故障的DC2,仅仅向健康检查正常的DC2实例中转发流量,页面有健康检查状况的反馈 ,如果健康检查失败,用户可以通过检查是否打开了相应的端口、防火墙规则是否正确,或者通过抓包。

 

特此说明,健康检查是在内网进行的,不会向用户收取费用,健康检查数据流是SLB的内网vip-> dc2的内网IP之间的TCP三次握手,在三次握手建立成功后,SLB发送tcp rst报文主动断开链接,减少DC2资源消耗。

 

应用场景

滴滴云提供的负载均衡服务具备高性能、高稳定性、低成本、安全和部署快捷的特点,适用于业务快速增长的大小型网站、应用系统等多种用户场景。

 

1.音视频业务

音视频应用中由于用户与主播之间需要实时大量的互动,因此,用户的流量非常大,而直播业务的波峰波谷效应明显,这对整个系统的弹性、稳定性和可用性带来了巨大的挑战。

 

2. 网络游戏

当用户在游戏中有互动时,产生的访问流量非常大,为了保证互动实时性,需要使用负载均衡进行流量分发。

 

3. 高并发应用

超多用户访问视频网站,使用负载均衡将用户访问流量分发到多台云服务器上,保证业务系统平稳运行。多地域部署,需实现各节点之间的网络高速互联。

 

4. 多层容灾

用户业务遍布各地域,使用云解析DNS将不同地域用户智能解析访问到相应的业务系统内,使用负载均衡进行海量的访问流量分发,还可构建地域级 、可用区级的多层容灾架构。

您的留言将激励我们越做越好