云服务器内容精选

  • 问题分析 什么场景下后端服务器上不同四层连接会出现五元组冲突? 客户端请求源端口硬编码为固定端口:客户端访问不同的弹性负载均衡时,客户端请求的源端口固定,例如固定为80端口。 客户端请求源端口由操作系统自动选择:由于客户端访问不同的弹性负载均衡,即访问的目的IP地址不同,从而导致操作系统选择的客户端请求源端口可能相同。 图1 后端服务器接收请求报文五元组冲突示意图 同一客户端通过两个负载均衡器访问同一个后端服务器,客户端请求源端口相同且弹性负载均衡已开启获取客户端IP(DNAT模式)功能时,连接建立过程如图1。 客户端发出源IP(IP-client)和源端口(100)相同的TCP请求1和TCP请求2到两个弹性负载均衡的公网IP地址EIP-1(12.xx.xx.xx)和EIP-2(13.xx.xx.xx)。 两个弹性负载均衡的TCP监听端口都是80,收到的请求1和请求2的五元组报文如下: 表2 负载均衡器接收五元组详情 五元组报文 协议 源IP 源端口 目的IP 目的端口 五元组1-ELB TCP IP-Client 100 12.xx.xx.xx 80 五元组2-ELB TCP IP-Client 100 13.xx.xx.xx 80 弹性负载均衡将接收到请求转发到同一台后端服务器(IP-E CS ),该后端服务器配置的业务端口都是90。 由于弹性负载均衡已开启获取客户端IP功能,源IP和源端口不会被修改,后端服务器接收到ELB转发的请求1和请求2,请求报文五元组如下: 表3 后端服务器接收五元组详情 五元组报文 协议 源IP 源端口 目的IP 目的端口 五元组1-ECS TCP IP-Client 100 IP-ECS 90 五元组2-ECS TCP IP-Client 100 IP-ECS 90 后端服务器接收到五元组报文相同的请求1和请求2,就会导致连接建立失败。
  • 解决方案 为解决后端服务五元组冲突问题,客户端需要避免使用相同的源端口访问不同的实例或监听器,具体而言,您可采用以下措施: 客户端请求源端口硬编码为固定端口时:修改固定源端口配置,使客户端通过不同的固定端口访问不同的负载均衡器。 客户端请求源端口由操作系统自动选择时: 允许客户端进行重试,客户端操作系统重连后,将通过不同的客户源端口发出请求,从而解决五元组冲突。 若用户业务对重置连接极其敏感,需要更高的连接成功率,则请通过跨VPC后端添加后端服务器。在跨VPC后端场景下,产品底层基于FullNAT模式实现,获取客户端IP功能将会失效,源IP将会修改为负载均衡器后端子网中的IP地址。此时,若用户有获取客户端真实源IP的诉求,请通过配置TOA插件获取,详情请参见TOA插件配置。 在多组监听场景下,避免监听器使用相同的后端服务器。
  • 为什么100或214开头的IP在频繁访问后端服务器? 共享型负载均衡实例以100.125.0.0/16网段中的IP作为源地址,向后端服务器转发前端业务流量及发起健康检查探测(如果您已开启健康检查)。 所以这些100.125开头的IP为弹性负载均衡服务与后端服务器通信所使用的内部IP,为了保证您的共享型负载均衡实例可正常提供服务,请确保后端服务器的安全策略已放通100.125.0.0/16网段。 如果共享型负载均衡实例所在区域已无100.125.0.0/16网段可供使用,将启用214.0.0.0/8网段中的IP作为源IP转发业务流量及发起健康检查探测。 父主题: 后端服务器
  • 如何检查ELB请求不均衡? 检查是否开启了会话保持。如果配置了会话保持,而客户端的个数又比较少时,很容易导致不均衡。 检查后端云服务器的健康检查状态是否正常,特别要关注下是否有健康检查状态一会正常一会异常的情况。健康检查异常或者状态切换都会导致流量不均衡。 检查负载均衡算法是否是源IP算法。此时同一个IP发过来的请求都会分发到同一个后端,导致流量不均衡。 后端服务是否开启了TCP keepalive保持长连接。如果开启,则有可能因为长连接上的请求数不同导致流量不均衡。 将云服务器添加到ELB后端时是否设置了权重,权重不同,分发的流量也不同。 一般情况下,影响负载均衡分配的因素包括分配策略、会话保持、长连接、权重等。换言之,最终是否均匀分配不仅与分配策略相关,还与使用的长短连接、后端的性能负载等相关。 父主题: 异常检查
  • 后端服务器可以反过来访问ELB吗? 通常情况,不建议同一台服务器既作为后端服务器又作为客户端的业务场景。 如果您有特殊业务需求,请谨慎选择方案。 公网通信:如果后端服务器绑定了公网IP地址,可以访问ELB的公网IP地址。 私网通信: 七层监听器支持后端服务器作为客户端访问ELB。 如果四层监听器开启“获取客户端IP”功能,不支持后端服务器作为客户端访问ELB。 如果四层监听器未开启“获取客户端IP”,支持后端服务器作为客户端访问ELB。 如果ELB开启“跨VPC后端”功能,“获取客户端IP”功能将失效,支持后端服务器作为客户端访问ELB。 父主题: 功能支持
  • 检查后端服务器路由 请检查是否手动修改了后端服务器内部的路由,查看主网卡(比如eth0)上是否配置默认路由,默认路由是否修改。如果默认路由更改,可能导致健康检查报文无法到达后端服务器。 您可以在后端服务器上通过以下命令查看您的默认路由是否指向网关(经过ELB转发属于跨网段访问,三层通信需要配置默认路由指向网关)。 ip route 或 route -n 正常的回显如图5所示。 图5 默认路由指向网关示例 图6 默认路由未指向网关示例 如果回显中没有像图5中的第一条路由信息,或者路由指向的IP的不是后端服务器所在VPC子网的网关,请您配置默认路由指向网关。
  • 检查后端服务器是否正常 如果后端服务器的操作系统为Windows,请通过浏览器直接访问https://后端服务器的IP : 健康检查配置的端口。如果返回码为2xx或3xx,则表示后端服务器正常。 您可以在后端服务器上通过以下命令查看后端服务器的健康检查端口是否被健康检查协议正常监听。 netstat -anlp | grep port 回显中包含健康检查端口信息并且显示LISTEN,则表示后端服务器的健康检查端口在监听状态,如图1中表示880端口被TCP进程所监控。 如果您没有配置健康检查端口信息,默认和后端服务器业务端口一致。 图1 后端服务器正常被监听的回显示例 图2 后端服务器没有被监听的回显示例 如果健康检查端口没有在监听状态(后端服务器没有被监听),您需要先启动后端服务器上的业务,启动业务后再查看健康检查端口是否被正常监听。 如果是HTTP健康检查,请您在后端服务器上执行以下命令查看回显中返回的状态码。 curl 后端服务器的私有IP:健康检查端口/健康检查路径 -iv HTTP健康检查是ELB向后端服务器发起GET请求,当获取到以下所列的响应状态码,认为服务器是正常状态。 对于TCP的监听器,HTTP健康检查正常返回状态码是200。 对于共享型ELB:HTTP健康检查正常返回状态码是200、202或者401。 图3 后端服务器异常的回显示例 图4 后端服务器正常的回显示例 如果HTTP健康检查异常,除了检查健康检查路径外,建议您将配置的HTTP健康检查修改为TCP健康检查。操作如下: 在监听器界面,修改目标监听器,在配置参数里选择已有TCP健康检查的后端服务器组,或者选择新创建TCP健康检查的后端服务器组。配置完成之后,几十秒后去查看健康检查状态是否恢复正常。
  • 后端服务器的安全组配置 共享型负载均衡的后端服务器安全组规则必须放通ELB用于健康检查的协议和端口和健康检查的源地址。 健康检查的协议和端口为用户在健康检查配置页面进行设置,您可在后端服务器组的基本信息页面查看。共享型负载均衡用于健康检查的源地址为100.125.0.0/16网段的IP。 您可通过自助诊断工具后端服务器的安全组规则进行诊断。后端服务器安全组规则的检查项目如下表2所示。 表2 安全组规则排查项目 排查项 处理措施 健康检查入方向源地址检查 请确保后端服务器的安全组入方向规则放通健康检查协议对应的传输层协议、健康检查端口和100.125.0.0/16网段的IP。 配置指导详情见配置后端服务器的安全组(共享型)。 健康检查入方向端口检查 健康检查入方向协议检查 健康检查出方向源地址检查 默认的安全组出方向规则全部放通。如果您设置了出方向规则,请确保后端服务器的安全组出方向规则放通健康检查协议对应的传输层协议、健康检查端口和100.125.0.0/16网段的IP。 配置指导详情见配置后端服务器的安全组(共享型)。 健康检查出方向端口检查 健康检查出方向协议检查 若共享型ELB实例开启“获取客户端IP”功能,共享型ELB四层监听器转发的流量将不受安全组规则和网络ACL限制,安全组规则和网络ACL规则均无需额外放通。建议您使用监听器的访问控制功能对访问IP进行限制,详情请参考访问控制策略。
  • 后端服务器的网络ACL配置 网络ACL为子网级别的可选安全层,若ELB的后端子网关联了网络ACL规则,网络ACL规则必须放通ELB用于健康检查的协议和端口和健康检查的源地址。 网络ACL默认规则会拒绝所有入站和出站流量,启用网络ACL后,您必须对网络ACL规则进行配置。 您可通过自助诊断工具后端服务器的安全组规则进行诊断。后端服务器的网络ACL规则的检查项目如下表3所示。 表3 网络ACL规则排查项目 排查项 处理措施 健康检查入方向协议检查 请确保后端服务器的网络ACL入方向规则放通健康检查协议对应的传输层协议、健康检查端口和100.125.0.0/16网段的IP。 配置指导详情见配置后端服务器的网络ACL规则(共享型)。 健康检查入方向源地址检查 健康检查入方向源端口检查 健康检查入方向目的地址检查 健康检查入方向目的端口检查 健康检查出方向协议检查 请确保后端服务器的网络ACL出方向规则放通健康检查协议对应的传输层协议、健康检查端口和100.125.0.0/16网段的IP。 配置指导详情见配置后端服务器的网络ACL规则(共享型)。 健康检查出方向源地址检查 健康检查出方向源端口检查 健康检查出方向目的地址检查 健康检查出方向目的端口检查 若共享型ELB实例开启“获取客户端IP”功能,共享型ELB四层监听器转发的流量将不受安全组规则和网络ACL限制,安全组规则和网络ACL规则均无需额外放通。建议您使用监听器的访问控制功能对访问IP进行限制,详情请参考访问控制策略。
  • 排查思路 负载均衡已提供自助问题诊断工具帮助用户定位健康检查异常问题,如果通过自助诊断工具排查仍然无法定位问题,请参考表1进一步排查。 因为健康检查包含检查间隔和阈值判断,相关配置的修改完成后需要等待一定的时间,配置才会生效。 如果健康检查恢复正常,在ELB关联的后端服务器基本信息界面可以看到健康检查状态是否正常。 表1 排查思路 排查手段 排查项目 自助诊断工具排查 后端服务器的安全组配置 后端服务器的网络ACL配置 健康检查参数配置 其他异常排查项 检查后端服务器组是否关联监听器 检查ELB是否绑定EIP或私网IP 检查后端服务器是否正常 检查后端服务器防火墙 检查后端服务器路由 检查后端服务器负载 检查后端服务器hosts.deny文件
  • 如何使用Linux curl测试负载均衡会话保持? 申请ELB与ECS资源。 创建3个ECS实例,1个做客户端,2个做服务端。 创建1个ELB实例与HTTP监听器实例,注意务必开启“会话保持”功能。 启动服务端ECS的HTTP服务。 登录第一个服务端ECS,在当前路径下创建名为“1.file”的文件,以标示第一个节点。 并在当前路径执行以下命令启动HTTP服务。 nohup python –m SimpleHTTPServer 80 & 在第一个部署后端服务的虚拟机执行以下命令,确认HTTP服务正常。 curl http://127.0.0.1:80 登录第二个服务端ECS,在当前路径下创建名为“2.file”的文件,以标示第二个节点。 并在当前路径执行以下命令启动HTTP服务。 nohup python –m SimpleHTTPServer 80 & 在本机执行以下命令,确认HTTP服务正常。 curl http://127.0.0.1:80 从客户端ECS指定cookie值对ELB实例发起访问。 调整以下命令,从客户端ECS对ELB实例发起访问,确认每次请求返回的file名称一致。 curl --cookie "name=abcd" http://ELB_IP:Port 父主题: 功能支持
  • ELB的IPv4/IPv6双栈实例可以切换到仅IPv4模式吗? 为实现ELB实例IPv4/IPv6双栈的能力,需要为ELB实例指定一个IPv6子网,用于分配访问ELB实例的IPv6地址,IPv6地址会从指定的子网中随机分配。 当您的实例需要关闭IPv6的功能,可以将ELB实例与IPv6地址解绑,IPv6地址将回收至子网中,无法再使用此IPv6地址访问ELB实例。 若要重新使用IPv4/IPv6双栈的能力,目前您可通过调用API的方式为ELB实例重新绑定IPv6子网,重新绑定后,为实例分配的IPv6地址无法保证与之前的IPv6地址一致。 父主题: 负载均衡器
  • ELB支持IPv6网络吗? 目前,共享型负载均衡仅支持IPv4网络,不支持IPv6网络。独享型负载均衡支持IPv4网络和IPv6网络。 对于四层独享型负载均衡,当客户端和ELB之间使用IPv6网络通信时,ELB和后端服务器之间必须使用IPv6网络通信;对于七层独享型负载均衡,当客户端和ELB之间使用IPv6网络通信时,ELB和后端服务器之间必须使用IPv4网络通信。 创建独享型负载均衡时,若指定的后端子网未开启IPv6,负载均衡实例创建后将不支持IPv6网络。 如果您的业务需要支持IPv6网络,您需要在创建独享型负载均衡时指定已开启IPv6的子网作为后端子网。 图1 四层独享型负载均衡支持的网络类型 图2 七层独享型负载均衡支持的网络类型 父主题: 功能支持
  • 如何通过监控数据和日志快速判断ELB的响应时间? 七层负载均衡HTTP和HTTPS可以通过监控指标项可以查看ELB的平均响应时间,同时可以通过日志查看每一次请求的响应时间。 登录控制台,并单击需要查询的负载均衡名称。 切换到“监控”页签,并选择正确的七层监听器。 查看“7层后端RT平均值”参数,可以得到负载均衡器到后端服务器的平均响应时间。 表1 平均响应时间 参数名 解释 7层后端的RT平均值 统计监听器当前7层后端平均响应时间。(HTTP和HTTPS监听器才有此指标) 从监听器将请求转发给后端服务器开始,到监听器收到后端服务器返回响应为止。 单位:毫秒。 如果您想查询七层协议每个请求的具体响应时间,您可以通过访问日志查看。 访问日志的“request_time”、“upstream_connect_time”、“upstream_header_time”或“upstream_response_time”字段计算可以查看ELB转发请求的耗时情况。访问日志获取方法,请参考访问日志。 表2 参数解释 参数名 解释 request_time 请求处理时间,即ELB收到第一个客户端请求报文到ELB发送完响应报文的时间间隔(单位:秒)。 upstream_connect_time 与上游服务器建立连接所花费的时间,时间以秒为单位,分辨率为毫秒。当ELB代理进行请求重试时会包含多个连接的时间,当请求未被正确转发到后端服务器时此字段为 -。 upstream_header_time 从上游服务器接收响应头所花费的时间,时间以秒为单位,分辨率为毫秒。当ELB代理进行请求重试时会包含多个响应时间,当请求未被正确转发到后端服务器时此字段为 -。 upstream_response_time 从上游服务器接收响应所花费的时间,时间以秒为单位,分辨率为毫秒。当ELB代理进行请求重试时会包含多个响应时间,当请求未被正确转发到后端服务器时此字段为 -。 父主题: 功能支持
  • 如何排查ELB返回至客户端的异常请求头? 在异常返回码的基础上,ELB会将典型的异常情况通过“x-router-code” header头通知客户端,常见的有40000,40001,50000, 50001,您可以参考下表排查异常header值的可能原因: 表1 ELB返回至客户端的异常请求头 header值 含义 可能原因 40000 默认后端服务器组没有配置后端后端服务器 客户端请求没有命中任何转发策略。 后端服务器组没有配置后端服务器。 40001 转发策略对应的后端服务器组没有配置后端服务器 客户端请求命中了错误的转发策略。 转发策略对应的后端服务器组没有配置后端服务器。 50000 ELB的后端服务器全都不可用 健康检查配置异常,导致ELB认为后端服务器异常不可用。 后端服务器自身异常不可用,需自行排查后端服务器。 50001 配置正在加载中 配置尚未加载完毕,请等待配置加载完成,稍后重试。 父主题: 异常检查