写点什么

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:01818
用户头像

发布了 1848 篇内容, 共 113.6 次阅读, 收获喜欢 78 次。

关注

评论

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

Android工程架构演进及康威定律

石头

分布式架构,刚性事务-2PC必须注意的问题及3PC详细解

奈学教育

分布式架构 2PC注意事项 3PC详解

hexo博客系统的实现原理与搭建

音视频专家-李超

Hexo 博客

强烈安利第一个画图工具!

我是程序员小贱

高效工作 高效

大数据中台之Kafka,到底好在哪里?

奈学教育

kafka

HTML5 && CSS

shirley

html5 css3

过滤器 和 拦截器 6个区别,别再傻傻分不清了

程序员小富

Java

centos6.9开机启动服务说明

唯爱

Silicon Labs Gecko bootloader 简介

taox

zigbee bootlaoder

如何让解决无法访问 GitHub 的问题?

JackTian

GitHub

【大厂面试03期】MySQL是怎么解决幻读问题的?

NotFound9

MySQL 数据库 编程 架构

游戏夜读 | 网络游戏怎么赚钱?

game1night

TCP 半连接队列和全连接队列满了会发生什么?又该如何应对?

小林coding

Linux TCP 网络安全 计算机网络 网络协议

使用ADMT和PES实现window AD账户跨域迁移-介绍篇

BigYoung

windows AD ADMT PES 迁移

白天写代码,晚上摆地摊!9年前摆地摊学会了这些道理...

王磊

MyBatis启动之XMLConfigBuilder解析配置文件(二)

ytao

后端 mybatis

判例学习(一)梨视频诉字节跳动帮助侵权二审判决

Yin

学习 读书笔记 互联网 知识产权 法律

我是一个连地摊都不会摆的废人

Neco.W

创业 投机 投机者 地摊

ARTS-WEEK02

子路无倦

深入理解JVM垃圾回收机制 - 何为垃圾?

Skye

深入理解JVM 垃圾回收机制

NIO 看破也说破(五): 搞,今天就搞,搞懂Buffer

小眼睛聊技术

Java 学习 读书笔记 架构 后端

5G时代,如何彻底搞定海量数据库的设计与实践

奈学教育

海量数据库的设计与实践

深入理解Java虚拟机

Skye

深入理解JVM

机器学习算法评估指标——2D 目标跟踪

做技术BP的文案Gou

学习 2D 评估标准

【写作群星榜】5.29~6.4写作平台优秀作者&文章排名

InfoQ写作社区官方

写作平台 排行榜 热门活动

别做误人子弟的「职业导师」

Tony Wu

职业成长 导师 教练

万字总结——反射(框架之魂)

学习Java的小姐姐

Java 反射 Java 25 周年

C++:两百字三段代码解决函数返回局部变量问题

韩小非

c++ 函数栈调用 返回局部变量

python3.8.3安装ipython和jupyter

肖飞码字

python3.x Jupyter Notebook

预告|2020中国CRM品牌测评报告

人称T客

原创 | TDD工具集:JUnit、AssertJ和Mockito (十七)编写测试-标签和过滤

编程道与术

Java 编程 TDD 单元测试 JUnit

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