一般类问题
BLB可以支持非百度智能云的服务器吗?
可以,目前BLB的后端服务器除了支持百度智能云的云服务器BCC、专属服务器DCC以及弹性裸金属服务器BBC外,还能通过应用型BLB的IP组挂载非百度智能云的服务器。
BLB实例启用/不启用公网访问有什么区别?
如不启用公网访问,则默认提供内网IP来进行内网流量的均衡服务;如启用,则为您购买并绑定公网IP来实现对公网访问流量的均衡服务。
是否可以在百度智能云上自己搭建负载分担服务?
您可以通过购买BCC云主机,并自行部署HAproxy、Nginx实现负载均衡服务;但是从成本、维护性和可扩展性角度考虑,建议您直接使用BLB服务。
BLB实例总数超过上限,目前业务需要能否增加BLB配额?
目前一个用户默认最多可创建60个BLB实例,如果需要创建更多BLB实例,可通过配额管理 进行申请。其他配额可参见:BLB使用限制。
后端服务器没有公网EIP,能否通过BLB访问公网?
BLB只作为负载均衡进行使用,不支持后端服务器通过BLB访问外网。您可以通过BCC绑定EIP,或创建NAT网关实现。
BLB支持IPv6吗?
BLB现已支持IPv6,需要白名单通过才能使用,有需要的用户请提交工单进行申请。
windows操作系统可以使用BLB吗?
BLB负责对HTTP和HTTPS协议请求的解析和转发,应用防火墙WAF负责在中间提供安全防护功能。对于后端服务器的操作系统没有特殊要求。
关于ping 负载均衡实例内网IP 的说明
ping报文是由负载均衡设备代答的,无法测试到服务端的连通性。如果要测试客户端到服务端连通性,请采用telnet等方式验证。 对于单台客户端ping方式出现丢包时,请尝试不同客户端同时ping,排除单台客户端网络异常问题。 对于多台客户端ping方式均丢包或不通时,请提工单进一步排查。
关于Telnet负载均衡监听端口的说明
创建四层(TCP) 监听器后,如果不绑定后端服务器,则无法Telnet通监听端口;绑定后端服务器后,健康检查正常后,可以Telnet通监听端口。
什么情况下需要 HTTPS 双向认证?
有些客户对数据访问安全要求较高,如涉及到金融服务的客户等。他们不仅需要对服务端进行 HTTPS 认证,也需要对客户端来源进行 HTTPS 认证。 为了满足这些客户的需求,我们推出 HTTPS 双向认证功能。
BLB是否支持同一监听下挂载同一后端服务器的不同端口?
当前应用型BLB可以通过挂载IP组的方式支持后端rs端口不相同功能。
BLB支持同一端口创建多个不同协议的监听吗?
支持,用户可以在控制台或者通过openapi 创建监听选择不同协议。【注意】tcp/http协议不能同时存在于同一端口。
BLB支持同region跨vpc访问吗?
支持。用户可以创建应用型BLB,通过挂载IP组的形式,在控制台勾选同跨跨vpc选项。用户可以通过配置对等连接打通vpc,提交工单由技术支持配合配置obip路由。【注意】当前只支持虚机为普四及其以上机型。当前新创建的虚机都是普四以上机型,所以购买新的虚机均支持此能力。
BLB 和后端云服务器之间是使用公网还是内网通信?
在流量到达BLB实例的指定监听端口后,BLB与云服务器之间都是使用内网通信。当通过弹性公网IP(EIP)访问BLB产品时在客户端云服务器与弹性公网EIP之间是公网通讯,后端BLB至云服务器依然采用内网通信。
BLB UDP 协议与 TCP 协议有什么区别?
TCP 是面向连接的协议,在正式收发数据前,必须和对方建立可靠的连接。UDP 是面向非连接的协议,它在数据发送前不需要与对方先进行三次握手建立链接,而是直接进行数据包发送。UDP 协议主要适用于关注实时性而相对不注重可靠性的场景,如视频聊天、金融实时行情推送、DNS、物联网等。
BLB可以为哪些 TCP 端口执行负载均衡?
BLB产品 TCP类型监听端口支持范围1 - 65535, 建议使用业界常用的端口提供服务,有一些端口可能存在公网访问时被封禁的风险。
BLB转发请求的长度限制是多少?是否支持调整?
访问BLB请求的URI长度不能超过32 KB,请求header长度也不能超过32 KB,但是支持通过client_header_buffer_size和large_client_header_buffer参数进行自定义调整。
- 如果客户端的请求大小超限,可能会返回400或414状态码。
- 如果数据量很大建议采用POST传输数据,POST请求的body体最大支持 10 GB。
BLB级联场景使用?
对于LB级联使用场景,建议都是用非三角模式的数据流。不要使用DR,IMF三角模式的数据流,可能会导致数据流不通。 不建议用户级联BLB使用,可能会导致数据流不通。如果用户在使用过程中出现不通的情况, 可以联系技术支持。
负载均衡 Cookies 会话保持方式的原理是什么?
负载均衡cookies会话保持有cookie植入(insert)和cookie重写(rewrite)两种方式:植入状态下会返回cookie的超时时间给客户端。重写状态下没有超时时间。
在 Cookie 植入模式下,BLB 负责将cookie植入客户端,后端服务器无需作出任何修改。当客户端进行第一次请求时,客户端 HTTP 请求(不带 Cookie)进入 BLB, BLB 根据负载平衡算法策略选择后端一台服务器,并将请求发送至该服务器,后端服务器进行 HTTP 回复(不带 Cookie)被发回 BLB,然后 BLB 通过set-cookie头插入响应返回给客户端。
当客户请求再次发生时,客户 HTTP 请求(带有上次 BLB 插入的 Cookie)进入 BLB,然后 BLB 读出 Cookie 里的会话保持数值,cookie值与后端服务器进行对比,将HTTP请求(带有与上面同样的 Cookie)发到指定的服务器,然后后端服务器进行请求回复,由于服务器并不写入 Cookie,HTTP 回复将不带有 Cookie,此时BLB也不会再把cookie插入响应返回给客户端。
如果出现BLB解析客户端cookie失败或者对应cookie的rs健康检查DOWN的情况,那么将根据用户配置的负载均衡算法重新选择后端服务器,并重新将cookie植入响应返回给客户端。
在 Cookie 重写模式下,重写模式使用服务端的标识符来覆盖后端服务器中用于进行会话保持的cookie。不同于insert模式,如果后端服务器在响应头中没有设置对应名称的cookie,insert模式会直接插入cookie,而rewrite模式则会认为当前请求不需要进行session sticky,不进行任何操作。当客户端进行第一次请求时,客户端 HTTP 请求(不带 Cookie)进入 BLB, BLB 根据负载平衡算法策略选择后端一台服务器,并将请求发送至该服务器,后端服务器进行 HTTP 回复(带 Cookie)被发回 BLB,然后 BLB 解析后端服务器返回的响应,对比BLB设置好的cookie name,找到后,重写cookie name为设置的cookie name,然后插入客户端。
当客户请求再次发生时,客户 HTTP 请求(带有上次 BLB 插入的 Cookie)进入 BLB,然后 BLB 读出 Cookie 里的会话保持数值,cookie值与后端服务器进行对比,将HTTP请求(带有与上面同样的 Cookie)发到指定的服务器。后端服务器进行 HTTP 回复(带 Cookie)被发回 BLB,然后 BLB 解析后端服务器返回的响应,对比BLB设置好的cookie name,找到后,重写cookie name为设置的cookie name,然后插入客户端。
HTTPS 监听使用什么端口?
不强制,建议使用443端口。
tcp监听修改为https/http监听后流量统计为什么会下跌?
tcp监听是四层负载均衡,流量统计的数据为ip数据报文的长度; 将tcp监听修改为http/https监听,是七层负载均衡,流量统计的数据为http/https报文的body的长度; 因此tcp监听修改为http/https监听后从流量统计上看会有一些数值上的下降。
什么是后端服务器权重?
用户可以指定后端服务器池内各 RS 的转发权重,权重比越高的 RS 将被分配到更多的访问连接,用户可以根据后端 RS 本身负载和对外服务能力情况来设定。
请求响应为500、502、503、504状态码的解释及可能原因是什么?
500(Internal Server Error) 后端服务器内部错误,无法执行请求。 可能原因:
- 后端服务器直接返回500,BLB透传后端状态码给客户端,请排查后端服务器返回500的原因。
- 后端服务器在发送完响应之前异常关闭连接,请在后端服务器抓包确定并排查请求异常关闭的原因。
502(Bad Gateway) HTTP或HTTPS监听接收到客户端连接请求后,BLB由于无法正常将请求转发至后端服务器或无法从后端服务器收到响应,则会向客户端发送HTTP 502 Bad Gateway状态码。 可能原因:
- 后端服务器直接返回502,BLB透传后端状态码给客户端,请排查后端服务器返回502的原因。
- BLB后端服务器返回其他错误的状态码,但BLB统一返回502。建议排查访问日志的upstream_status和status字段或抓包排查后端服务器是否有异常。
- BLB与后端服务器之间TCP通信异常,请排查后端服务器的状态是否正常、服务端口是否正常被监听,或抓包查看TCP握手报文是否正常。
- 后端服务器Backlog已满,导致报文丢弃。建议通过netstat查看后端服务器的网络统计结果是否有drop的计数,例如netstat -s | grep -i listen。
- 同一个服务器组的所有后端服务器健康检查都异常,与之关联的BLB实例无法转发请求,直接返回502。建议通过日志排查后端服务器是否有异常,或者检查健康检查配置是否存在异常。
- 客户端发送的报文长度超过了后端服务器的最大传输单元(Maximum Transmission Unit,MTU),表现为健康检查或报文较短的包正常,但报文较长的包异常。建议在后端服务器抓包分析报文长度是否符合要求。
- 后端服务器返回的报文格式异常或者有非法的HTTP标头。建议在后端服务器抓包,确认HTTP格式是否正常。
- BLB后端服务器没有及时完成请求处理,请排查后端服务器的日志,并查看对应后端服务器的CPU、内存等的占用率。
503(Service Temporarily Unavailable) 暂时无法使用服务器。 可能原因:
- 后端服务器直接返回503状态码,BLB透传后端状态码给客户端,请排查后端服务器返回503的原因。
- 请求没有请求到BLB对应的监听上,监听配置在BLB未找到,可能是请求没有匹配到配置的监听策略。
504(Gateway Time-out) 后端服务器响应超时。 可能原因:
- 后端服务器直接返回504状态码,请排查后端服务器的负载是否过高。
- BLB向后端服务器建立连接时,后端服务器建立连接超时,超时时间默认设置为30秒,您可以查看访问日志中的upstream_connect_time字段是否为30秒或者大于30秒。建议抓包排查后端服务器响应超时的原因。
- 后端服务器负载增大,响应请求的时间大于所配置的请求超时时间。比如配置的请求超时时间是60秒,如果响应时间为60.001秒,BLB将返回504。 访问日志中查看upstream_response_time。
如何检查请求不均衡?
一般情况下,影响负载均衡分配的因素包括分配策略、会话保持、长连接、权重等。换言之,最终是否均匀分配不仅与分配策略相关,还与使用的长短连接、后端的性能负载等相关。
- 检查是否开启了会话保持。如果配置了会话保持,而客户端的个数又比较少时,很容易导致不均衡。
- 检查后端云服务器的健康检查状态是否正常,特别要关注下是否有健康检查状态一会正常一会异常的情况。健康检查异常或者状态切换都会导致流量不均衡。
- 检查负载均衡算法是否是源IP算法。此时同一个IP发过来的请求都会分发到同一个后端,导致流量不均衡。
- 后端服务是否开启了TCP keepalive保持长连接。如果开启,则有可能因为长连接上的请求数不同导致流量不均衡。
- 将云服务器添加到LB后端时是否设置了权重,权重不同,分发的流量也不同。
- 后端服务器添加到LB时间不同也会影响请求分布不均衡。
后端RS上流量不均衡,如何排查?
BLB当前选择RS的调度单位是基于连接调度,当一条新建连接选中某一个RS后,流量将一直转发到该RS直到连接结束或超时。 因此当后端RS上出现流量不均衡的情况,需要检查连接请求是否均衡。
可以从以下几点来排查:
- 检查调度算法,是否使用了基于权重的调度算法,比如加权轮询(wrr),RS上配置的权重是否一致,如果不一致,则有可能出现流量不均衡。
- 检查后端所有RS上的每秒新建连接数(cps)是否均衡,如果不均衡,则有可能出现流量不均衡。
- 检查后端所有RS是否有长短连接混合使用的情况。
- 检查连接数是否太少。
如何检查负载均衡业务访问延时大?
一般从如下几方面检查:
- 将EIP绑定到后端云服务器,不经过弹性负载均衡直接访问后端服务,查看访问延时。用来判断是弹性负载均衡的问题,还是前端网络问题或者后端服务问题。
- 查看业务流量是否超过了EIP的带宽限制,超带宽会产生拥塞、丢包等异常情况。
- 如果直接访问后端存在业务访问延时大,需要排查后端服务是否压力过大,是否配置了安全策略等。
- 查看异常主机数的监控来判断后端云服务器的健康检查状态是否有跳变。在后端服务状况不稳定时,因为弹性负载均衡的重试机制,如果连接一台后端超时,请求会重新发往下一台后端,请求成功,这样业务就表现为访问成功,但是延时很大。
- 如果问题依然存在,请通过工单联系我们。
BLB实例是否支持 Client IP 透传?
目前 BLB 的 TCP/UDP 类型,新增挂载云上 BCC 类型的后端服务器,默认开启 Client IP 透传(在后端服务器上看到访问报文的源地址为 Client IP)。
HTTP/HTTPS类型的监听,目前暂不支持 CIP 透传,用户可开启『获取真实IP X-Forwarded-For方式获取客户端真实IP』选项,在后端服务器上通过解析 HTTP header 头来获取 Client IP。
SSL 类型监听,目前支持 ProxyProtocol 协议,用户可启用该选项,同时在后端服务器上解析 ProxyProtocol 标准协议的方式,来获取 Client IP。
BLB实例后端服务器是分批次发回响应请求的,但是在客户端看到的是只收到一个请求,BLB 是否支持不缓存后端服务器的响应请求?
BLB 实例开启代理缓冲功能,BLB 会将后端服务器的响应请求缓存在本地内存或磁盘中,再以合适的速度发送给客户端。
BLB 提供定制配置功能 给客户,来关闭此项功能。 关闭代理缓冲功能方法:开启 定制配置 选项,在命令输入框中输入 『proxy_buffering:off』 其他的定制配置字段参见:定制配置操作指南。
BLB产品支持哪些调度算法?
BLB目前支持加权轮询、最小连接数、源IP的调度算法。
- 加权轮询 调度算法设置为加权轮询时,会根据服务器之间的权重设置依次查询服务器,使得各服务器的实际连接数符合权重设置。常用于短连接服务,如HTTP服务。
- 最小连接数 调度算法设置为最小连接数时,权重设置失效,blb每次选择当前连接数最小的后台服务器机建立连接。常用于长连接服务,如数据库服务。
- 源IP 调度算法设置为源IP时,权重设置失效,将请求的源IP进行hash运算后派发请求至某匹配的服务器,可以保证同一个客户端IP的请求始终被派发至某特定的服务器。
在何种情况下购买BLB要搭配EIP?
用户需要申请一个BLB实例时,如需要公网服务,则给其绑定一个EIP即可。