在腾讯云架构中,实现 CVM 流量分发与高可用的标准方案是结合应用型负载均衡 CLB 与多可用区 CVM 实例。通过 CLB 统一入口流量,配合健康检查机制,可在后端某台 CVM 故障时自动切换,保障业务连续性。
核心结论:CLB 是官方推荐的流量入口,配合多可用区 CVM 可消除单点故障,但必须严格配置安全组最小权限。
- 适用场景:业务需要对外提供服务且要求持续可用,避免单实例宕机导致中断
- 前置条件:至少两台不同可用区的 CVM 实例,同一 VPC 网络,已安装应用服务
- 验收标准:通过 curl 循环请求确认流量分发,模拟故障确认自动切换
前置准备
确保至少有两台 CVM 实例运行正常,且安装了相同的应用服务(如 Nginx 或 Tomcat),监听端口一致(例如 80 或 443)。建议将这两台 CVM 分布在不同的可用区,以规避机房级故障。
为便于验证负载效果,建议在不同 CVM 上部署不同内容的首页(例如修改 index.html 显示主机名或 IP)。
# 示例:在 CVM 上修改 Nginx 首页标识不同后端
echo "Backend Server 1" > /usr/share/nginx/html/index.html配置负载均衡实例
登录腾讯云控制台,进入负载均衡页面,点击“创建”。网络类型选择“私有网络”,确保与 CVM 在同一 VPC 下。类型建议选择“应用型负载均衡”,支持更灵活的七层转发规则。
若需自动化部署,可使用腾讯云 CLI 工具(需先安装配置 tccli):
# 创建负载均衡实例(示例参数,请根据实际 Region 调整)
tccli clb CreateLoadBalancer `--LoadBalancerType` "OPEN" `--Region` "ap-guangzhou" `--LoadBalancerName` "MyCLB" `--VpcId` "vpc-xxxxxx" `--SubnetId` "subnet-xxxxxx"创建完成后,在 CLB 实例详情页点击“添加监听器”。选择协议类型(TCP/HTTP/HTTPS),设置前端端口。在“后端服务”环节,勾选已准备好的 CVM 实例,并填写对应的后端端口。务必开启“健康检查”功能,默认配置通常可用,若有特殊健康检查路径需手动修改。
# 创建监听器并绑定目标(示例)
tccli clb CreateListener `--LoadBalancerId` "lb-xxxxxx" `--Protocol` "HTTP" `--Port` 80 `--Region` "ap-guangzhou"
tccli clb RegisterTargets `--LoadBalancerId` "lb-xxxxxx" `--ListenerId` "lis-xxxxxx" `--Targets` "[{\"InstanceId\":\"ins-xxxxxx\",\"Port\":80,\"Weight\":10}]" `--Region` "ap-guangzhou"安全组最小权限配置
这是最容易遗漏且存在风险的环节。CLB 与 CVM 之间通过私有网络通信,严禁在 CVM 安全组中直接开放 0.0.0.0/0 访问业务端口,否则后端服务将直接暴露在公网,绕过 CLB 防护。
正确配置方式:
- 检查 CVM 关联的安全组,确保入站规则允许来自VPC 网段(例如 10.0.0.0/16)或CLB 实例所在子网网段的流量访问业务端口。
- 若 CLB 实例本身关联安全组,需确保其出站规则允许访问 CVM 端口。
# 安全组规则示例(入站)
优先级:1
策略:允许
端口:80/443
源 IP:10.0.0.0/16 (您的 VPC CIDR)验证负载效果
1. 控制台状态检查
在 CLB 控制台的“后端服务”列表中,查看 CVM 的健康状态。若显示“健康”,说明连接正常;若显示“异常”,需检查安全组或应用服务是否启动。
2. 外部访问测试
使用 curl 命令访问 CLB 的公网 IP 地址。多次刷新请求,观察返回内容。若配置了多台 CVM 且未开启会话保持,多次请求应可能落到不同后端服务器。
# 循环请求 10 次,观察返回内容变化
for i in {1..10}; do curl http://<CLB_PUBLIC_IP>; echo ""; done3. 故障模拟
手动停止其中一台 CVM 实例,或停止其上的 Web 服务(如 systemctl stop nginx)。持续访问 CLB IP,观察服务是否中断。正常情况下,请求应自动切换到另一台健康的 CVM,用户侧无明显感知。
常见故障排查
1. 安全组拦截
配置完 CLB 后发现无法访问,多数是安全组问题。确保 CVM 安全组允许 VPC 内网段访问,而非仅允许公网 IP。
2. 健康检查路径错误
若使用七层监听,健康检查默认可能请求根路径。如果应用未配置根路径返回 200 状态码,健康检查会失败,导致流量无法分发。建议指定一个稳定的健康检查接口路径(如 /health)。
3. 会话保持影响负载
若开启了会话保持(Session Stickiness),同一用户的请求会固定转发到同一台 CVM。在测试负载均衡效果时,需关闭此功能或使用不同客户端 IP 测试,否则可能误以为负载不均衡。
计费说明
CLB 实例本身收取实例费与流量费。若 CLB 与 CVM 不在同一可用区,虽然实现了高可用,但可能会产生跨可用区流量费用。具体费用请参考腾讯云官方计费文档,建议在成本控制严格的生产环境中确认计费规则。
参考文档
1. 腾讯云官方文档 - 负载均衡产品简介
URL: https://cloud.tencent.com/document/product/214
2. 腾讯云官方文档 - 配置健康检查
URL: https://cloud.tencent.com/document/product/214/30729
3. 腾讯云官方文档 - 安全组配置指南
URL: https://cloud.tencent.com/document/product/213/16294