云服务器内容精选

  • GRPC健康检查 图6 GRPC健康检查 GRPC健康检查机制如下: ELB节点根据健康检查配置,向后端服务器(IP+端口+检查路径)发出POST或GET请求(可以选择设置 域名 )。 后端服务器收到请求后,根据服务的情况返回相应的状态码。 ELB通过读取HTTP/2头中的grpc-status的值作为返回的GRPC状态码。 如果七层ELB节点在响应超时时间内收到了后端服务器的响应,将返回的GRPC状态码与自定义的健康检查返回码进行对比,如果匹配则认为健康检查成功,后端服务器运行正常。 如果七层ELB节点在响应超时时间内没有收到后端服务器的响应,则判定健康检查失败。
  • HTTP健康检查 对于四层(TCP)和七层(HTTP/HTTPS)后端协议,您可以配置HTTP健康检查,通过HTTP GET请求来获取状态信息。检查原理如图3所示。 图3 HTTP健康检查 HTTP健康检查机制如下: ELB节点根据健康检查配置,向后端服务器(IP+端口+检查路径)发出HTTP GET请求(可以选择设置域名)。 后端服务器收到请求后,根据服务的情况返回相应的HTTP状态码。 如果七层ELB节点在响应超时时间内收到了后端服务器的响应,将HTTP状态码与预置的状态码进行对比,如果匹配则认为健康检查成功,后端服务器运行正常。 如果七层ELB节点在响应超时时间内没有收到后端服务器的响应,则判定健康检查失败。
  • 健康检查时间窗 健康检查机制的引入,有效提高了业务服务的可用性。但是,为了避免频繁的健康检查失败引起的切换对系统可用性的冲击,健康检查只有连续多次检查成功或失败后,才会进行状态切换。 以共享型负载均衡的健康检查为例,健康检查时间窗由表2中的三个因素决定: 表2 健康检查时间窗的影响因素 影响因素 说明 检查间隔 每隔多久进行一次健康检查。 超时时间 等待服务器返回健康检查的时间。 健康检查阈值 判定健康检查结果正常或异常时,所需的健康检查连续成功或失败的次数。 健康检查时间窗的计算方法如下: 健康检查成功时间窗 = 超时时间×健康检查正常阈值 + 检查间隔×(健康检查正常阈值-1) 健康检查失败时间窗 = 超时时间×健康检查异常阈值 + 检查间隔×(健康检查异常阈值-1) 如图7所示: 检查间隔:4s 超时时间:2s 健康检查异常阈值:3次 健康检查检测到后端服务器从正常到失败状态,健康检查失败时间窗 = 超时时间×健康检查异常阈值+检查间隔×(健康检查异常阈值-1) = 2 x 3+4 x (3-1) = 14s。 图7 健康检查失败时间窗
  • UDP健康检查 对于四层(UDP)后端协议,默认配置UDP健康检查,通过发送UDP探测报文获取后端服务器的状态信息,如图2所示。 图2 UDP健康检查 UDP健康检查机制如下: 四层ELB节点根据健康检查配置,向后端服务器发送ICMP Echo Request报文。 如果在超时时间内没有收到ICMP Echo Reply报文,则判定健康检查失败。 如果在超时时间内收到了ICMP Echo Reply报文,则向后端服务器发送UDP探测报文。 如果在超时时间内没有收到后端服务器返回的ICMP Port Unreachable报文,则判定健康检查成功。否则,判定健康检查失败。
  • HTTPS健康检查 对于四层(TCP)和七层(HTTP/HTTPS)后端协议,您也可以配置HTTPS健康检查。HTTPS健康检查首先通过TLS握手建立SSL连接,再通过发送加密的HTTP GET请求来获取后端服务器的状态信息。检查原理如图4所示。 图4 HTTPS健康检查 HTTPS健康检查机制如下: ELB节点向后端服务器发送Client Hello请求,与后端服务器建立SSL连接。 ELB节点收到后端服务器返回Server Hello报文后,根据健康检查配置,向后端服务器(IP+端口+检查路径)发出加密的HTTP GET请求(可以选择设置域名)。 后端服务器收到请求后,根据服务的情况返回相应的HTTP状态码。 如果七层ELB节点在响应超时时间内收到了后端服务器的响应,将HTTP状态码与预置的状态码进行对比,如果匹配则认为健康检查成功,后端服务器运行正常。 如果七层ELB节点在响应超时时间内没有收到后端服务器的响应,则判定健康检查失败。
  • TLS健康检查 对于HTTP、HTTPS和TLS后端协议,您可以配置TLS健康检查,通过TLS 握手,发送Client Hello,解析服务端发送的Server Hello来获取后端服务器的状态。 图5 TLS健康检查 TLS健康检查的机制如下: ELB节点根据健康检查配置,向后端服务器(IP+健康检查端口)发送TCP SYN报文。 如果在超时时间内没有收到SYN+ACK报文,则判定健康检查失败。 如果在超时时间内收到了SYN+ACK报文,则向后端服务器发送会发送Client Hello(SSL协商),协商的版本号包括了TLSv1.0、TLSv1.1、TLSv1.2、TLSv1.3。 如果在超时时间内收到后端服务器返回的Server Hello报文,则判定健康检查成功。否则,判定健康检查失败。
  • 健康检查协议 您可以在创建后端服务器组和创建监听器时为后端服务器组配置健康检查,通常,使用默认的健康检查配置即可,也根据业务需要选择不同的健康检查协议。 您也可以在后端服务器组创建后修改健康检查,详情可见修改健康检查配置。 后端服务器组的后端协议与支持的健康检查协议存在匹配关系,详情请参见表1。 表1 后端服务器组支持的健康检查协议(独享型) 后端服务器组的后端协议 健康检查协议 TCP TCP、HTTP、HTTPS UDP UDP QUIC UDP TLS TCP、HTTP、HTTPS、TLS、GRPC HTTP TCP、HTTP、HTTPS、TLS、GRPC HTTPS TCP、HTTP、HTTPS、TLS、GRPC GRPC TCP、HTTP、HTTPS、TLS、GRPC TLS协议与GRPC协议陆续上线中,已发布区域请参见弹性负载均衡支持TLS协议和弹性负载均衡支持GRPC协议。
  • TCP健康检查 对于四层(TCP)和七层(HTTP/HTTPS)后端协议,您可以配置TCP健康检查,通过发起TCP三次握手来获取后端服务器的状态信息,如图1所示。 图1 TCP健康检查 TCP健康检查的机制如下: ELB节点根据健康检查配置,向后端服务器(IP+健康检查端口)发送TCP SYN报文。 后端服务器收到请求报文后,如果相应的端口已经被正常监听,则会返回SYN+ACK报文。 如果在超时时间内没有收到后端服务器的SYN+ACK报文,则判定健康检查失败。随后发送RST报文给后端服务器中断TCP连接。 如果在超时时间内收到了SYN+ACK报文,则判定健康检查成功,并进一步发送ACK报文给后端服务器。随后发送RST报文给后端服务器中断TCP连接。 正常的TCP三次握手后,会进行数据传输,但是在健康检查时会发送RST中断建立的TCP连接。该实现方式可能会导致后端服务器中的应用认为TCP连接异常退出,并打印错误信息,如“Connection reset by peer”。解决方案如下: 采用HTTP健康检查。 后端服务器忽略健康检查的连接错误。
  • 四层会话保持和七层会话保持的区别 按照所使用的协议的不同,会话保持可以分为四层会话保持和七层会话保持。 表1 四层会话保持和七层会话保持的区别 类型 说明 支持的会话保持类型 会话保持时间 会话保持失效的场景 四层会话保持 当使用的协议为TCP或UDP时,即为四层会话保持。 源IP地址:基于源IP地址的简单会话保持,将请求的源IP地址作为散列键(HashKey),从静态分配的散列表中找出对应的服务器。即来自同一IP地址的访问请求会被转发到同一台后端服务器上进行处理。 默认时间:20分钟 最长时间:60分钟 取值范围:1-60分钟 客户端的源IP地址发生变化。 客户端访问请求超过会话保持时间。 七层会话保持 当使用的协议为HTTP或HTTPS时,即为七层会话保持。 负载均衡器cookie:负载均衡器会根据客户端第一个请求生成一个cookie,后续所有包含这个cookie值的请求都会由同一个后端服务器处理。 应用程序cookie:该选项依赖于后端应用。后端应用生成一个cookie值,后续所有包含这个cookie值的请求都会由同一个后端服务器处理。 默认时间:20分钟 最长时间:1440分钟 取值范围:1-1440分钟 如果客户端发送请求未附带cookie,则会话保持无法生效。 客户端访问请求超过会话保持时间。 当分配策略类型选择“源IP算法”时,四层和七层会话已支持基于源IP地址的会话保持。 当分配策略类型选择“加权轮询算法”或“加权最少连接”时,才可配置会话保持。
  • 健康检查时间窗 健康检查机制的引入,有效提高了业务服务的可用性。但是,为了避免频繁的健康检查失败引起的切换对系统可用性的冲击,健康检查只有连续多次检查成功或失败后,才会进行状态切换。 以共享型负载均衡的健康检查为例,健康检查时间窗由表3中的三个因素决定: 表3 健康检查时间窗的影响因素 影响因素 说明 检查间隔 每隔多久进行一次健康检查。 超时时间 等待服务器返回健康检查的时间。 健康检查阈值 判定健康检查结果正常或异常时,所需的健康检查连续成功或失败的次数。 健康检查时间窗的计算方法如下: 健康检查成功时间窗 = 超时时间×健康检查正常阈值 + 检查间隔×(健康检查正常阈值-1) 健康检查失败时间窗 = 超时时间×健康检查异常阈值 + 检查间隔×(健康检查异常阈值-1) 如图7所示: 检查间隔:4s 超时时间:2s 健康检查异常阈值:3次 健康检查检测到后端服务器从正常到失败状态,健康检查失败时间窗 = 超时时间×健康检查异常阈值+检查间隔×(健康检查异常阈值-1) = 2 x 3+4 x (3-1) = 14s。 图7 健康检查失败时间窗