阿里云CDN与负载均衡SLB深度对接与配置实战指南
引言:CDN与负载均衡的协同价值
在云计算架构中,内容分发网络(CDN)与负载均衡(SLB)是保障业务高性能与高可用的两大核心服务。CDN通过遍布全球的边缘节点将静态与动态内容就近分发至终端用户,显著降低访问延迟、减轻源站压力。负载均衡则通过将流量按需分发至多台后端服务器,消除单点故障、提升系统吞吐能力。两者协同工作,可构建从用户端到源站的全链路加速与高可用体系——CDN负责“最后一公里”的加速分发,SLB负责源站侧的流量治理与容灾。
本文将从实战角度出发,系统讲解阿里云CDN的接入配置流程、负载均衡SLB的完整配置方法,以及两者联动的典型场景与最佳实践。文章涵盖控制台操作、命令行工具与SDK代码示例,适用于从运维新手到架构师的不同技术层次读者。
需要先登录阿里云控制台,点击:阿里云控制台
第一部分:阿里云CDN接入与配置详解
一、CDN工作原理与核心优势
阿里云CDN(Content Delivery Network)是一个分布式缓存系统,在网络拓扑中位于源站服务器与用户之间。当用户发起资源请求时,请求首先到达就近的CDN边缘节点。若节点已缓存目标资源,则直接返回缓存内容,无需回源;若未缓存或缓存已过期,CDN节点向源站发起回源请求,获取资源后缓存至边缘节点并返回给用户。这一机制实现了“一次回源、多次分发”,大幅降低源站压力并提升用户访问速度。
CDN的核心优势体现在三个方面:一是对源站服务器的非侵入性,无需修改任何业务代码即可完成接入;二是通过分布式边缘节点布局实现就近访问,显著降低网络延迟;三是提供丰富的可配置能力,包括缓存策略、HTTPS加密、访问控制、智能压缩等高级功能。
二、CDN接入前置条件
在开始CDN配置之前,需确保满足以下前提条件:
- 已开通阿里云CDN服务(在控制台按提示开通即可)
- 准备一个已完成ICP备案的加速域名(中国大陆区域加速必须备案)
- 明确源站类型:OSS域名、IP地址、源站域名或函数计算域名
- 确认源站已部署业务应用并可正常访问
三、添加加速域名
登录CDN控制台后,在左侧导航栏单击“域名管理”,进入域名管理页面。单击“添加域名”按钮,进入域名配置流程。
3.1 配置基本信息
在域名信息配置页面,需要完成以下核心参数的设置:
- 加速区域:根据业务用户分布选择“中国内地”、“全球(不含中国内地)”或“全球”。选择“全球”时,CDN会为不同区域的用户分配最近的边缘节点。
- 加速域名:填写需要加速的业务域名,例如
static.example.com。加速域名是终端用户实际访问的域名。 - 业务类型:根据内容类型选择“图片小文件”、“大文件下载”、“视音频点播”或“全站加速”。不同业务类型对应不同的默认缓存策略与加速优化方向。
3.2 配置源站信息
源站是CDN获取原始内容的来源,支持以下三种类型:
- OSS域名:选择阿里云OSS Bucket作为源站,适用于静态资源存储场景。
- IP:填写源站服务器的公网IP地址,适用于自建服务器场景。
- 源站域名:填写源站服务器的域名,适用于通过域名访问源站的场景。
在配置多源站时,可设置主备优先级与权重。当多个源站优先级相同时,CDN按照权重比例分配回源请求。主源站优先级高于备源站,所有回源流量优先回源主源站;若主源站健康检查连续失败,则自动切换至备源站。
对于使用OSS私有Bucket作为源站的场景,必须开启“阿里云OSS私有Bucket回源”功能。开启后,系统会提示授权CDN访问OSS资源的权限,并在RAM中自动创建 AliyunCDNAccessingPrivateOSSRole 角色。若未开启此功能,CDN节点将因权限不足无法回源,导致访问返回403错误。
3.3 域名归属权验证
首次在CDN或DCDN控制台添加新域名时,需要完成域名归属权验证。验证方式通常包括:在域名DNS解析中添加指定的TXT记录,或上传验证文件至源站根目录。验证通过后,域名才能正式接入CDN服务。
四、配置CNAME解析
域名添加完成后,CDN会为加速域名分配一个CNAME地址。需要在域名DNS服务商处,将加速域名通过CNAME记录解析到CDN分配的CNAME地址。
以阿里云云解析DNS为例,操作步骤如下:登录云解析DNS控制台,找到加速域名对应的解析记录,添加一条CNAME记录,记录值填写CDN控制台显示的CNAME地址。完成CNAME解析后,所有指向加速域名的请求将被自动导向CDN边缘节点。
添加CNAME记录后,返回CDN控制台域名管理页面,当CNAME状态显示“配置完成”时,说明加速域名已成功接入CDN。
五、HTTPS证书配置
HTTPS证书配置是保障传输安全的核心环节。阿里云CDN支持在CDN节点上部署SSL证书,实现用户到CDN节点的HTTPS加密传输。
配置步骤如下:在CDN控制台左侧导航栏选择“证书服务”,单击“配置证书”。可以选择阿里云SSL证书服务中已有的证书,也可以上传第三方证书。若需要实现全链路HTTPS加密,还需配置CDN节点以HTTPS协议回源到源站服务器,此时源站服务器必须支持HTTPS协议。
对于源站IP绑定了多个域名且回源协议为HTTPS的场景,需配置回源SNI(Server Name Indication),指明所请求的具体域名,源站根据SNI名称返回对应域名的SSL证书。
六、缓存策略配置
缓存策略是提升CDN加速效果的核心。通过配置缓存过期时间规则,可以精细化控制CDN节点的资源缓存时长,在内容更新、访问性能与回源成本之间取得平衡。
6.1 缓存规则配置方法
在CDN控制台的域名管理页面,单击目标域名右侧的“管理”,在左侧导航栏选择“缓存配置” > “缓存过期时间”,单击“添加”配置缓存规则。规则可按目录或文件扩展名指定生效范围。
6.2 缓存策略最佳实践
- 静态资源长缓存:图片(jpg/png/gif)、视频(mp4/flv)、CSS、JS等静态资源更新频率低,可设置较长的缓存过期时间(如7天或30天),最大化缓存命中率。
- 动态资源短缓存或不缓存:PHP、JSP、ASP等动态页面不建议缓存,或设置极短的缓存时长(如0秒或60秒),避免内容不一致。
- 忽略URL参数:对于带动态参数但内容不变的资源(如图片预览链接),可通过忽略参数缓存规则提升缓存利用率。
- 权重管理:多条缓存规则同时命中时,权重值高的规则优先生效。
若需要配置整个域名不缓存,可通过设置全路径缓存过期时间为0来实现,并确保该规则权重最高。
七、访问控制与安全防护
CDN提供多重安全防护机制:
- 防盗链:通过验证请求的Referer字段,防止其他网站盗用资源。
- IP黑白名单:设置允许或禁止访问的IP地址或IP段。
- 区域封禁:按地理位置限制访问,适用于特定区域业务合规需求。
第二部分:阿里云负载均衡SLB配置详解
一、SLB产品体系与选型
阿里云负载均衡SLB并非单一产品,而是包含三种不同形态的负载均衡家族。正确选型是配置流量分发规则的第一步。
1.1 应用型负载均衡ALB
ALB面向七层应用(HTTP/HTTPS/gRPC/QUIC),是当前阿里云主推的负载均衡产品。它支持内容路由、域名转发、URL路径转发、重定向、SSL卸载等高级功能,单实例可支撑百万级QPS。ALB基于Tengine(Nginx增强版)实现七层负载均衡,具备更强的应用层流量调度能力。适用于Web网站、API服务、微服务架构等绝大多数场景。
1.2 网络型负载均衡NLB
NLB专注于四层网络协议(TCP/UDP),基于高性能网络转发架构设计,单实例支持亿级并发连接,转发延迟低至微秒级。适用于实时音视频、游戏服务器、高性能数据库代理等对性能要求极高的场景。
1.3 传统型负载均衡CLB
CLB是阿里云早期的经典负载均衡产品,兼容四层(TCP/UDP)和七层(HTTP/HTTPS)负载均衡,配置相对简单。但CLB不支持域名与URL路径转发等高级七层特性,目前正逐步被ALB替代。对于简单的负载均衡场景或传统业务迁移,CLB仍可满足需求。
1.4 选型建议
综合来看:Web网站和API服务优先选择ALB;高性能四层业务(如游戏、直播)选择NLB;传统简单业务或成本敏感场景可选择CLB。后续配置将主要基于ALB展开,部分通用配置同样适用于CLB的七层监听场景。
二、SLB核心概念解析
在开始配置之前,需理解以下核心概念:
- 实例(Instance):SLB的核心资源实体,包含虚拟服务地址(VIP)、监听规则、服务器组关联关系等,是流量转发的核心载体。
- 监听(Listener):SLB接收用户请求的入口,包含协议(HTTP/HTTPS/TCP/UDP)、端口、转发规则等配置。一个实例可创建多个监听,例如同时监听80端口的HTTP和443端口的HTTPS。
- 服务器组(Server Group):后端服务器的逻辑集合,包含ECS实例、ENI弹性网卡、IP地址等类型,用于统一管理后端节点的端口、权重和健康检查规则。
- 调度算法(Scheduling Algorithm):SLB分发流量的策略,常用的有加权轮询、加权最小连接数、一致性哈希等。
三、环境准备与前提条件
在对接负载均衡前,需完成以下准备工作:
- 账号与权限:拥有阿里云账号并完成实名认证,建议使用RAM子账号进行权限管理,遵循最小权限原则。RAM子账号需授予SLB管理权限(如
AliyunSLBFullAccess)及ECS、VPC相关权限。 - 网络规划:负载均衡实例与后端服务器(如ECS)需位于同一地域。ALB/CLB实例创建后所属VPC无法修改,需提前规划VPC与子网。
- 后端服务器:准备至少2台同地域ECS实例(或IDC服务器、函数计算服务),确保后端服务器已部署应用并正常运行。
四、创建负载均衡实例
以ALB为例,创建实例的操作步骤如下:登录负载均衡控制台,左侧导航栏选择“应用型负载均衡ALB” > “实例”,点击“创建应用型负载均衡”。在创建页面配置以下参数:
- 计费方式:按量付费或包年包月
- 地域与可用区:选择与后端ECS相同的地域,建议选择多可用区部署以实现跨可用区容灾
- 实例网络类型:公网或私网。公网实例分配公网IP,私网实例仅在VPC内网访问
- VPC与交换机:选择已规划好的VPC和交换机
五、配置服务器组
服务器组是后端服务器的逻辑集合。创建服务器组的步骤如下:在ALB控制台左侧导航栏选择“服务器组”,单击“创建服务器组”。配置以下关键参数:
- 服务器组名称:自定义,建议按业务命名
- 后端协议:HTTP或HTTPS(七层监听)
- 调度算法:选择“加权轮询”、“加权最小连接数”或“一致性哈希”
- 添加后端服务器:选择ECS实例,并为每个实例设置权重,权重值越高分配到的请求越多
六、配置监听与转发规则
6.1 创建监听
监听是SLB接收请求的入口。在实例详情页的“监听”页签下,单击“添加监听”。配置以下参数:
- 监听协议与端口:HTTP/80、HTTPS/443、TCP或UDP
- 默认服务器组:选择已创建的服务器组
- 启用HTTPS:若选择HTTPS协议,需配置SSL证书
6.2 配置转发规则(七层监听)
对于HTTP/HTTPS监听,ALB支持基于域名和URL路径的精细化转发规则。可以在一个监听下添加多条转发策略,每条转发策略关联不同的服务器组。
配置示例:将 api.example.com 的请求转发至API服务器组,将 www.example.com 的请求转发至Web服务器组;或将 /images/* 路径的请求转发至图片服务器组,将 /api/* 路径的请求转发至API服务器组。
转发规则的优先级通过数值控制,取值范围1~10000,数值越小优先级越高。未匹配任何转发规则的请求,默认转发至监听配置的默认服务器组。
七、健康检查配置
健康检查是SLB保障业务高可用的核心机制。负载均衡通过定期向后端服务器发送探测请求,判断服务器的业务可用性。健康检查机制提高了前端业务的整体可用性,避免了后端异常节点对总体服务的影响。
7.1 健康检查参数调优
主要健康检查参数包括:
- 健康检查协议:HTTP、HTTPS、TCP或UDP
- 健康检查路径(HTTP/HTTPS):后端服务器用于健康检查的URL路径,如
/health - 健康检查间隔:两次健康检查的时间间隔,建议2-5秒
- 健康检查超时时间:等待健康检查响应的超时时间
- 健康阈值:连续成功多少次后判定服务器为健康
- 不健康阈值:连续失败多少次后判定服务器为不健康
7.2 健康检查注意事项
CLB执行健康检查时使用 100.64.0.0/10 网段。后端服务器务必不能屏蔽该地址段。无需在ECS安全组中额外配置放行策略,但如有配置iptables等安全策略,请务必放行该网段。
八、会话保持配置
会话保持功能确保来自同一客户端的访问请求被分发到同一台后端服务器上,保障用户状态信息的一致性。对于需要保持用户登录状态或购物车信息的业务场景,会话保持是必须开启的功能。
在ALB中,会话保持配置在服务器组级别。开启会话保持后,ALB会基于用户请求中的特定标识(如Cookie或客户端IP)将同一用户的请求始终路由到同一台后端服务器。
需要注意的是,同时开启负载均衡和会话保持功能,有可能会造成后端服务器访问不均衡。如果出现访问不均衡的情况,建议暂时关闭会话保持功能进行排查。
九、安全加固
SLB提供多层次的安全防护能力。可以通过为ALB实例添加安全组,实现黑白名单访问策略。白名单模式仅允许来自所设IP地址或地址段的请求通过,自动拒绝未列入的IP。黑名单模式则自动允许未列入的IP访问。
配置安全组规则时,应避免对ALB的Local IP添加优先级为1的拒绝策略,以确保安全组规则不会与ALB托管安全组策略冲突。
第三部分:CDN与负载均衡的联动场景
一、CDN + GTM实现源站高可用
CDN本身并不能感知源站IP的运行状态,在源站故障场景下无法快速将用户流量切换至正常地址。全局流量管理(GTM)可以帮助企业实现流量负载均衡、故障检查及自动切换。
CDN和GTM都是通过CNAME域名提供服务的。若将相同子域名同时指向不同的CNAME域名,权威DNS采用轮询方式应答,会导致其中一个产品无法正常使用。因此,面对CDN加速+GTM源站容灾场景,建议采用串行方式。
配置流程如下:
- 配置GTM:在云解析DNS控制台的全局流量管理中,创建地址池(包含主备源站IP),开启健康检查,配置基于地理位置的访问策略。
- 复制GTM的CNAME接入域名:在GTM基本配置页签下复制CNAME接入域名。
- 配置CDN加速:在CDN控制台添加加速域名时,将源站域名设置为GTM的CNAME接入域名。
- 配置CNAME解析:在云解析DNS中,将业务域名通过CNAME解析指向CDN分配的CNAME地址。
通过这种串行架构,用户流量先到达CDN边缘节点,CDN再以GTM作为源站,由GTM智能地将请求路由到健康的源站服务器。
二、CDN多源站权重实现回源侧负载均衡
阿里云CDN支持配置多个源站地址,并支持设置源站的主备优先级和权重,实现回源侧的负载均衡。当多个源站优先级相同时,CDN按照权重比例分配回源请求。这一机制适用于以下场景:
- 多源站负载均衡:同时使用多个源站(如不同地域的OSS Bucket或服务器)分担回源流量
- 主备容灾:设置主源站和备源站,按权重分配请求量,主源站故障时自动切换至备源站
配置方式:在CDN域名管理的源站配置中,添加多个源站地址,为每个源站设置优先级和权重值。权重值越高,分配到的回源请求比例越大。
三、CDN + SLB的典型架构
在典型的企业级架构中,CDN与SLB常常协同工作。用户请求经CDN加速后,CDN节点回源时不是直接回源到单个服务器,而是回源到SLB的虚拟服务地址(VIP)。SLB再将请求分发到后端的多个ECS实例。
这种架构的优势在于:CDN负责边缘加速与缓存,SLB负责源站侧的负载均衡与高可用。当后端ECS实例需要扩缩容时,只需调整SLB服务器组中的实例即可,对CDN侧完全透明。SLB的健康检查机制会自动屏蔽故障节点,确保回源请求始终到达健康的服务器。
第四部分:自动化配置代码示例
一、阿里云CLI配置CDN
阿里云CLI是管理云资源的命令行工具,适合自动化运维场景。首先通过 aliyun configure 命令配置身份凭证和默认区域。
查询用户名下所有CDN域名的命令示例:
aliyun cdn DescribeUserDomains --PageSize 50 --PageNumber 1添加CDN加速域名的命令示例:
aliyun cdn AddCdnDomain --DomainName static.example.com --CdnType web --Sources '[{\"type\":\"oss\",\"content\":\"example-bucket.oss-cn-hangzhou.aliyuncs.com\"}]' --Region global二、阿里云CLI配置负载均衡
创建ALB实例的命令示例:
aliyun alb CreateLoadBalancer --LoadBalancerName my-alb --VpcId vpc-xxxxx --AddressType Internet --ZoneMappings '[{\"ZoneId\":\"cn-hangzhou-g\",\"VSwitchId\":\"vsw-xxxxx\"}]'创建服务器组的命令示例:
aliyun alb CreateServerGroup --ServerGroupName web-sg --VpcId vpc-xxxxx --Scheduler Wrr --Protocol HTTP --HealthCheckConfig '{\"HealthCheckEnabled\":true,\"HealthCheckPath\":\"/health\"}'三、Python SDK配置示例
阿里云提供丰富的SDK支持,以下使用Python SDK演示CDN与SLB的自动化配置。
3.1 Python SDK配置CDN
from aliyunsdkcore.client import AcsClient\nfrom aliyunsdkcdn.request.v20180510 import AddCdnDomainRequest\n\nclient = AcsClient(\n access_key_id='your-access-key-id',\n access_secret='your-access-secret',\n region_id='cn-hangzhou'\n)\n\nrequest = AddCdnDomainRequest.AddCdnDomainRequest()\nrequest.set_DomainName('static.example.com')\nrequest.set_CdnType('web')\nrequest.set_Sources('[{\"type\":\"oss\",\"content\":\"example-bucket.oss-cn-hangzhou.aliyuncs.com\"}]')\nrequest.set_Region('global')\n\nresponse = client.do_action_with_exception(request)\nprint(response)3.2 Python SDK配置负载均衡
from aliyunsdkcore.client import AcsClient\nfrom aliyunsdkalb.request.v20200616 import CreateLoadBalancerRequest\n\nclient = AcsClient(\n access_key_id='your-access-key-id',\n access_secret='your-access-secret',\n region_id='cn-hangzhou'\n)\n\nrequest = CreateLoadBalancerRequest.CreateLoadBalancerRequest()\nrequest.set_LoadBalancerName('my-alb')\nrequest.set_VpcId('vpc-xxxxx')\nrequest.set_AddressType('Internet')\nrequest.set_ZoneMappings('[{\"ZoneId\":\"cn-hangzhou-g\",\"VSwitchId\":\"vsw-xxxxx\"}]')\n\nresponse = client.do_action_with_exception(request)\nprint(response)四、Terraform基础设施即代码
阿里云CDN与SLB均已接入Terraform,可通过IaC方式实现资源管理。以下是一个简单的Terraform配置示例:
provider \"alicloud\" {\n region = \"cn-hangzhou\"\n}\n\nresource \"alicloud_cdn_domain_new\" \"cdn_domain\" {\n domain_name = \"static.example.com\"\n cdn_type = \"web\"\n sources {\n type = \"oss\"\n content = \"example-bucket.oss-cn-hangzhou.aliyuncs.com\"\n priority = 20\n port = 80\n weight = 10\n }\n}\n\nresource \"alicloud_alb_load_balancer\" \"alb\" {\n load_balancer_name = \"my-alb\"\n vpc_id = \"vpc-xxxxx\"\n address_type = \"Internet\"\n zone_mappings {\n zone_id = \"cn-hangzhou-g\"\n vswitch_id = \"vsw-xxxxx\"\n }\n}第五部分:常见问题与最佳实践
一、CDN配置常见问题
- 域名添加后状态一直显示“审核中”或“配置中”:等待几分钟后状态会自动变为“正常运行”。
- 配置CNAME后访问仍不生效:检查DNS解析是否已生效(DNS生效通常需要几分钟到几小时),确认CNAME记录值填写正确。
- 私有Bucket回源返回403:检查是否已在CDN回源配置中开启“阿里云OSS私有Bucket回源”功能。
- 缓存未按预期生效:检查缓存规则的权重设置,高权重规则优先生效;确认源站响应头未强制禁用缓存(如
Cache-Control: no-cache)。
二、SLB配置常见问题
- 健康检查失败:检查后端服务器是否正常运行,健康检查路径是否正确,确认后端服务器未屏蔽
100.64.0.0/10网段。 - 会话保持不生效:确认已在服务器组层面开启会话保持功能;检查是否存在多个服务器组之间会话保持冲突。
- 转发规则未按预期生效:检查转发规则的优先级设置;确认规则匹配的域名或URL路径配置正确。
- ALB实例无法访问:检查安全组规则是否限制了入方向流量;确认后端服务器已正确添加到服务器组并设置权重。
三、最佳实践总结
- 权限管理:使用RAM子账号进行日常运维,遵循最小权限原则。
- 多可用区部署:SLB实例与后端服务器部署在同一地域的多个可用区,提升容灾能力。
- 缓存策略精细化:根据资源类型和更新频率设置差异化的缓存过期时间。
- 监控与告警:配置CDN与SLB的监控告警,关注带宽、QPS、健康检查状态等核心指标。
- 成本优化:合理设置缓存过期时间提高缓存命中率,减少回源流量;使用同地域内网访问免流量。
结语
阿里云CDN与负载均衡SLB是构建高性能、高可用云上架构的关键基础设施。CDN通过边缘加速与缓存分发,让内容离用户更近;SLB通过流量治理与健康检查,让源站更稳定可靠。两者协同工作,可构建从用户端到源站的全链路加速与高可用体系。本文从原理到实践,从控制台操作到自动化代码,系统讲解了CDN与SLB的完整配置方法,希望能为读者在云上架构设计与运维实践中提供有价值的参考。
问与答
问1:CDN加速域名添加后,CNAME解析大概多久生效?
答:CNAME解析的生效时间取决于DNS服务商的TTL设置,通常为几分钟到几小时不等。建议在添加CNAME记录前先将TTL值调小(如600秒),待解析生效后再调回正常值。
问2:ALB、NLB和CLB应该如何选择?
答:Web网站、API服务优先选ALB;高性能四层业务(游戏、直播)选NLB;传统简单业务或成本敏感场景选CLB。
问3:CDN回源到OSS私有Bucket时需要注意什么?
答:必须在CDN回源配置中开启“阿里云OSS私有Bucket回源”功能,系统会自动完成RAM角色授权。若未开启,CDN节点因权限不足无法访问OSS资源,会返回403错误。
问4:SLB健康检查失败通常有哪些原因?
答:常见原因包括:后端服务器未正常运行、健康检查路径配置错误、后端服务器屏蔽了健康检查网段(CLB为100.64.0.0/10)、安全组规则限制了健康检查流量。
问5:CDN和GTM如何联动实现源站高可用?
答:采用串行架构——先配置GTM地址池与健康检查,将GTM的CNAME接入域名作为CDN的源站,再将业务域名CNAME解析到CDN。用户请求先到CDN,CDN回源时经过GTM,由GTM智能路由到健康的源站服务器。
问6:如何通过自动化方式管理CDN与SLB配置?
答:可使用阿里云CLI、各语言SDK(Python/Java/Go等)或Terraform进行基础设施即代码管理。通过API/SDK可实现批量域名添加、批量配置修改等自动化运维操作,大幅提升管理效率。




