NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

AWS Application Load Balancer 的高级请求路由

  • 2019-10-06
  • 本文字数:1771 字

    阅读完需:约 6 分钟

AWS Application Load Balancer 的高级请求路由

AWS Application Load Balancer 自 2016 年夏使用至今! 它们支持基于内容的路由,适用于无服务器且基于容器的应用程序,并且具有高度可扩展性。很多 AWS 客户使用现有的基于主机和路径的路由来增强 HTTP 和 HTTPS 应用程序,同时利用其他 ALB 功能,例如端口转发(非常适合基于容器的应用程序)、健康检查、服务发现、重定向、固定应答以及内置身份验证。

高级请求路由

基于主机的路由功能允许您编写规则,以使用主机标头将流量路由到所需的目标组。我们正在扩展和推广此功能,使您能够基于标准和自定义 HTTP 标头和方法、查询字符串以及源 IP 地址来编写规则(和路由流量)。我们还致力于使规则和条件更强大;规则可以有多个条件(AND 关系),每个条件可以指定与多个值的匹配(OR 关系)。


您可以使用此新功能来简化应用程序架构,无需使用代理队列进行路由,并在负载均衡器阻止不需要的流量。以下是一些用例:


  • 将人为流量与机器人/爬虫流量分开。

  • 将客户或客户组分配到单元(不同的目标组)并相应地路由流量。

  • 执行 A/B 测试。

  • 执行金丝雀或蓝绿部署。

  • 根据方法将流量路由到微服务处理程序(例如,PUT 到一个目标组或 GET 到另一个目标组)。

  • 执行基于 IP 地址或 CDN 的访问限制。

  • 有选择地将流量路由到本地或云端的目标组。

  • 为各种类型和类别的设备提供不同的页面或用户体验。

使用高级请求路由

只需编辑现有规则,即可将此功能用于现有的 Application Load Balancer。下面我将从一个简单的规则开始,即返回一个固定的纯文本响应(这篇博文中的示例仅供测试和说明;相信您的情况更实际,也更有趣):



我可以使用 curl 来测试:


$ curl http://TestALB-156468799.elb.amazonaws.com
复制代码


符合默认规则!


单击 Insert Rule(插入规则)来设置一些高级请求路由:



然后单击 Add condition(添加条件)并检查可用的选项:



选择 Http header(Http 标头)并创建一个条件,查找名为“user”且值为 jeff 的 cookie。然后创建一个返回固定响应的操作:



单击 Save(保存),等待几秒钟,然后在更改生效后发出一对请求:


$ curl http://TestALB-156468799.elb.amazonaws.com
复制代码


符合默认规则!


$ curl --cookie "user=jeff" http://TestALB-156468799.elb.amazonaws.comHello Jeff
复制代码


我还可以创建一个匹配一个或多个 IP 地址 CIDR 块的规则:



$ curl http://TestALB-156468799.elb.amazonaws.com
复制代码


Hello EC2 实例


我可以匹配查询字符串(这对 A/B 测试非常有用):



$ curl http://TestALB-156468799.elb.amazonaws.com?ABTest=A
复制代码


A/B 测试,已选择选项 A


如果我只关心是否存在特定的字段名称,也可以使用通配符:



我可以匹配标准或自定义 HTTP 方法。我可以创建一个名为 READ 的方法:



$ curl --request READ http://TestALB-156468799.elb.amazonaws.com
复制代码


已调用自定义 READ 方法


针对以下操作有很多灵活处理(并不新鲜,但绝对值得了解):



转发,将请求路由到目标组(一组 EC2 实例、一个 Lambda 函数或一个 IP 地址列表)。


重定向,生成 301(永久)或 302(找到)响应,还可用于在 HTTP 与 HTTPS 之间切换。


返回固定响应,生成带有任何所需响应代码的静态响应,如之前所展示的那样。


身份验证,使用 Amazon Cognito 或 OIDC 提供程序对请求进行身份验证(仅适用于 HTTPS 侦听器)。

注意事项

关于这个强大的新功能有以下几点注意事项:


指标 – 您可以查看规则评估和 HTTP 固定响应计数 CloudWatch 指标,以了解规则相关活动的更多信息(了解更多):



编程访问 – 您还可以使用 ALB API 和 CLI 创建、修改、检查和删除规则(即将推出 CloudFormation 支持)。


规则匹配 – 这些规则由字符串匹配提供支持,因此请仔细测试并反复检查您的规则是否按预期运行。调试和测试时,ALB 访问日志中的 matched_rule_priority 和 actions_executed 字段很有帮助(了解更多)。


限制 – 每个 ALB 最多可以有 100 条规则,不包括默认值。每条规则最多可引用 5 个值,最多可使用 5 个通配符。条件数量仅受引用的唯一值的数量限制。

现已推出

现在,所有 AWS 地区都提供高级请求路由,无需额外付费(您只需支付 Application Load Balancer 的正常价格)。


作者介绍:


Jeff Barr


AWS 首席布道师; 2004 年开始发布博客,此后便笔耕不辍。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/new-advanced-request-routing-for-aws-application-load-balancers/


2019-10-06 22:01703
用户头像

发布了 1836 篇内容, 共 92.4 次阅读, 收获喜欢 73 次。

关注

评论

发布
暂无评论
发现更多内容

加入MOVE,一起体验Move2Earn的运动乐趣

BlockChain先知

druid源码学习八

Nick

Apache Druid 自旋锁

为什么企业要告别自托管并迁移到 Atlassian 云版?

龙智—DevSecOps解决方案

Atlassian Atlassian 云版 Atlassian迁移

TDengine在弘源泰平量化投资中的实践

TDengine

数据库 tdengine 开源 时序数据库

携手 TDengine,释普科技升级实验室仪器、监控智能方案

TDengine

数据库 tdengine 开源 物联网

争夺存量用户关键战,助力企业构建完美标签体系丨01期直播回顾

袋鼠云数栈

大数据 数据中台

[Day41]-[回溯]-全排列

方勇(gopher)

LeetCode 回溯算法 数据结构算法

LinkedList 源码分析-初始化&节点查询

zarmnosaj

5月月更

开启分布式应用性能观测(APM)

观测云

可观测性 可观测

时序数据库的集群方案?

TDengine

数据库 tdengine 开源

「国货」设计SaaS崛起,黑马inCreate自图冲出公装赛道

ToB行业头条

火爆的健身应用软件是如何一步一步打造出来的?

龙智—DevSecOps解决方案

DevOps perforce Helix Core

第三方 IP:管理半导体外部 IP

龙智—DevSecOps解决方案

perforce Methodics IPLM 管理 IP

直播预约|数据指标体系如何搭建才最有效,从0到1带你快速入门

袋鼠云数栈

大数据 数据中台

ApacheCon Asia 2022 强势来袭!16 大专题等你投稿!

阿里巴巴云原生

开源 云原生 活动

携手数字人、数字空间、XR平台,阿里云与伙伴共同建设“新视界”

阿里云弹性计算

XR 数字人 视觉计算 瑶台

为什么说 MongoDB 和 HBase 不适用于汽车行业的时序数据处理?

TDengine

数据库 tdengine 开源 时序数据库

敏捷已死

方云AI研发绩效

时间序列化数据库选型?时序数据库的选择?

TDengine

数据库 tdengine

【刷题第12天】58. 最后一个单词的长度

白日梦

5月月更

Docker学习记录

ZuccRoger

5月月更

客户成功是一种思维模式 | ONES 人物

万事ONES

场景实践 | 如何使用融云超级群构建游戏社区

融云 RongCloud

ShardingSphere 在东南亚|与科技保险公司 Fuse 的技术融合

SphereEx

Apache 开源 ShardingSphere SphereEx 数据库·

B站S11破亿直播在线稳定性保障秘籍——演讲实录

TakinTalks稳定性社区

混沌工程 系统稳定性 全链路压测 安全生产

如何使用阿里云 CDN 对部署在函数计算上的静态网站进行缓存

阿里巴巴云原生

阿里云 Serverless 云原生 CDN 函数计算

TDengine 在酷哞哞的应用

TDengine

数据库 tdengine 开源 物联网

百度程序员Android开发小技巧

百度Geek说

移动端

[Day42]-[回溯]-组合

方勇(gopher)

LeetCode 数据结构和算法 回溯算法

netty系列之:在netty中实现线程和CPU绑定

程序那些事

Java Netty 程序那些事 5月月更

要做研发高手,就是必须能看英文、写英文

TDengine

数据库 tdengine 开源

AWS Application Load Balancer 的高级请求路由_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章