SLB(Server Load Balancer,服务器负载均衡)监听协议使用TCP时,意味着SLB将以第4层(传输层)网络协议为基础进行流量分发和管理,而非处理第7层(应用层)的HTTP(S)协议细节。以下是关于SLB使用TCP协议作为监听协议的一些关键要点:
适用场景:
WebSocket支持:由于HTTP协议不支持WebSockets,若您的应用程序需要使用WebSocket长连接,那么切换至TCP监听协议是必要的。TCP监听能够透明地处理WebSocket握手和后续的数据传输,解决了SLB在HTTP模式下无法与WebSocket兼容的问题。
通用TCP服务:对于任何基于TCP的应用层协议,如FTP、SMTP、IMAP、定制的二进制协议等,当这些服务不需要或不依赖于HTTP特定头部或语义解析时,使用TCP监听协议更为合适。这样,SLB仅负责维持TCP连接,并根据负载均衡策略将数据包转发到后端服务器,而无需解析或修改应用层数据。
配置与管理:
监听端口:在配置TCP监听时,需要指定一个监听端口(如示例中的5555或6666),这是客户端与SLB建立连接的入口点。
健康检查:对于TCP监听,健康检查通常采用TCP握手的方式来检测后端服务器的可用性。即SLB会尝试与后端服务器建立TCP连接,如果连接成功建立并迅速断开(或按照配置的超时时间维持),则认为该服务器健康。具体的健康检查频率、超时设置和响应阈值可根据服务需求进行调整。
会话保持:在TCP监听模式下,SLB可以实现基于源IP地址的会话保持,确保同一客户端IP地址发起的连续请求始终被转发到同一台后端服务器,以维护会话状态的一致性。
安全与证书:
SSL/TLS卸载:如果您的服务需要SSL/TLS加密,但希望在SLB层面完成解密(TLS termination),则需要配置SSL/TLS证书到SLB,并将监听协议设置为TCP(SSL)。这样,客户端与SLB之间的通信是加密的,而SLB与后端服务器之间则使用明文的TCP连接。
端到端加密:若要求端到端的SSL/TLS加密(即客户端直通到后端服务器),则应配置TCP监听,并在后端服务器上直接处理SSL/TLS。SLB在此情况下仅作为纯粹的TCP代理,不参与加密过程。
特定功能与限制:
附加HTTP头:如需传递关于原始请求协议的信息(如是否为HTTPS),可能需要启用如
X-Forwarded-Proto
头字段的传递功能,以便后端服务器能够识别客户端实际使用的协议。特定平台或服务限制:某些特定的云服务或部署模型(如Serverless应用引擎公网SLB)可能对直接配置TCP监听在特定端口(如80和443)有所限制,需遵循相应平台的具体规定或解决方案。
综上所述,SLB使用TCP作为监听协议适用于需要支持WebSocket、通用TCP服务、以及特定加密策略(如SSL/TLS卸载或端到端加密)的场景。配置时需关注监听端口设定、健康检查参数、会话保持策略以及可能的安全与证书需求。同时,需留意云服务提供商针对TCP监听的特定功能支持和任何潜在限制。