腾讯云SLB负载均衡搭建网站集群完全指南:从单点故障到高可用架构
一、为什么你的网站需要负载均衡
在网站发展的初期,很多开发者会选择直接购买一台云服务器,将Nginx、后端应用、数据库全部部署在同一台机器上。这种“单机走天下”的模式在开发测试阶段确实简单高效,但当网站面向真实用户时,问题就会接踵而至。
最致命的风险是单点故障。无论云服务商的硬件多么可靠,服务器宕机、操作系统崩溃、应用程序异常退出等情况随时可能发生。一旦这台唯一的服务器出现问题,整个网站就会完全不可用,用户流失和业务损失难以估量。其次,单台服务器的资源总是有限的。当网站流量增长时,CPU、内存、网络带宽都会成为瓶颈,而垂直扩容(升级配置)不仅成本高昂,还受到硬件天花板的限制。此外,将静态资源、业务代码、数据库全部混在一起,不仅增加了运维复杂度,也模糊了安全边界。
解决这些问题的核心思路是水平扩展——通过增加服务器实例的数量来分担负载,而不是依赖单台机器的无限升级。水平扩展的关键在于需要一个统一的流量入口,将用户请求智能地分发到后端的多台服务器上。这个入口就是负载均衡器。
在企业级生产环境中,一个典型的云上Web服务架构通常包含以下几个层次:
- 入口流量层:由负载均衡器(腾讯云CLB)负责接收所有用户请求,并根据策略分发给后端服务器
- 业务计算层:由多台云服务器(CVM)组成集群,运行相同的业务应用程序
- 静态资源层:使用对象存储(COS)存放图片、视频、CSS、JavaScript等静态文件
- 数据存储层:使用云数据库(如TencentDB)托管关系型数据,与业务层通过内网通信
这种分层架构的优势显而易见:业务服务可以水平扩容,单台服务器故障不会导致整体服务不可用,数据库由云厂商托管具备完善的备份和高可用能力,各层之间的安全边界清晰。而这一切的核心,正是负载均衡CLB。
需要先登录腾讯云控制台,点击:腾讯云控制台,还没有账号,点击:注册后再关联,已有账号点击:登录后再关联
二、腾讯云CLB核心概念详解
2.1 什么是CLB
腾讯云负载均衡(Cloud Load Balancer,简称CLB)是一种将网络流量分发到多台后端服务器的云服务。它位于用户和云服务器之间,负责接收所有 incoming 请求,然后根据配置的均衡策略将请求转发到后端服务器池中的某一台实例上。
CLB自身采用集群部署模式,支持会话同步,从根本上消除了单点故障,提升了系统冗余。这意味着即使CLB集群中的某个节点出现问题,整个负载均衡服务依然可以正常工作。
2.2 四层负载均衡与七层负载均衡
CLB支持两种负载均衡类型,它们的区别在于依据什么层面的信息来转发流量:
四层负载均衡工作在传输层,主要依据VIP(虚拟IP地址)和端口来接收请求并转发流量。它支持TCP、UDP、TCP SSL、QUIC等协议。四层负载均衡采用透传模式,不修改任何数据包,转发效率极高。适用于对可靠性要求高的场景,如文件传输、邮件服务、远程登录等。
七层负载均衡工作在应用层,可以基于URL、HTTP头部等应用层信息进行智能流量分发。它支持HTTP和HTTPS协议。七层负载均衡能够实现基于域名和URL路径的灵活转发,适合Web应用、API网关等场景。
在实际的网站集群搭建中,七层负载均衡是更常见的选择,因为它能够根据请求的域名、路径等维度将流量路由到不同的后端服务组。
2.3 监听器的核心作用
创建CLB实例后,需要配置监听器才能真正开始工作。监听器是CLB的核心组件,它负责监听负载均衡实例上的请求,并依据均衡策略将流量分发至后端服务器。
一个完整的监听器配置包含以下四个要素:
- 监听协议和端口:即前端端口,用于接收用户请求。例如HTTP:80或HTTPS:443
- 监听策略:包括负载均衡算法、会话保持等
- 健康检查策略:定义如何检测后端服务器的健康状态
- 后端服务器绑定:指定后端服务器的IP和端口(即后端端口)
一个CLB实例可以配置多个监听器,分别监听不同的协议和端口,满足复杂的业务需求。
三、搭建网站集群的完整流程
3.1 准备工作:创建云服务器CVM
搭建网站集群的第一步是准备至少两台云服务器(CVM)作为后端节点。选择与CLB相同的地域,这样它们之间的通信可以通过内网进行,既高速又免费。
在CVM上需要安装基础运行环境。以Node.js应用为例,可以执行以下命令:
sudo apt update
sudo apt install -y nodejs npm nginx然后部署业务代码并使用PM2管理进程:
npm install
npm run build
pm2 start app.js --name web-service
pm2 save
pm2 startup在生产环境中,建议使用systemd或容器方式托管进程,而不是直接用命令行启动。
3.2 配置Nginx反向代理
在每台CVM上配置Nginx作为反向代理,将外部请求转发到本地应用端口:
server {
listen 80;
server_name _;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}为了便于CLB进行健康检查,需要为应用提供一个健康检查接口:
app.get('/health', (req, res) => {
res.status(200).send('ok');
});健康检查接口应该尽量轻量,只返回简单的状态信息,避免消耗过多服务器资源。
3.3 创建CLB实例
完成后端服务器的准备后,就可以创建CLB实例了。操作步骤如下:
- 登录腾讯云控制台,进入负载均衡服务购买页
- 选择与CVM相同的地域
- 实例类型选择“负载均衡”
- 网络类型选择“公网”(如果要搭建面向互联网的网站)
- 单击“立即购买”完成创建
创建成功后,系统会自动分配一个VIP(虚拟IP地址),这就是负载均衡向客户端提供服务的入口地址。
3.4 配置监听器
CLB实例创建后,需要配置监听器来定义流量转发规则。以HTTP转发为例:
- 在实例管理页面找到目标CLB实例,单击“配置监听器”
- 在“HTTP/HTTPS监听器”区域单击“新建”
- 配置监听器名称(如“web-http-80”)
- 监听协议端口选择“HTTP:80”
- 单击“提交”完成创建
对于HTTPS场景,需要选择“HTTPS”协议并上传SSL证书。在CLB层终止HTTPS可以实现证书的统一管理,避免在每台后端服务器上分别配置证书。
3.5 绑定后端服务器
监听器创建完成后,需要将后端CVM绑定到监听器上:
- 在监听器管理页面,找到“绑定后端服务”模块,单击“绑定”
- 在弹出的对话框中选择与CLB同地域的云服务器实例
- 指定后端端口(即CVM上Nginx监听的端口,通常是80)
- 可以设置每台服务器的权重,权重越高分配的流量越多
建议将至少两台CVM加入同一个后端服务池,并设置相同的服务端口。如果后端服务器上部署的服务不完全相同,CLB的权重设置可以帮助实现更精细的流量分配。
3.6 配置健康检查
健康检查是CLB保证高可用性的关键机制。CLB会定期访问后端服务器的健康检查路径,根据返回结果判断服务器的健康状态。
健康检查的核心参数包括:
- 检查间隔:CLB发起健康检查的频率,可配置范围为2-300秒,建议设置为5秒以内
- 不健康阈值:连续多少次检查失败后判定为不健康,建议设置为2-3次
- 健康阈值:连续多少次检查成功后判定为健康,建议设置为2-3次
- 检查路径:对于HTTP/HTTPS监听器,需要指定健康检查的URL路径,如“/health”
当某一台CVM上的服务进程异常退出时,CLB可以检测到该实例不可用,并自动停止向其转发流量。服务恢复后,再重新加入转发列表。健康检查的源IP默认使用100.64.0.0/10网段,这是腾讯云的保留地址,其他用户无法分配到该网段内,不存在安全风险。
3.7 域名绑定与访问验证
最后一步是将域名解析到CLB实例的VIP上:
- 在域名注册商处(如腾讯云DNSPod)添加A记录,将域名指向CLB的VIP
- 或者添加CNAME记录,将域名指向CLB提供的域名
配置完成后,用户就可以通过域名访问你的网站集群了。流量会经过CLB均匀地分发到后端的多台CVM上,实现负载均衡和高可用。
四、高级特性与生产环境最佳实践
4.1 会话保持
在某些场景下(如购物车、登录状态),需要确保同一个用户的请求始终被转发到同一台后端服务器。这就需要启用会话保持功能。
腾讯云CLB支持两种会话保持方式:
- Cookie方式:CLB在响应用户请求时插入一个Cookie,后续请求携带该Cookie时会被路由到同一台后端服务器
- 源IP方式:CLB根据客户端的源IP地址进行哈希计算,将相同IP的请求始终转发到同一台后端服务器
会话保持的配置非常简便:在监听器的配置界面找到“会话保持”选项,勾选启用,然后选择模式并设置保持时长(1-3600秒)即可。配置实时生效,无需重启服务。
4.2 跨可用区容灾
腾讯云CLB天然支持跨可用区部署,这是实现机房级容灾的重要手段。建议在同一地域选择至少2个可用区部署后端服务器集群。当单个可用区发生故障时,CLB会自动将流量切换至健康的可用区,服务中断时间可控制在秒级。
CLB实例本身也采用跨可用区部署模式,确保负载均衡服务自身的高可用。如果业务部署在多个可用区,建议将CLB实例同时绑定多个可用区的CVM,以实现后端服务器层的多可用区容灾。
4.3 弹性伸缩集成
对于流量波动明显的业务,可以将CLB与弹性伸缩(Auto Scaling,AS)服务结合使用。当业务流量上升时,AS自动增加CVM实例并注册到CLB的后端服务器池中;当流量下降时,AS自动回收多余的实例。
这种组合的优势在于:
- 根据CPU、QPS等指标自动调整集群规模
- 在保证服务质量的同时最大化资源利用率
- 避免在非高峰期闲置资源造成浪费
4.4 基于域名和URL的转发规则
七层负载均衡的核心优势之一是基于域名和URL路径的灵活转发能力。一个七层监听器下可以配置多个域名,每个域名下可以配置多个转发路径。
例如,可以将“api.example.com”的请求转发到API服务器组,将“www.example.com”的请求转发到Web服务器组,将“static.example.com”的请求直接指向对象存储。这种细粒度的路由能力让CLB成为微服务架构中理想的流量网关。
4.5 安全组配置
安全组是保护后端服务器的重要防线。来自CLB的访问流量只需要通过CLB的安全组控制,后端云服务器会默认放通来自CLB的流量。建议配置云服务器安全组,限制仅允许来自CLB的流量访问服务端口。
如果后端服务器设置了过于严格的安全组规则,可能会导致CLB无法与后端服务器通信。在四层转发和七层转发下,建议后端服务器的安全组至少放通来自CLB所在网段的流量。
4.6 HTTPS证书管理
对于需要HTTPS加密的网站,可以在CLB的HTTPS监听器中上传SSL证书。CLB支持在负载均衡层统一管理证书并完成解密操作。这样,后端服务器只需要处理HTTP流量,既简化了配置,也降低了后端服务器的计算开销。
CLB的HTTPS监听器还支持配置HTTP/2、单向认证和双向认证等高级功能。对于需要多证书的场景,CLB也支持单实例配置多个证书。
五、成本优化与监控告警
5.1 计费模式解析
腾讯云CLB目前仅支持按量计费模式。费用由两部分组成:CLB实例费用和公网网络费用。公网网络费用支持按使用流量计费或共享带宽包模式。
- 按流量计费:按实际使用的公网出流量计费,每小时结算一次,适合流量波动较大的业务
- 共享带宽包:多个实例共享一份带宽,适合流量稳定或有多个公网实例的场景
内网负载均衡实例不产生公网网络费用,仅收取实例费用。因此,如果业务场景允许(如同地域内的微服务调用),优先使用内网CLB可以有效降低成本。
5.2 成本优化策略
在实际使用中,可以通过以下策略优化CLB的成本:
- 合理选择实例规格:根据业务流量选择合适的CLB实例规格,避免过度配置
- 利用内网通信:后端CVM与CLB之间的通信尽量使用内网,避免产生额外的公网流量费用
- 关注空闲资源:定期检查CLB实例的流量使用情况,及时释放闲置资源
- 使用资源包:CLB资源包是预付费模式,适合长期稳定使用场景
5.3 监控与告警
生产环境中的CLB需要配合云监控服务实现实时监控和告警。建议关注的监控指标包括:
- 入流量和出流量
- 连接数和并发连接数
- 后端服务器的健康状态
- 请求响应时间和错误率
当这些指标超出预设阈值时,通过告警通知及时介入处理,可以有效避免业务中断。
六、常见问题与解答
问:CLB和后端CVM必须在同一个地域吗?
是的,CLB实例只能绑定同地域的CVM作为后端服务器。不同地域之间的网络延迟较高,且跨地域绑定会产生额外的费用。如果业务需要跨地域容灾,可以在每个地域分别部署CLB+CVM集群,再通过DNS智能解析实现全局流量调度。
问:四层负载均衡和七层负载均衡如何选择?
如果业务是Web应用(HTTP/HTTPS),需要基于域名或URL路径做路由分发,应选择七层负载均衡。如果业务是TCP/UDP协议的非Web应用(如数据库、游戏服务、即时通讯),对转发效率要求极高,应选择四层负载均衡。两者的核心区别在于七层可以“看懂”HTTP协议内容,而四层只负责透传数据包。
问:CLB健康检查失败怎么办?
首先检查后端服务器上的服务是否正常运行,以及健康检查接口是否可以正常访问。其次检查后端CVM的安全组配置,确保允许来自CLB健康探测源IP(100.64.0.0/10网段)的访问。还要确认CLB监听器中配置的健康检查端口和路径与后端服务器实际提供的一致。
问:CLB支持WebSocket吗?
支持。对于WebSocket这类需要长连接的应用,建议使用四层TCP监听器,或者使用七层HTTP/HTTPS监听器并关闭会话保持功能(或配置合适的会话保持超时时间)。CLB的个性化配置参数中还支持设置客户端-服务端长连接的保持时间。
问:如何获取客户端的真实IP?
使用七层负载均衡时,CLB会在转发请求时通过X-Forwarded-For头部传递客户端的真实IP。后端应用可以从该头部读取真实IP地址。使用四层负载均衡时,CLB采用透传模式,后端服务器可以直接从网络层获取客户端IP。
问:CLB的带宽上限是多少?
腾讯云CLB的公网带宽上限为2Gbps。如果业务需要更高的带宽,可以联系腾讯云商务团队申请提升配额,或者使用多个CLB实例配合DNS轮询实现更高的总带宽。




