资讯专栏INFORMATION COLUMN

【负载均衡 ULB】常见问题指导

Tecode / 2060人阅读

摘要:的运行状态是指什么运行是指整个负载均衡的状态,只要后端服务器有一台存活,负载均衡还是运行状态。需注意的是,后端状态由负载均衡健康检查确定。轮询算法能否使所有服务节点请求数均衡负载均衡的轮询算法是针对连接的。

ULB的会话保持是如何实现的?

请求代理

请求代理模式下(HTTP、HTTPS),会话保持功能是利用cookie实现的。ULB会向源端写cookie,并根据请求带有的cookie信息,直接将请求送给对应的后端主机。

  • 自动生成KEY:选择自动生成key,客户端的cookie插入操作都由ULB来分配和管理。
  • 用户自定义KEY:用户自定义key,ULB使用客户的key来分配和管理对客户端进行的Cookie插入操作
TCP协议的请求代理模式,不支持会话保持。

报文转发

报文转发模式下(TCP、UDP),会话保持功能是基于IP地址的会话保持。ULB会将来自同一IP地址的访问请求转发到同一台后端云服务器进行处理。

VServer的运行状态是指什么?

"运行"是指整个负载均衡的状态,只要后端服务器有一台存活,负载均衡还是运行状态。

后端服务器的状态通过绿色/红色指示灯表示。

需注意的是,后端状态由负载均衡健康检查确定。如果健康检查失败,即使服务器还能ping通,也认为是宕机。

VServer的运行状态是指什么?

"运行"是指整个负载均衡的状态,只要后端服务器有一台存活,负载均衡还是运行状态。

后端服务器的状态通过绿色/红色指示灯表示。

需注意的是,后端状态由负载均衡健康检查确定。如果健康检查失败,即使服务器还能ping通,也认为是宕机。

ULB健康检查机制是如何工作的?

健康检查

ULB健康检查可判断后端服务器是否正常,对于异常的后端服务器,ULB将其从后端服务器池中移除,客户端请求将会在其他服务器之间进行分发。对于处于异常状态的服务器恢复正常时,会被ULB恢复至后端服务器池中。

端口检查

ULB在每个可用区内部署专用服务器对会探测后端节点的IP+端口是否正常。探测频率为2s,连续三次探测失败后端服务器状态异常,连续三次探测正常,则后端服务器状态正常。注意:数据更新有6s延迟,故健康检查状态或有6s延迟。

所有协议均支持端口检查。但检测状态略有不同:HTTP、HTTPS以及TCP的请求代理模式的端口检查是用TCP进行探测。而TCP的报文转发模式及UDP协议则是使用选择的四层协议做端口探测。

HTTP检查

通过HTTP HEAD请求检查后端服务器上的应用是否可用。要求后端服务器支持HEAD请求。

用户使用HTTP健康检查,需要配置HTTP检查路径(如果有必要的话,也可以配置HTTP的检查域名,一般不需要填写),两者拼接组成了HTTP检查的URL,ULB会对此URL发起HTTP HEAD请求,请求响应码为2xx或3xx则认为后端服务器正常。健康检查探测周期为2s,连续3次探测失败后端节点变更为不健康,连续两次正常变更为健康。

HTTP检查路径,最多为227个字符,直接填写域名或IP地址后的相对路径文件。可以选择首页、出现异常概率较小的页面、专门为健康检查准备的空文件(HTTP HEAD请求可以获得200的响应码即可),选择首页可能会加大服务器压力,不建议选择首页作为HTTP健康检查的域名和路径。

HTTP检查域名,不建议填写"http:"或"https:",直接填写域名或IP地址即可。支持主域名、二级域名等多级域名。

HTTP检查支持的协议:HTTP协议、HTTPS协议(七层服务)。

ULB如何获取客户端的源地址?

ULB支持报文转发、请求代理两种类型。报文转发型支持TCP、UDP等协议,请求代理型支持HTTP、HTTPS、TCP等协议。

报文转发模式下,后端服务节点收到的请求的源地址就是实际的源地址。

请求代理模式下,HTTP协议中,ULB已经默认开启了x-Forwarded-For选项,可以从HTTP报头中的X-Forward-For字段中获取客户端的源地址。TCP协议无法返回源地址。

Nginx示例
log_format  upstream  $time_iso8601 $http_x_forwarded_for $host $upstream_response_time $request $status $upstream_addr;

Apache示例
SetEnvIf REMOTE_ADDR "(.+)" CLIENTIP=$1
SetEnvIf X-Forwarded-For "^([0-9.]+)" CLIENTIP=$1
LogFormat "%{CLIENTIP}e %D %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"" trueip_combined
CustomLog logs/access_log trueip_combined

tomcat 的server.xml文件修改如下参数:
    se="webapps" 
        unpackWARs="true" autoDeploy="true"> 
         

服务节点收到大量内网IP的访问是否正常?

收到的大量内网IP的访问是正常的。 ULB在请求代理模式下,对后端服务节点转发请求时,使用的是 ULB的内网代理IP。

例如,用户在北京二的后端云主机访问日志中发现大量来自 10.10.251.0/24 网段的访问,即为北京二 ULB 的内网代理 IP。

ULB 在各个区域的代理IP网段见公共服务网段

如何禁止某些源地址访问后端服务节点?

ULB支持防火墙功能,使用方式如下:

  • 创建负载均衡的时候绑定防火墙,或在ULB的详情页中,进入“外网防火墙”tab页面进行防火墙的绑定。

注意:

  • 防火墙仅对请求代理型、外网模式下的ULB实例生效。
  • 在配置防火墙的过程中,如果需要对某个请求代理模式的VServer进行白名单/黑名单限制,需配置防火墙中VServer对应端口的允许/拒绝策略。由于防火墙的默认行为是拒绝,因此配置防火墙的时候请务必添加VServer相应端口的相应源地址放行规则,避免影响业务。

轮询算法能否使所有服务节点请求数均衡?

负载均衡的轮询算法是针对连接的。同一个TCP连接,不会被同时负载到两台后端服务器。若同一个连接上会发送数量不确定的多个请求,则可能会导致后端服务器上统计到的请求数不同。

ULB服务器是否会宕机?

ULB采用集群架构,基于跨可用区的分布式部署,利用BGP+ECMP实现集群的自动容灾,保证在可用区级别的灾难下,依旧可以正常工作。

ULB错误码有哪些?

ULB的错误码基本是遵循HTTP的规范。

客户端错误,返回4XX

  • 400 Bad request:Your browser sent an invalid request.
  • 403 Forbidden:Request forbidden by administrative rules.
  • 408 Request Time-out:Your browser didnt send a complete request in time.

服务器错误,返回5XX

  • 500 Server Error:An internal server error occured.
  • 502 Bad Gateway:The server returned an invalid or incomplete response.
  • 503 Service Unavailable:No server is available to handle this request.
  • 504 Gateway Time-out:The server didnt respond in time.

VServer端口和服务节点端口是否必须一致?

不一定要保持一致,如要实现ULB报文转发监听端口和后端服务器监听端口不一致,可以通过服务节点内配置IpTables端口转发规则实现,具体步骤如下:

1、修改/etc/sysctl.conf配置文件,设置 net.ipv4.ip_forward = 1 默认是0。
2、关闭防火墙 service iptables stop。
3、配置规则:

iptables -t nat -A PREROUTING –d $vip_ip -p tcp --dport $ulb4_port  -j DNAT --to-destination $vip_ip:$vm_port

其中:$vip\_ip指负载均衡器的内网服务IP地址,$ulb4_port指ulb4的监听端口,$vm_port为后端服务器的监听端口 例:负载均衡器的内网服务IP地址为:10.10.10.10,ulb_4监听端口为80,后端服务器监听端口为8101,则规则为:

iptables -t nat -A PREROUTING -d 10.10.10.10 -p tcp --dport 80 -j DNAT --to-destination 10.10.10.10:8101

4、保存配置:service iptables save
5、启动iptables :service iptables start

内网ULB的IP地址为何无法ping通?

内网ULB仅保证支持同子网能ping通,可通过端口的测试来确认内网ULB是否配置和工作正常。

对ULB压测时为何会出现连接失败?

通常情况下,在使用Linux操作系统作为压测模拟客户端时,当压测性能达到ULB极限前,不会出现连接失败的情况。

但对于使用Windows作为压测的模拟客户端时,可能会出现TCP连接失败的问题。这是由于在压测场景下,Windows系统会快速复用客户端IP和端口发起TCP连接的建立,而在被压测ULB的后端Linux服务节点上TCP协议栈中,以相同的源地址及端口所建立的TCP连接可能尚未被释放完毕,若此时如果 "新建连接的序列号" 大于 "已存在连接的序列号",Linux服务节点就会认为新建连接的SYN请求是已存在连接的重传,从而导致新的TCP连接建立失败。

所以在对ULB进行压测时,请尽量使用Linux作为压测模拟客户端,如果必须使用Windows系统作为压测模拟客户端,则需添加系统注册表中关于TCP时间戳的选项,该选项默认在Windows系统中是未激活的,具体配置参见 Windows帮助文档

最新产品文档请关注:https://docs.ucloud.cn/ulb/newfunctions

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/126164.html

相关文章

  • 负载均衡 ULB】产品定价以及选型、负载均衡算法

    摘要:负载均衡产品定价收费项网络类型实例费用带宽费用外网免费外网带宽费用见收费说明内网免费免费负载均衡类型网络模式负载均衡类型负载均衡类型支持协议请求代理型报文转发型历史创建的实例为兼容型,可同时包含请求代理型报文转发型的。负载均衡ULB产品定价收费项网络类型ULB实例费用带宽费用外网ULB免费外网带宽费用见EIP收费说明内网ULB免费免费ULB:负载均衡类型/网络模式负载均衡类型负载均衡类型|支...

    Tecode 评论0 收藏0
  • 负载均衡 ULBULB,VServer,服务节点的操作指南

    摘要:绑定解绑进入负载均衡页面,可对外网绑定的外网弹性进行以下操作。负载均衡算法监听器对数据包的负载方式服务节点一般情况,添加服务节点是需要在监听器创建完成后再进行。禁用服务节点后,现存的长连接不会断开。,点击确定,即完成批量禁用服务节点。创建ULB操作步骤1、进入负载均衡 ULB页面。2,点击创建负载均衡进行ULB实例创建。3、填写配置信息,进行ULB实例创建。详细配置说明见下方。4,点击立即购...

    Tecode 评论0 收藏0
  • 负载均衡 ULB】技术架构:内网ULB4,外网ULB4,内网ULB7,外网ULB7以及模式比对

    摘要:单台服务器可以提供超过万并发连接,万,线速转发能力。外网负载均衡转发示意图如下与内网不同的是,外网流量是从公网进来的。这样上联交换机会根据算法,将流量负载均衡到集群中的各台服务器上。技术架构ULB (UCloud Load Balancer)提供流量分发的能力,保证业务可扩展和高可用。支持内网和外网两种场景,支持请求代理和报文转发两种转发模式。下文将分别介绍ULB的的请求代理(下简称ULB7...

    Tecode 评论0 收藏0
  • 创建ULB 负载均衡 ULB

    摘要:创建创建创建操作步骤操作步骤进入负载均衡页面。,点击创建负载均衡进行实例创建。负载均衡类型分为请求代理型和报文转发型,请求代理型支持协议,报文转发型支持协议,详见负载均衡类型网络模式网络模式分为内网外网两种模式。 创建ULB操作步骤1、进入负载均衡 ULB页面。2,点击创建负载均衡进行ULB实例创建。3、填写配置信息,进行ULB实例创建。详细配置说明见下方。4,点击立即购买,即创建成功。配置...

    ernest.wang 评论0 收藏1558
  • 负载均衡 ULB】什么是ULB?产品功能,性能指标和使用限制

    摘要:针对七层协议支持协议类或四层协议支持协议及协议类。虚拟服务器监听器监听器,每个是一组负载均衡前端端口配置。配置时需确保报文头大小不超过,否则会造成无法正常工作。什么是ULB?ULB简介ULB(UCloud Load Balancer)是UCloud提供的负载均衡服务,能够为多个主机或其它服务实例提供基于网络报文或代理方式的流量分发功能。在高并发服务环境下,通过ULB构建由多个服务节点组成的服...

    Tecode 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<