监听基于配置的转发策略,将业务请求路由至指定的服务器组。服务器组按照调度算法,将业务流量分发至相应的后端服务器。
工作原理
服务器组类型
服务器组类型 | 默认服务器组 | 虚拟服务器组 | 主备服务器组 |
类型说明 | 每个CLB实例自带一个默认服务器组 (有且仅有一个) | 用户自行创建与管理 | 用户自行创建与管理 |
后端服务器数量 | 一个或多个 | 一个或多个 | 两个(一主一备) |
特点 |
|
|
|
适用场景 | 简单架构,所有请求转发到同一组后端服务器 | 复杂架构,例如按照域名/端口分发业务请求 | 数据库、核心API 等固定主备模式的业务 |
支持监听类型 | TCP/UDP/HTTP/HTTPS | TCP/UDP/HTTP/HTTPS | 仅TCP/UDP |
权重配置
调度算法决定 CLB 如何将收到的请求分发到后端的多个服务器。权重则是在支持加权的算法中,控制每台服务器流量分配比例的参数。
生效范围:使用支持加权的调度算法。轮询算法不生效。
取值范围:0-100,默认值为100。
权重为0的行为:服务器不再接收新的请求流量。但已建立的连接会继续处理直至正常断开,健康检查也会继续进行。常用于服务器的优雅下线。
权重变更的生效范围:权重变更只对新建连接生效,不影响已建立的连接。在长连接场景下,调整权重后流量变化会比较缓慢。
服务高可用
开启 CLB 健康检查,定期发送请求来确认服务器的状态。
健康检查成功:服务器状态正常,CLB 会将流量转发给该服务器。
健康检查失败:服务器状态异常,CLB 会停止向该服务器转发任何新的请求流量,直至其恢复正常。
CLB 健康检查使用 100.64.0.0/10 网段,需确保后端服务器的安全组策略已放行此网段的访问,否则健康检查会失败,导致业务中断。主备服务器依赖健康检查进行主备切换:
主服务器健康检查失败后,流量将切换到备服务器。由于备服务器默认不做健康检查,需要用户自行确保备服务器的可用性,保证切换后可用。
主备服务器的切换时间取决于设置的健康检查响应超时时间,当主机健康检查恢复之后流量会自动切换至主机。
适用范围
关联关系:
监听与服务器组是 CLB 实例维度的资源。不同 CLB 实例的监听、服务器组信息不互通。
一个服务器组能同时被多个监听绑定,但是一个监听只能同时绑定一个服务器组。
CLB 四层监听不支持ECS实例同时作为后端服务器和客户端。如有需求,可使用七层监听。
挂载后端服务器:
CLB 仅支持挂载同账号、同地域的后端服务器。
私网 CLB 实例:只能挂载 CLB 所属 VPC 内的后端服务器。
公网 CLB 实例:添加多个后端服务器必须属于同一个 VPC。
CLB 所有类型服务器组均支持挂载如下资源:云服务器ECS、弹性网卡ENI、弹性容器ECI。
仅支持添加已经绑定至ECS的弹性网卡。弹性网卡的主私网IP及辅助私网IP均可以添加。
ECS 作为后端服务器,进行热迁移时,可能导致CLB长连接断开,重新连接后即可恢复。需确保应用程序具备自动重连机制。
配置可修改性:
配置可修改性
增删服务器组
修改端口
修改权重
默认服务器组
首次创建监听并关联后,端口不可修改
虚拟服务器组
主备服务器组
主备角色不支持修改
配置服务器组
控制台
默认服务器组
无需创建,每个CLB实例自带一个默认服务器组。
添加服务器:
前往CLB - 实例管理页面,单击目标实例 ID,选择默认服务器组页签,单击添加。
设置服务器类型、资源组,筛选可用资源。
如需添加弹性网卡 ENI,需先打开高级模式,并单击已绑定弹性网卡的ECS实例右侧的加号图标,找到目标弹性网卡。勾选需要绑定的弹性网卡,可选择IP地址。
配置端口与权重:
配置端口:选择监听页签,单击添加监听。在后端服务器向导界面,设置默认服务器组的服务器端口,同一监听下默认服务器组内的不同服务器的端口必须相同。
仅支持添加监听时指定端口,后续无法修改。
配置权重:设置已选服务器的权重。
虚拟服务器组
前往CLB - 实例管理页面,单击目标实例 ID,选择虚拟服务器组,单击创建虚拟服务器组。
添加服务器:
设置服务器类型、资源组,筛选可用资源。
如需添加弹性网卡 ENI,需先打开高级模式,并单击已绑定弹性网卡的ECS实例右侧的加号图标,找到目标弹性网卡。勾选需要绑定的弹性网卡,可选择IP地址。
配置已选服务器的端口和权重。选择添加端口,可以为同一个后端服务器配置多个不同的端口。
主备服务器组
前往CLB - 实例管理页面,单击目标实例 ID,选择主备服务器组,单击创建主备服务器组。
添加服务器:
设置服务器类型、资源组,筛选可用资源。
如需添加弹性网卡 ENI,需先打开高级模式,并单击已绑定弹性网卡的ECS实例右侧的加号图标,找到目标弹性网卡。勾选需要绑定的弹性网卡,可选择IP地址。
仅支持添加 2 台后端服务器。
配置已选服务器的端口,选择添加端口,可以为同一个后端服务器配置多个不同的端口。添加后,选择主机,配置主备关系。
API
默认服务器组
调用AddBackendServers添加后端服务器。
调用SetBackendServers设置后端服务器权重。
调用RemoveBackendServers移除后端服务器。
虚拟服务器组
调用CreateVServerGroup创建虚拟服务器组并添加后端服务器,配置端口和权重。
调用AddVServerGroupBackendServers/RemoveVServerGroupBackendServers,从指定的虚拟服务器组中添加/移除后端服务器。
调用DeleteVServerGroup删除虚拟服务器组。
主备服务器组
调用CreateMasterSlaveServerGroup创建主备服务器组。
调用DeleteMasterSlaveServerGroup删除主备服务器组。
常见问题
CLB实例处于运行中是否可调整ECS数量?
默认服务器组、虚拟服务器组:支持在任意时刻增加或减少负载均衡的后端ECS实例数量,且支持不同ECS实例之间的切换。为保障服务稳定,确保在执行操作前已开启健康检查,且后端至少有一台正常运行的ECS实例。
主备服务器组:不支持调整。
后端ECS实例的操作系统是否可以不同?
可以不同。
CLB 不限制后端 ECS 实例的操作系统,只要确保应用服务部署相同且数据一致即可。建议使用相同的操作系统,以便于统一管理和维护。
可以使用不同地域的ECS实例作为后端服务器吗?
CLB 不支持直接挂载跨地域的后端服务器。若需实现跨地域部署,可选择以下方案:
结合全局流量管理产品,在CLB上层部署全局流量管理并且在各地域部署多个CLB,通过切换不同的CLB实现跨地域挂载。
使用支持跨地域挂载后端服务器的应用型负载均衡ALB或网络型负载均衡 NLB。
为什么有100开头的IP在频繁访问ECS实例?
请求来自负载均衡系统的健康检查和可用性监控。
来源:阿里云保留地址段
100.64.0.0/10。安全性:该网段由阿里云保留,其他用户无法分配,不存在安全风险。
配置建议:请在安全组中放行该网段,以确保服务可用性。
ECS实例上没有配置压缩,为什么从CLB返回的HTTP响应却被压缩了?
原因:CLB 监听配置中开启了 Gzip 压缩,且客户端浏览器支持压缩。
操作:如需关闭,请在 CLB 控制台的监听配置中关闭 Gzip 压缩功能,或改用 TCP 监听。
ECS实例使用了HTTP 1.0是否支持chunked transfer传输编码?
支持。
为什么CLB后端ECS实例频繁收到User-Agent为KeepAliveClient的请求?
现象:后端 ECS 收到大量来自内网 IP、User-Agent为
KeepAliveClient的 GET 请求。原因:监听协议为 TCP,但健康检查协议配置为 HTTP。TCP 监听使用 HTTP 健康检查时,默认使用 GET 方法。
解决:将监听协议和健康检查协议统一(如都使用 TCP 或都使用 HTTP)。
默认服务器组下的服务器端口支持修改吗?
不支持直接修改。
限制:默认服务器组的端口仅能在创建监听时设置,且同一监听下的所有后端服务器端口必须一致。
解决:如需为同一监听配置不同的后端端口,请使用虚拟服务器组。
CLB四层监听支持ECS实例同时作为后端服务器和客户端?
不支持,上述配置会导致访问环路。
替代方案:
使用 CLB 七层监听(HTTP/HTTPS)。
使用 NLB 实例并关闭服务器组的客户端地址保持功能。参考ECS如何在NLB中同时作为后端服务器和客户端。
为什么CLB后端存在大量TIME-WAIT连接,而ALB后端只有少量?
传统型负载均衡CLB和应用型负载均衡ALB在与后端服务器交互时,采用的连接机制不同。
传统型负载均衡CLB:默认使用HTTP短连接。CLB将请求转发给后端服务器时,会在HTTP头部插入
Connection: close字段。当后端服务器处理完该请求后,会根据此头部主动发送FIN包断开连接,每次断开连接都会进入TIME-WAIT状态(默认60秒),高并发场景下会快速积累大量TIME-WAIT连接。应用型负载均衡ALB:默认支持HTTP长连接(keep-alive)。单个TCP连接可复用处理多个请求,长连接开启情况下会减少连接断开次数,因此减少了TIME-WAIT连接。