通过配置相同域名不同路径的转发策略实现精准流量转发

传统负载均衡CLB默认将所有流量指向监听配置的后端服务器组,可能导致资源分配不均、性能下降和运维复杂。随着业务扩展,这种配置无法满足多样化需求。通过配置CLB监听的转发策略,可以将流量引导至指定后端服务器组,实现流量的精细化管理和服务隔离,从而提升资源利用率,保障服务稳定性并优化用户体验。

功能简介

CLB监听的转发策略允许您基于域名和URL路径将接收到的客户端请求精准地分配到不同的后端服务器上,以实现高效、合理的流量分发。

关键特性

  • 域名转发策略

    • 匹配模式:支持精确匹配与通配符匹配(包括单级与多级通配符),如www.aliyun.com为精确匹配,*.aliyun.com*.market.aliyun.com为通配符匹配。

    • 匹配优先级:遵循精确匹配 > 小范围通配符 > 大范围通配符的原则,确保最精确的规则优先执行。

      下表展示了匹配优先级的示例,其中 “✓” 表示匹配,“×” 表示不匹配。

      模式

      请求测试URL

      配置的转发域名策略

      www.aliyun.com

      *.aliyun.com

      *.market.aliyun.com

      精确匹配

      www.aliyun.com

      ×

      ×

      泛域名匹配

      market.aliyun.com

      ×

      ×

      info.market.aliyun.com

      ×

      ×

  • URL路径转发

    • 匹配逻辑:基于URL路径的前缀最长匹配,如配置/abc/abcd,请求/abcde时将优先匹配/abcd规则。

    • 策略组合:可在同一监听下配置多条策略,结合域名与URL路径,实现复杂流量分发场景,如区分读写请求至不同服务器组。

工作原理

您可以在一个监听下添加多条转发策略,每条转发策略关联不同的虚拟服务器组。匹配策略如下图所示。当您没有配置任何转发策略的时候,负载均衡统一将请求转发至监听配置的默认服务器组。 当您配置了转发策略的时候,负载均衡会优先匹配转发策略中的域名或者路径,如果可以匹配到,则转发至转发策略中的服务器组,如果无法匹配到,则转发至监听配置的默认服务器组。

image

适用场景

  • 微服务架构:在微服务架构设计中,应用程序由多个独立的子服务组成,这些子服务各自部署在不同的实例或容器上,通过协同工作完成整体应用功能。采用基于路径的智能路由机制,确保客户端请求能够被精确地分配至处理对应业务逻辑的服务实例。例如,在电商平台上,用户的认证请求、订单处理请求和支付请求,会依据HTTP请求中的URL路径分别被智能路由到认证服务、订单服务和支付服务的对应实例上处理。

  • 读写分离:在处理高并发和对数据一致性要求严格的场景下,如订单处理服务,采用读写分离策略进一步优化服务性能与数据安全性。读操作和写操作分别由不同的数据库实例或集群处理。读取操作被路由到读数据库,而写入操作则定向到写数据库。

  • 多租户应用:在多租户应用的场景中,为了实现不同租户间服务的隔离与个性化,需要为不同的租户提供独立的环境。例如,通过创建租户专属的子域名来区分不同租户的入口,同时结合路径来进一步细化服务功能。这样,不仅可以确保每个租户的数据安全和隐私,还能让每个租户拥有定制化的用户体验和界面。

使用限制

  • 仅7层监听HTTP或HTTPS支持配置转发策略。

  • 转发策略所指向的后端服务器组仅支持虚拟服务器组。

  • 一个HTTP或HTTPS监听可添加的域名和URL转发规则数量不超过40,具体请参考使用限制

场景示例

某教育平台希望通过单一域名提供多样化的在线学习服务,包括视频课程和在线题库。视频服务需要高带宽和流媒体处理能力,而题库服务则需要计算密集和快速响应。最初,所有服务在一个服务器组上部署,导致资源分配不均,在视频高峰期影响题库访问速度,用户体验受损。尤其是在用户访问量激增时,服务器负载过高,无法保证服务稳定运行。

在这种场景下,平台利用阿里云CLB配置了相同域名下不同URL路径的流量转发策略。如下图所示,/video/的请求转发至视频服务器组RS1,确保视频服务获得足够的带宽和处理能力。/exam/的请求转发至题库服务器组RS2,优化计算资源以快速响应查询和提交操作。通过这种方式,实现了精准路由,确保每个子服务都能高效、独立地运行。

image

前提条件

  • 您已在华东2(上海)地域创建了专有网络VPC1,并分别在可用区E和可用区G创建了一个交换机VSW1和VSW2。

  • 您已分别在VSW1和VSW2创建了ECS01和ECS02实例,且ECS01和ECS02实例中部署了应用服务。

    本文ECS01和ECS02部署测试应用示例如下:

    ECS中测试服务部署命令参考示例

    ECS01部署命令示例

    yum install -y nginx
    systemctl start nginx.service
    mkdir /usr/share/nginx/html/video
    cd /usr/share/nginx/html/video
    echo "Hello World ! This is video service." > index.html

    ECS02部署命令示例

    yum install -y nginx
    systemctl start nginx.service
    mkdir /usr/share/nginx/html/exam
    cd /usr/share/nginx/html/exam
    echo "Hello World ! This is exam service." > index.html
  • 您已创建CLB实例

  • 您已通过创建和管理CLB虚拟服务器组为CLB实例创建了2个虚拟服务器组分别命名为RS1和RS2,并在RS1中添加服务器ECS01,在RS2中添加服务器ECS02。

  • 您已为CLB实例配置了HTTP监听或者HTTPS监听

  • 您已经注册阿里云域名并完成ICP备案

操作步骤

步骤一:配置转发策略

  1. 登录传统型负载均衡CLB控制台

  2. 在顶部菜单栏,选择目标CLB实例所属地域。

  3. 实例管理页面,单击目标实例ID链接。

  4. 监听页签,找到目标监听,然后在目标监听操作列单击配置转发策略

  5. 添加转发策略面板,根据以下信息配置转发策略,配置完成后单击添加转发策略

    image

    • 域名:您已经注册并完成备案的自有域名。

    • URL:您的请求路径。

    说明
    • 如果请求的URL路径中包含特殊字符,您需要使用URL特殊字符转义编码。例如,如果配置的转发策略使用包含特殊字符“/#/”的URL路径,那么在访问对应的服务时,需要使用特殊字符井号(#)的转义编码“%23”,即请求的URL路径中必须是“/%23/”,这样才能按设定的转发规则转发请求。

步骤二:设置域名解析

说明
  • 对于非阿里云注册域名,需先将域名添加到云解析控制台,才可以进行域名解析设置。

  • 如果您的CLB实例为私网类型,需先为其绑定弹性公网IP(EIP),随后配置A记录将域名解析指向该EIP实现公网访问。

  1. 在左侧导航栏,选择传统型负载均衡CLB > 实例管理

  2. 实例管理页面,选择目标实例,并复制目标实例的服务地址

  3. 执行以下步骤添加A解析记录。

    1. 登录域名解析控制台

    2. 权威域名解析页面,找到目标域名,在操作列单击解析设置

    3. 解析设置页面,单击添加记录

    4. 添加记录面板配置以下信息,其他参数可保持默认值或根据实际情况修改,完成后单击确定

      配置

      说明

      记录类型

      在下拉列表中选择A

      主机记录

      您的域名的前缀。本文输入www。

      说明

      创建域名为根域名时,主机记录为@

      记录值

      输入域名对应的A地址,即您复制的CLB实例的服务地址。

步骤三:访问测试

使用浏览器访问http://<域名>/<URL>/查看响应结果,验证是否将请求路由到对应的服务器组。

  1. 访问视频服务http://www.***-example.com/video/,查看请求是否路由到视频服务虚拟服务器组RS1。

    image

  2. 访问题库服务http://www.***-example.com/exam/,查看请求是否路由到题库服务虚拟服务器组RS2。

    image

相关问题

CLB同域名不同路径的转发策略是否支持路径的重定向?

不支持。CLB转发策略为流量的转发。如果您需要配置转发路径重定向可考虑使用应用型负载均衡ALB,具体可参考配置监听转发规则

配置多路径转发后,健康检查状态为什么异常了?

配置不同路径转发规则的监听不能限制健康检查路径,您可以根据您的需要不设置健康检查路径或者关闭健康检查。

配置域名转发策略后会产生什么计费项吗?

配置域名转发策略本身不会产生计费项,如果您的CLB实例为私网类型,绑定EIP变更为公网CLB实例,会产生公网网络费。具体计费可参考CLB计费概述

相关文档