阿里云负载均衡SLB配置完全指南:从选型到生产级部署实战
引言:为什么需要负载均衡
在云计算时代,单一服务器承载网站流量的模式早已无法满足高并发与高可用的业务需求。当大量用户同时访问一个网站时,单台服务器的CPU、内存、网络带宽等资源很快就会成为瓶颈,导致响应变慢甚至服务中断。更严重的是,一旦这台服务器发生故障,整个网站将完全不可用。阿里云负载均衡SLB(Server Load Balancer)正是为解决这些问题而生的核心云服务。SLB通过将访问流量自动分发到多台后端服务器上,不仅突破了单台服务器的性能上限,还通过健康检查机制自动屏蔽故障节点,实现了业务的高可用与弹性扩展。
需要先登录阿里云控制台,点击:阿里云控制台
一、SLB产品体系与选型指南
阿里云SLB并非单一产品,而是一个包含三种不同形态的负载均衡家族。理解各产品之间的差异,是正确配置流量分发规则的第一步。
1.1 应用型负载均衡ALB
ALB面向七层应用(HTTP/HTTPS/gRPC/QUIC),是当前阿里云主推的负载均衡产品。它支持内容路由、域名转发、URL路径转发、重定向、SSL卸载等高级功能,单实例可支撑百万级QPS。对于绝大多数Web网站、API服务、微服务架构等场景,ALB是最佳选择。ALB在HTTPS配置方面拥有最完整的能力矩阵:支持基于域名和URL路径的内容路由、支持SNI多域名证书、支持全链路HTTPS加密、支持HTTP/2与HTTP/3。
1.2 网络型负载均衡NLB
NLB专注于四层网络协议(TCP/UDP),基于高性能网络转发架构设计,单实例支持亿级并发连接,转发延迟低至微秒级。适用于实时音视频、游戏服务器、高性能数据库代理等对性能要求极高的场景。NLB同样支持SSL卸载,称为TCPSSL监听,可以在四层完成TLS终止。
1.3 传统型负载均衡CLB
CLB是阿里云早期的经典负载均衡产品,兼容四层(TCP/UDP)和七层(HTTP/HTTPS)负载均衡,配置相对简单。但CLB不支持域名与URL路径转发等高级七层特性,目前正逐步被ALB替代。对于简单的负载均衡场景或传统业务迁移,CLB仍可满足需求。
1.4 选型建议
综合来看,Web网站和API服务优先选择ALB;高性能四层业务(如游戏、直播)选择NLB;传统简单业务或成本敏感场景可选择CLB。七层业务、云原生应用或有超强性能需求、高级路由需求,首选ALB。四层业务、IoT应用或有海量并发、TCPSSL卸载、全端口监听等需求,首选NLB。
二、核心配置术语解析
在开始配置之前,需要先理解以下几个SLB的核心概念:
- 实例(Instance):SLB的核心资源实体,包含虚拟服务地址(VIP)、监听规则、服务器组关联关系等,是流量转发的核心载体。
- 监听(Listener):SLB接收用户请求的入口,包含协议(HTTP/HTTPS/TCP/UDP)、端口、转发规则等配置。一个实例可创建多个监听,例如同时监听80端口的HTTP和443端口的HTTPS。
- 服务器组(Server Group):后端服务器的逻辑集合,包含ECS实例、ENI弹性网卡、IP地址等类型,用于统一管理后端节点的端口、权重和健康检查规则。
- 调度算法(Scheduling Algorithm):SLB分发流量的策略,决定流量如何分配到后端服务器,常用的有加权轮询、加权最小连接数、一致性哈希等。
- 健康检查(Health Check):SLB定期向后端服务器发送探测请求,根据响应结果判断服务器是否正常,异常节点将被隔离,不再接收流量。
三、配置前准备工作
3.1 账号与权限准备
需拥有阿里云账号并完成实名认证,建议使用RAM子账号进行权限管理,遵循最小权限原则,避免主账号密钥泄露。RAM子账号需授予SLB管理权限(如AliyunSLBFullAccess)及ECS、VPC相关权限。
3.2 网络与资源准备
负载均衡实例与后端服务器(如ECS)需位于同一地域,建议选择靠近客户端的地域降低访问延迟。ALB/CLB实例创建后所属VPC无法修改,需提前规划VPC与子网。准备至少2台同地域ECS实例(或IDC服务器、函数计算服务),确保后端服务器已部署应用并正常运行。后端服务器安全组需要对相应服务端口放行。
四、创建负载均衡实例
以下是创建SLB实例的核心步骤:
4.1 登录控制台
登录阿里云控制台,导航至负载均衡SLB产品页面。
4.2 创建实例
点击创建实例按钮,根据业务需求选择实例类型(ALB、NLB或CLB)、地域、网络类型(公网/私网)、VPC与交换机等参数。公网类型实例提供公网IP地址对外提供服务,私网类型实例仅在VPC内部提供负载均衡服务。建议启用跨可用区容灾以增强可用性。
4.3 使用阿里云CLI创建实例
除了控制台操作,还可以通过阿里云CLI命令行工具创建负载均衡实例。首先需要配置CLI的身份凭证和默认区域:
aliyun configure配置完成后,执行以下命令创建负载均衡实例:
aliyun slb create-load-balancer --RegionId cn-hangzhou --LoadBalancerName my-slb-instance --AddressType internet --InternetChargeType paybytraffic参数说明:
- RegionId:地域ID
- LoadBalancerName:实例名称
- AddressType:网络类型(internet公网/intranet私网)
- InternetChargeType:公网计费方式(paybytraffic按流量计费/paybybandwidth按带宽计费)
五、配置后端服务器组
服务器组是后端服务器的逻辑集合,用于统一管理后端节点的端口、权重和健康检查规则。
5.1 创建服务器组
在SLB实例详情页中,进入服务器组管理页面,点击创建服务器组。填写服务器组名称,选择后端服务器类型(ECS实例、ENI弹性网卡或IP地址)。
5.2 添加后端服务器
将ECS实例添加到服务器组中:
aliyun slb add-backend-servers --LoadBalancerId lb-xxx --BackendServers '[{"ServerId":"i-xxx","Weight":100,"Port":80}]'参数说明:
- LoadBalancerId:负载均衡实例ID
- BackendServers:后端服务器列表,包含服务器ID、权重和端口
5.3 配置服务器权重
权重值越高的后端服务器,被轮询到的概率越高。在加权轮询算法中,权重控制每台服务器流量分配比例。可以针对不同性能的服务器设置不同的权重,性能高的服务器分配更高的权重。
aliyun slb set-backend-servers --LoadBalancerId lb-xxx --BackendServers '[{"ServerId":"i-xxx","Weight":50,"Port":80},{"ServerId":"i-yyy","Weight":100,"Port":80}]'六、配置监听
监听是SLB接收用户请求的入口,包含协议、端口、转发规则等配置。
6.1 添加监听的基本步骤
在SLB实例详情页中,找到监听配置部分,点击添加监听:
- 选择协议(HTTP、HTTPS、TCP、UDP等)及端口号
- 设置监听名称
- 选择后端协议
- 配置健康检查
- 配置会话保持
- 选择调度算法
- 如果是HTTPS监听,上传SSL证书和私钥文件
6.2 四层监听配置(TCP/UDP)
四层监听适用于对数据准确性要求高、注重可靠性的场景,如文件传输、邮件收发和远程登录等。四层监听的核心配置参数包括:
- 调度算法:加权轮询(WRR)、轮询(RR)、加权最小连接数(WLC)、一致性哈希(CH)
- 会话保持:开启后同一客户端的请求分发到同一台后端服务器
- 会话保持超时时间:1~3600秒
- 连接超时时间:10~900秒
- 获取客户端真实IP:四层监听默认开启,后端服务器可直接获得真实IP
使用CLI创建TCP监听:
aliyun slb create-load-balancer-tcp-listener --LoadBalancerId lb-xxx --ListenerPort 80 --BackendServerPort 80 --Bandwidth -1 --Scheduler wrr --HealthCheckType tcp --HealthyThreshold 3 --UnhealthyThreshold 3 --HealthCheckTimeout 5 --HealthCheckInterval 26.3 七层监听配置(HTTP/HTTPS)
七层监听适用于Web应用、API服务等场景。七层监听支持更丰富的流量管理功能。
6.3.1 HTTP监听配置
aliyun slb create-load-balancer-http-listener --LoadBalancerId lb-xxx --ListenerPort 80 --BackendServerPort 80 --Bandwidth -1 --Scheduler wrr --HealthCheckType http --HealthCheckURI /health --HealthyThreshold 3 --UnhealthyThreshold 3 --HealthCheckTimeout 5 --HealthCheckInterval 26.3.2 HTTPS监听与证书配置
HTTPS监听需要绑定SSL证书。将HTTPS证书配置在SLB层面,实现SSL/TLS卸载,意味着加密解密的高计算开销由SLB承担,后端ECS服务器只需处理HTTP明文流量,从而显著降低后端服务器的CPU负载。
aliyun slb create-load-balancer-https-listener --LoadBalancerId lb-xxx --ListenerPort 443 --BackendServerPort 80 --Bandwidth -1 --Scheduler wrr --HealthCheckType http --HealthCheckURI /health --SSLPort 443 --ServerCertificateId 123456证书格式要求:阿里云SLB支持PEM格式的证书,需包含证书内容和私钥。
6.4 调度算法详解
SLB支持多种调度算法:
- 加权轮询(WRR):权重值越高的后端服务器,被轮询到的概率越高。适用于服务器性能不均的场景。
- 轮询(RR):按照访问顺序依次将外部请求分发到后端服务器。适用于服务器性能相近的场景。
- 加权最小连接数(WLC):除了根据每台后端服务器设定的权重值进行轮询,同时还考虑后端服务器的实际负载(即连接数)。当权重值相同时,当前连接数越小的后端服务器被轮询到的概率越高。适用于长连接业务场景。
- 一致性哈希(CH):基于源IP地址的一致性哈希,相同的源地址会调度到相同的后端服务器。适用于需要会话保持的场景。
七、健康检查配置
健康检查是SLB保障业务高可用的核心机制。SLB通过定期向后端服务器发送探测请求,根据响应结果判断服务器是否正常,异常节点将被隔离,不再接收流量。
7.1 健康检查核心参数
健康检查的主要参数包括:
- 检查类型:根据应用选择HTTP、HTTPS、TCP或UDP等不同的检查类型
- 健康检查路径:指定用于健康检查的URL路径,默认为/
- 健康检查域名:对于七层监听,可指定健康检查的域名
- 响应超时时间:如果ECS实例在指定时间内没有响应,则视为不健康
- 健康检查间隔:SLB向后端ECS实例发送健康检查请求的时间间隔
- 健康阈值:连续几次健康检查成功后才将服务器视为健康
- 不健康阈值:连续几次健康检查失败后将服务器视为不健康
7.2 健康检查配置示例
在控制台配置监听时,可以在高级配置中设置健康检查参数。以下是通过CLI配置健康检查的示例:
aliyun slb set-load-balancer-http-listener --LoadBalancerId lb-xxx --ListenerPort 80 --HealthCheckType http --HealthCheckURI /health --HealthyThreshold 3 --UnhealthyThreshold 3 --HealthCheckTimeout 5 --HealthCheckInterval 2 --HealthCheckDomain www.example.com7.3 健康检查异常排查
首次配置健康检查出现异常的主要原因是健康检查配置问题,配置成功后健康检查出现异常的主要原因是后端ECS实例出现问题。常见排查方向包括:
- 安全类防护软件问题
- 后端服务器未在监听端口启动服务
- 健康检查路径配置错误导致返回404
- SLB实例未配置健康检查域名,HTTP请求转发到默认站点没有资源响应
八、会话保持配置
会话保持功能适用于需保持用户会话状态的场景,例如购物场景中,同一个用户的连续请求可能会被分发至不同的服务器,导致用户的登录信息、购物车中的商品信息等丢失。开启会话保持后,负载均衡监听会把来自同一客户端的访问请求分发到同一台后端服务器上。
8.1 ALB会话保持的两种方式
ALB开启会话保持后,需要选择Cookie的处理方式:
- 植入Cookie:客户端第一次访问时,ALB会在返回请求中植入Cookie,下次客户端携带此Cookie访问,负载均衡服务会将请求定向转发给之前记录到的后端服务器上。植入Cookie方式自带SameSite=None,可以有效解决跨域场景下浏览器无法保存Cookie的问题。
- 重写Cookie:当ALB发现用户自定义了Cookie,将会对原来的Cookie进行重写,下次客户端携带新的Cookie访问,ALB会将请求定向转发给之前记录的后端服务器。
8.2 配置会话保持
在服务器组页面,找到目标服务器组,在操作列单击编辑基本信息,开启会话保持。
aliyun slb set-server-group --ServerGroupId sgp-xxx --SessionPersistenceEnabled true --SessionPersistenceType insert --CookieTimeout 3600九、高级配置:转发规则与内容路由
ALB支持基于域名和URL路径的精细化转发规则,同一个SLB实例可以根据请求的域名或路径,将流量分发到不同的后端服务器组,实现多站点共用同一个负载均衡实例的高效架构。
9.1 转发规则的匹配方式
ALB按转发规则编号的优先级顺序逐条匹配,不会自动按域名或路径的精确程度排序。如需精确域名优先匹配,请手动将精确域名的规则调整到通配符或正则规则之前。ALB的匹配方式与Nginx的最长前缀匹配和CLB的自动域名精度排序不同。
9.2 配置示例:基于域名的转发
aliyun alb create-rule --ListenerId lsr-xxx --RuleName api-rule --Priority 10 --Conditions '[{"Type":"Host","HostConfig":{"Values":["api.example.com"]}}]' --Actions '[{"Type":"ForwardGroup","ForwardGroupConfig":{"ServerGroupTuples":[{"ServerGroupId":"sgp-xxx"}]}}]'9.3 配置示例:HTTP强制跳转HTTPS
将HTTP请求强制重定向到HTTPS:
aliyun alb create-rule --ListenerId lsr-xxx --RuleName redirect-https --Priority 1 --Conditions '[{"Type":"Host","HostConfig":{"Values":["*"]}}]' --Actions '[{"Type":"Redirect","RedirectConfig":{"Protocol":"HTTPS","Port":"443","Host":"${host}","Path":"${path}","Query":"${query}","RedirectCode":"301"}}]'十、安全配置
10.1 访问控制(IP黑白名单)
可以为不同监听配置白名单或黑名单。白名单允许特定IP访问,黑名单禁止特定IP访问。配置访问控制时需注意:如果关联的策略组中没有添加任何IP条目,访问控制不会生效。
aliyun slb create-access-control-list --AclName my-acl --AddressIPVersion ipv4aliyun slb add-access-control-list-entry --AclId acl-xxx --AclEntrys '[{"Entry":"192.168.1.0/24","Comment":"allow-subnet"}]'10.2 安全组配置
后端ECS实例的安全组需要对SLB健康检查的源IP及用户访问的端口放行。
十一、监控与日志
11.1 访问日志
日志服务联合负载均衡SLB推出访问日志功能,可以通过负载均衡的访问日志了解客户端用户行为、客户端用户的地域分布,排查问题等。SLB访问日志功能当前支持基于HTTP/HTTPS的七层负载均衡。访问日志记录了所有发送到CLB的请求的详细信息,包括请求时间、客户端IP地址、延迟、请求路径和服务器响应等。
11.2 操作日志
操作日志需在ActionTrail控制台查看,记录云账户资源操作,提供操作记录查询。
十二、使用SDK进行配置管理
除了控制台和CLI,还可以通过SDK编程方式管理SLB资源。
12.1 Python SDK示例
from aliyunsdkcore.client import AcsClient
from aliyunsdkslb.request.v20140515 import CreateLoadBalancerRequest
client = AcsClient('your-access-key-id', 'your-access-key-secret', 'cn-hangzhou')
request = CreateLoadBalancerRequest.CreateLoadBalancerRequest()
request.set_LoadBalancerName('my-slb-python')
request.set_AddressType('internet')
request.set_InternetChargeType('paybytraffic')
response = client.do_action_with_exception(request)
print(response)12.2 Java SDK示例
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.slb.model.v20140515.CreateLoadBalancerRequest;
import com.aliyuncs.slb.model.v20140515.CreateLoadBalancerResponse;
public class SlbExample {
public static void main(String[] args) {
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", "your-access-key-id", "your-access-key-secret");
IAcsClient client = new DefaultAcsClient(profile);
CreateLoadBalancerRequest request = new CreateLoadBalancerRequest();
request.setLoadBalancerName("my-slb-java");
request.setAddressType("internet");
request.setInternetChargeType("paybytraffic");
try {
CreateLoadBalancerResponse response =
client.getAcsResponse(request);
System.out.println(response.getLoadBalancerId());
} catch (Exception e) {
e.printStackTrace();
}
}
}十三、生产环境最佳实践
13.1 高可用部署
- 启用跨可用区容灾,将后端服务器部署在不同可用区
- 每个监听至少添加两台后端服务器
- 合理配置健康检查参数,避免误判
13.2 性能优化
- 根据业务量选择合适的实例规格,避免过度配置或配置不足
- 对于Web业务优先选择ALB,利用其七层处理能力
- 启用Gzip压缩减少传输数据量
13.3 安全管理
- 使用RAM子账号进行权限管理,遵循最小权限原则
- HTTPS监听配置SSL证书,实现加密传输
- 配置访问控制策略,限制非法IP访问
13.4 成本控制
- 按需选择计费方式:按流量计费适合流量波动大的场景,按带宽计费适合流量稳定的场景
- 合理设置监听带宽上限,避免超量费用
- 定期清理未使用的SLB实例和监听
十四、常见问题排查
14.1 健康检查失败
首次配置健康检查出现异常的主要原因是健康检查配置问题。配置成功后健康检查出现异常的主要原因是后端ECS实例出现问题。检查顺序:确认后端服务正常→确认安全组放行→确认健康检查路径正确→确认健康检查域名配置。
14.2 会话保持不生效
检查监听配置中会话保持是否已开启。确认后端服务器是否正常响应。对于七层监听,检查Cookie是否被浏览器拦截。
14.3 访问不通
检查SLB实例状态是否为运行中→检查监听状态是否为已启动→检查后端服务器健康检查状态是否为正常→确认安全组规则→确认后端服务端口正确。
结语
阿里云负载均衡SLB是构建高可用、高性能云原生架构的核心组件。从产品选型到实例创建,从监听配置到健康检查调优,每一个环节都直接影响着业务的稳定性和用户体验。本文系统梳理了SLB的完整配置流程,并结合CLI和SDK代码示例,帮助读者从理论到实践全面掌握SLB的部署与运维技能。在实际生产环境中,建议结合业务特点灵活运用各项配置参数,持续优化负载均衡架构,为业务的高速发展提供坚实的流量分发底座。
常见问题解答
问1:ALB、NLB和CLB三者有什么区别?如何选择?
答:ALB面向七层应用(HTTP/HTTPS),支持域名和URL路径转发等高级功能,适用于Web网站和API服务。NLB面向四层(TCP/UDP),专注于高性能转发,适用于游戏、直播等场景。CLB是传统产品,兼容四层和七层但功能较基础,适用于简单场景。Web业务优先选ALB,高性能四层业务选NLB,传统简单业务可选CLB。
问2:健康检查失败如何排查?
答:首先确认后端服务是否正常运行,其次检查安全组是否对SLB健康检查的源IP放行,然后确认健康检查路径和域名配置是否正确。首次配置失败多为配置问题,配置成功后失败多为后端服务器问题。
问3:会话保持有哪些方式?
答:ALB支持植入Cookie和重写Cookie两种方式。植入Cookie由ALB自动插入,重写Cookie在用户自定义Cookie时使用。四层监听支持基于源IP的会话保持。
问4:HTTPS证书应该配置在SLB还是后端ECS?
答:建议配置在SLB层面,实现SSL卸载。这样加密解密的计算开销由SLB承担,后端ECS只需处理HTTP明文流量,显著降低后端服务器CPU负载。
问5:ALB的转发规则匹配顺序是怎样的?
答:ALB按转发规则编号的优先级顺序逐条匹配,不会自动按域名或路径的精确程度排序。精确域名的规则需要手动调整到通配符规则之前。
问6:负载均衡实例创建后VPC能否修改?
答:不能。ALB/CLB实例创建后所属VPC无法修改,需要在创建前提前规划好VPC与子网。



