告别单点故障阿里云CLB负载均衡从入门到实战引言一台服务器不够用怎么办假设你做了一个网站刚开始只有几十个人访问一台ECS服务器完全够用。但某天你的网站突然火了——流量暴涨服务器CPU飙到100%网站卡得打不开甚至直接宕机。更糟糕的是这台服务器恰好在这时候出了硬件故障你的网站彻底“挂”了用户完全访问不了。这就是典型的单点故障问题——所有鸡蛋放在一个篮子里篮子一旦出问题全军覆没。怎么解决答案是多买几台服务器然后把流量均匀地分给它们。谁来做这个“流量分发”的工作就是今天的主角——阿里云CLB传统型负载均衡。一、什么是CLBCLB的全称是Classic Load Balancer传统型负载均衡它是阿里云提供的一种流量分发控制服务。用人话说就是CLB像一个“流量调度员”。用户访问你的网站时请求先到达CLBCLB再根据你设定的规则把请求分发给后端的多台服务器。这样一来流量分摊多台服务器共同承担访问压力不会让某一台累垮故障自动切换某台服务器宕机了CLB自动把流量转到其他健康的服务器上用户几乎无感知弹性扩展业务增长了随时加服务器流量下降了随时减服务器一句话总结CLB让你用多台普通服务器拼出一台“超级服务器”的效果。CLB由三部分组成组成部分说明CLB实例一个运行的负载均衡服务拥有一个固定的服务地址IP或域名所有请求先到达这里监听Listener负责“听”什么类型的请求比如HTTP的80端口、HTTPS的443端口并把请求转给后端服务器后端服务器真正处理业务请求的ECS实例也就是你的应用服务器CLB的核心优势高可用采用全冗余设计没有单点故障支持同城容灾可用性高达99.95%可扩展随时增减后端服务器数量业务增长无压力低成本相比购买昂贵的硬件负载均衡设备成本可下降60%安全结合云盾可提供5Gbps的防DDoS攻击能力高并发单实例最大支持100万并发连接二、CLB的工作原理小白也能看懂CLB背后到底是怎么工作的我们用一张图来理解原理其实很简单CLB采用集群部署不是一台机器在干活而是一群机器在协作。四层TCP/UDP负载均衡由LVSLinux Virtual Server Keepalived实现。LVS是一个高性能的Linux负载均衡软件它工作在网络的“传输层”只关心IP地址和端口号不关心具体传输的内容。比如你的应用用的是TCP协议如数据库连接就走这条路。七层HTTP/HTTPS负载均衡由Tengine实现。Tengine是淘宝网基于Nginx开发的高性能Web服务器它工作在“应用层”能看懂HTTP协议的内容可以根据URL路径、域名等信息来做更精细的流量分发。比如/api/*的请求分到一组服务器/static/*的请求分到另一组。举个例子四层像快递分拣中心只看包裹上的地址IP和端口按地址分发七层像超市的导购不仅看你的购物清单还能根据你要买的东西URL路径给你指路到不同的货架。集群的优势LVS集群内的每台机器都会将会话同步给其他机器。如果某一台LVS机器故障了流量会自动转移到其他正常的机器上用户完全感知不到。三、环境准备在开始创建CLB之前需要做好以下准备1. 准备后端服务器CLB需要至少2台ECS实例作为后端服务器。建议满足以下条件与CLB在同一个地域Region在同一个专有网络VPC下已经部署好你的应用比如Web服务监听80端口小贴士如果还没有ECS可以先创建2台按量付费的ECS安装Nginx并启动服务用于测试。2. 账号与权限建议使用RAM子账号进行操作并授予AliyunSLBFullAccess权限。四、创建CLB实例步骤一进入CLB控制台登录阿里云控制台在顶部搜索框输入“传统型负载均衡CLB”进入产品控制台。步骤二创建实例在实例列表页面点击「创建实例」配置以下关键参数配置项说明建议值付费类型按量付费适合测试包年包月适合生产按量付费地域必须与ECS在同一个地域如华东1杭州实例类型公网自动分配公网IP用户从互联网访问公网规格小型规格适合入门场景slb.s1.small点击「立即购买」完成创建创建完成后CLB实例会获得一个公网IP地址这就是用户访问的统一入口。五、配置CLB添加监听和后端服务器实例创建好了但还不能直接用——需要配置监听和后端服务器。步骤一打开监听配置向导在实例管理页面找到刚刚创建的CLB实例点击操作列的「监听配置向导」。步骤二配置监听监听决定了CLB“听”什么类型的请求。以最常见的HTTP监听为例配置项说明示例值监听协议选择HTTP七层或TCP四层HTTP监听端口CLB监听的端口用户访问时用这个端口80调度算法流量分配策略轮询RR——按顺序依次分发配置完成后点击「下一步」。步骤三添加后端服务器这一步是把你的ECS实例加入到CLB的服务池中。在“后端服务器”页面选择「默认服务器组」点击「添加」勾选你想要加入的ECS实例配置每个ECS的端口和权重配置项说明端口ECS上应用监听的端口如Nginx默认80权重数值越高被分配到的流量越多权重的作用假设ECS01权重为100ECS02权重为50那么ECS01收到的请求大约是ECS02的2倍。如果你想临时让某台服务器“休息”比如要升级维护可以把它的权重设为0CLB就不会再给它转发请求了。点击「下一步」步骤四配置健康检查重要健康检查是CLB的“自动体检”功能。CLB会定期向后端服务器发送探测请求检查服务器是否“活着”。如果某台服务器连续几次健康检查失败CLB就认为它“病了”自动停止给它转发流量等它恢复健康了CLB再自动把它加回来。配置项说明建议值健康检查是否开启开启强烈建议健康检查协议HTTP监听建议用HTTPHTTP健康检查路径检查哪个URL/根路径或/health响应超时时间等待响应的最长时间5秒健康检查间隔多久检查一次2秒不健康阈值连续失败几次判定为不健康3次健康阈值连续成功几次判定为恢复健康3次注意健康检查使用的源IP地址段是100.64.0.0/10请确保后端ECS的安全组和防火墙没有屏蔽这个地址段。配置完成后点击「下一步」确认信息后点击「提交」。六、调试与验证配置完成后怎么确认CLB正常工作了呢验证一访问CLB的公网IP在浏览器中输入CLB实例的公网IP地址多次刷新页面如果后端ECS部署的是不同的页面内容比如ECS01显示“Server 1”ECS02显示“Server 2”你会看到页面在几台服务器之间轮流切换这说明CLB已经成功将请求分发到了不同的后端服务器上验证二模拟故障高可用测试登录ECS控制台手动停止其中一台ECS实例再次访问CLB的公网IP你会发现网站依然可以正常访问因为CLB检测到这台ECS“挂了”自动把流量全部转给了其他健康的服务器重新启动这台ECS等它恢复健康后CLB会自动把它加回来这个测试完美验证了CLB的高可用能力——单台服务器故障不影响整体服务。验证三查看监控数据在CLB控制台的实例详情页可以查看流量监控数据包括入流量和出流量请求数量后端服务器的健康状态这些数据可以帮助你了解业务的访问情况及时发现问题。七、CLB使用小贴士1. 四层和七层怎么选场景推荐TCP/UDP协议的应用如数据库、游戏四层监听TCP/UDPHTTP/HTTPS的Web应用需要路径转发七层监听HTTP/HTTPS简单Web应用不需要高级路由两者皆可2. 会话保持Session Stickiness如果你的应用需要把同一个用户的请求始终发到同一台服务器比如用户登录状态保存在本地Session可以开启会话保持功能。CLB会记住这个用户后续请求都转发到同一台ECS。3. 后端服务器要“长一样”CLB后端的多台ECS应该部署相同的应用这样才能保证用户无论被分到哪台服务器得到的服务都是一致的。4. 安全组记得放行CLB的健康检查和流量转发需要访问ECS的端口请确保ECS的安全组放行了对应的端口如80、443等。5. 不要用公网IP直接访问后端ECS在生产环境中建议后端ECS不要绑定公网IP只通过CLB对外提供服务。这样既安全外部无法直接访问ECS又省钱ECS到CLB走内网不产生公网流量费用。总结阿里云CLB是一款简单、强大、高可用的流量分发服务。通过本文你应该已经掌握了CLB是什么一个将流量分发到多台后端服务器的“流量调度员”工作原理四层基于LVSKeepalived七层基于Tengine集群部署保证高可用核心价值消除单点故障、提升系统可用性、弹性扩展应对流量波动创建与配置创建CLB实例 → 配置监听 → 添加后端服务器 → 开启健康检查验证方法访问CLB公网IP测试分发效果模拟ECS故障测试高可用无论是个人博客、企业官网还是高并发的电商平台CLB都是构建高可用架构的基石。记住永远不要把所有的流量压力压在一台服务器上——用CLB让你的业务稳如泰山