阅读1078 返回首页    go 阿里云


如何实现域名 / URL 转发功能__最佳实践_负载均衡-阿里云

概述

负载均衡除了可以通过一个实例,将用户的请求转发到同一组后端服务器上外,还支持为 7 层(HTTP 和 HTTPS)监听基于域名和URL自定义转发策略,来进行更高级、更细致的转发控制。监听按域名和URL转发适用于在同一个负载均衡实例下存在多个业务的场景需求。

您可通过创建虚拟服务器组和配置转发策略实现按域名和URL转发请求。

虚拟服务器组

负载均衡默认是在实例维度上维护后端服务器组,即实例下的所有监听都使用相同的后端服务器组。虚拟服务器组允许用户在监听维度上个性化定义服务器组,即实例下的不同监听可使用不同的后端服务器组,可满足域名和URL转发个性化的需求。

实例维度

负载均衡默认通过实例维度进行调度,其主要特点为:

  • 同一监听,前端端口和后端端口可以不同。
  • 同一监听,后端端口固定指向相应实例所有后端服务器上的相同端口。

下图显示了负载均衡实例维度的调度。

实例维度

监听维度

虚拟服务器组则通过监听维度进行调度,其主要特点为:

  • 同一监听,前端端口和后端端口可以不同。
  • 不同虚拟服务器组,可以包含相同或不同服务器。
  • 同一虚拟服务器组内,后端 ECS 可以由不同端口提供服务。
  • 同一监听,后端端口可以指向不同服务器的不同端口。
  • 支持基于域名和 URL 配置个性化转发策略,更灵活地适配业务需求。

下图显示了虚拟服务器组监听维度的调度。

监听维度

配置负载均衡监听实现按域名和 URL 转发

您可按照以下方法配置负载均衡监听,实现按域名和 URL 转发:

  1. 创建、配置具体承载业务的后端 ECS,明确业务服务端口。

  2. 创建虚拟服务器组,选择步骤 1 已准备好的服务器,指定服务端口,并根据服务器规格等因素配置权重。

    如何创建虚拟服务器组请参考 创建虚拟服务器组

  3. 根据业务情况,创建 HTTP 或 HTTPS 协议类型的监听,并配置监听。配置监听时,开启 使用虚拟服务器组,并选择步骤 2 中创建好的虚拟服务器组。在配置健康检查时,建议不设置检查端口,后端会匹配相应的端口进行健康检查;若设置了检查端口,后端会对虚拟服务器组内的所有 ECS 的固定端口进行健康检查。

    如何创建和配置监听,请参考 配置监听

  4. 配置基于域名及 URL 的转发策略。

    如何配置转发策略,请参考 配置转发策略

转发规则判断机制

对于来自负载均衡实例前端的相关请求,判断规则如下:

  • 如果能匹配到相应监听关联的转发策略,则按转发策略,将请求转发到对应的虚拟服务器组;
  • 如果未匹配,而对应监听启用并配置了虚拟服务器组,则将请求转发到对应的虚拟服务器组;
  • 如果均未匹配,则转发到负载均衡实例后端所有 ECS 。端口为监听配置时指定的 后端端口。

下图显示了转发规则的判断流程。

转发规则判断流程

例如,您添加了三个虚拟服务器组,一个为“Test1”,一个为“Test2”,一个为“Test3”。

在创建 HTTP 监听时,可以选择“使用虚拟服务器组”Test3,如下图所示:

在配置监听转发策略时,设置下图示例中的转发策略规则:

示例转发规则

基于如上的设置,其用户访问流量转发判断逻辑如下:

  • 当该监听的流量访问的是 aliyun.com/image 时,将会被转发到 Test2 虚拟服务器组内相应的后端服务器端口上;当流量访问的是 baidu.com/134478 时,将会被转发到 Test1 这个虚拟服务器组内相应的后端服务器端口上。

  • 当该监听的流量访问的都不是以上这两个链接时,将会被转发到监听的“虚拟服务器组” Test3 内相应的后端服务器端口上。

  • 若该监听上没有设置“虚拟服务器组”,那么该监听的流量则会被转发到“已添加的后端服务器”组内。

注意:当您需要根据“相同的域名+不同的URL”进行转发时,建议您配置一个默认转发策略(URL 留空),以免未匹配到的其它 URL 访问出错。

健康检查处理机制

以下表格对比描述了三个维度的健康检查机制:

维度 健康检查配置 健康检查目标服务器
后端服务器 使用配置监听时的健康检查配置 所有后端 ECS
虚拟服务器组 使用配置监听时的健康检查配置 相应虚拟服务器组包含的服务器
转发策略 使用配置监听时的健康检查配置 相应虚拟服务器组包含的服务器

注意

由于虚拟服务器组中可以对 ECS 配置不同的端口,因此在配置健康检查时不要设置检查端口,否则会导致采用了不一致端口承载服务的服务器健康检查失败。

测试示例

3 台后端 ECS 服务器配置:

服务器 监听端口
服务器_80 80
服务器_8080 8080
服务器_8180 8180

虚拟服务器组配置:

服务器组名 包含的服务器及服务端口
apache_80 服务器_80端口 80
apache_8080 服务器_8080端口 8080
apache_8180 服务器_8180端口 8180

监听配置:

前端端口 后端端口 启用虚拟服务器组 对应虚拟服务器组
80 80 apache_80
8080 8080

80 端口转发策略配置:

规则名称 域名 URL 对应虚拟服务器组
前端端口 www.8180.com apache_8180

其它配置:

配置项 配置值
负载均衡 VIP 118.178.168.69
本地 hosts 绑定 118.178.168.69 www.8180.com

测试效果:

测试 URL 访问到的后端服务器 说明
https://118.178.168.69 服务器_80 未匹配到转发策略,但匹配到了监听的虚拟服务器组配置。
https://www.8180.com/ 服务器_8180 匹配到转发策略。
https://118.178.168.69:8080/ 服务器_8080 未匹配到转发策略和虚拟服务器组配置,转发到后端唯一健康检查成功的服务器。

最后更新:2016-12-20 13:19:05

  上一篇:go 结合云解析实现跨地域负载均衡__最佳实践_负载均衡-阿里云
  下一篇:go 资源授权定义__RAM资源授权_API 参考_负载均衡-阿里云