中间层负载平衡器是一种不暴露在 Internet 上的负载平衡器,而是用于在堆栈中的组件之间分配内部生成的流量。
一个例子是“下单”(微)服务,通过向“目录商品详细信息”(微)服务发送请求来验证价格——您需要一个中间层负载均衡器在多个节点前面提供“目录项详细信息”服务,以便将请求路由到该服务的健康端点,而“下订单”无需自行负责以某种方式找到健康的“目录项详细信息”端点。
Eureka 于 2012 年首次致力于 Github。当时,EC2 的大部分内容仍在“EC2 Classic”中运行——简单来说,这是 EC2 在 VPC 之前的旧工作方式。与今天相比,这是一个更加原始的环境。
使用 EC2-Classic,您的实例可以在您与其他客户共享的单一平面网络中运行。借助 Amazon VPC,您的实例在逻辑上与您的 AWS 账户隔离的虚拟私有云 (VPC) 中运行。
EC2-Classic 平台是在 Amazon EC2 的原始版本中引入的。如果您在 2013 年 12 月 4 日之后创建了 AWS 账户,则它不支持 EC2-Classic,因此您必须在 VPC 中启动您的 Amazon EC2 实例。
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-classic-platform.html
EC2 Classic 支持安全组来保护对 EC2 实例的访问,但 EC2 Classic 中的弹性负载均衡器 (ELB) 不支持。
VPC 正式发布in August, 2011。
弹性负载均衡器——最初是唯一的类型,这种类型后来被重新命名为“ELB Classic”,不推荐用于新环境——为 VPC in November, 2011 发布,但仅限于面向 Internet 的品种。在此之前,如上所述,ELB 只在 EC2 Classic 中工作,只面向 Internet,并且接受来自各处的 HTTP 和 HTTPS 流量。您无法通过安全组控制访问。
ELB Classic 在 2012 年 6 月发布了Internal Elastic Load Balancers,学会了一个新技巧——只能从 VPC 内的服务访问。这些可以安全地用于中间层,但它们非常有限,因为它们无法根据主机名或路径做出路由决策。 ELB Classic 是一个非常准系统的负载均衡器,灵活性很小。您基本上需要为每个服务使用不同的平衡器。一种常见的配置是在 ELB Classic 后面使用 HAProxy 来填补一些功能空白。
AWS 直到 2016 年 8 月才提供可靠的托管中间层负载均衡器产品,当时新的 Application Load Balancer was announced 能够根据请求中的模式匹配将流量发送到不同的后端目标组发送到平衡器的路径...并支持在面向 Internet 或仅限内部的方案中进行部署。
2017 年 4 月,Application Load Balancer 得到了增强,还可以像以前一样选择后端目标组 based on pattern-matching the HTTP Host header 和/或路径。
此时,VPC 和 ALB 满足了许多(但在某些情况下,并非全部)似乎推动了 Eureka 发展的需求。