负载均衡必须与后端服务器同地域;阿里云内网型slb严格限制同地域,公网型clb跨地域需额外开通跨vpc能力,健康检查失败多因地域或可用区不匹配。

负载均衡必须和后端服务器在同一个地域吗?
阿里云严格要求负载均衡实例与后端ECS必须同地域(如都在华北2-北京),跨地域绑定仅限公网型CLB(腾讯云叫“公网负载均衡”)且需额外开通跨VPC能力;阿里云内网型SLB完全不支持跨地域——这是最常踩的坑,配完发现健康检查全失败,八成是地域选错了。
- 阿里云:创建SLB时地域下拉菜单只列出你已购ECS所在的地域,系统自动过滤不兼容选项
- 腾讯云:公网CLB控制台明确提供“后端服务器地域”下拉框,默认与CLB同地域,但可手动切换(如CLB在北京,后端CVM选上海)
- 健康检查失败时,先查
DescribeZones接口返回的可用区列表,再核对ECS实例的ZoneId是否匹配SLB的ZoneId
监听协议选HTTP还是TCP?影响会话保持和URL转发
四层(TCP/UDP)只做IP+端口转发,不解析HTTP头;七层(HTTP/HTTPS)能读取Host、Path、Cookie等字段,但多一层解析开销。选错会导致会话保持失效或路径重写失败。
- 需要基于域名分流(如
api.example.com→ 后端A,www.example.com→ 后端B)→ 必须用HTTP/HTTPS监听 - 后端是MySQL、Redis或自定义TCP服务 → 只能用TCP监听,HTTP监听会直接报错
400 Bad Request - 阿里云TCP监听不支持
ip_hash会话保持,仅HTTP监听支持;腾讯云CLB的TCP监听可通过“连接保持”开关模拟(实际是源IP哈希)
安全组怎么放行才不被拦截?
负载均衡流量进入后端服务器时,走的是**内网流量路径**,但源IP会被替换为负载均衡的私网IP(阿里云叫“SLB私网IP”,腾讯云叫“CLB内网地址”),不是客户端真实IP——所以安全组规则不能只放行客户端IP段。
- 阿里云:后端ECS安全组入方向需放行SLB实例所在VPC网段(如
172.16.0.0/16)+ SLB私网IP(可在SLB控制台“基本信息”页看到,形如100.104.x.x) - 腾讯云:CVM安全组需放行CLB所在子网网段(如
10.0.1.0/24),CLB内网IP默认属于该子网 - 若开启“获取真实客户端IP”(X-Forwarded-For),安全组仍按上述规则放行,只是应用层日志里能拿到原始IP
健康检查为什么老失败?关键参数对照表
健康检查失败≠后端服务挂了,大概率是协议、端口或响应码配置不匹配。阿里云和腾讯云默认检查行为差异明显:
- 阿里云HTTP健康检查默认用
HEAD /请求,超时3秒,失败阈值3次;腾讯云CLB默认用GET /,且要求返回2xx或3xx,而阿里云允许配置自定义HealthyHttpCode(如填200,302) - 后端是Nginx静态站,没配
location /处理HEAD → 阿里云健康检查必失败;换成GET或加location = / { return 200; }即可 - 腾讯云CLB TCP健康检查只发SYN包,不校验响应内容;阿里云SLB TCP检查会尝试建立完整TCP连接并等待ACK,对高并发端口有压力
netstat -tlnp | grep :端口号有没有监听0.0.0.0,再看安全组和健康检查参数——很多“配置完了不生效”的问题,其实连端口都没真正通。










