15

我想了解在哪种情况下,我应该通过负载平衡器选择服务注册表。服务发现vs负载均衡

从我的理解这两个解决方案覆盖了相同的功能。

举例来说,如果我们考虑consul.io作为一个功能列表,我们有:

  • 服务发现
  • 健康检查
  • 键/值存储
  • 多数据中心

如果负载平衡器像Amazon ELB例如有:

  • 配置只能从负载平衡器
  • 接受流量使用以下协议接受流量:HTTP,HTTPS(安全HTTP),TCP和SSL(安全TCP)
  • 分发向多个可用区中的EC2实例发送请求
  • 连接数与负载平衡器接收到的并发请求数成比例
  • 配置Elastic Load Balancing用于监视EC2实例运行状况的运行状况检查向负载平衡器注册,以便它只能将请求发送到健康实例
  • 您可以在使用安全(HTTPS/SSL)连接的网络上使用端到端流量加密
  • [EC2-VPC] You可以创建面向Internet的负载均衡器,该平衡器通过Internet从客户端接收请求并将它们路由到您的EC2实例或面向内部的负载均衡器,该负载均衡器从VPC中的客户端获取请求并将它们路由到您的私有EC2实例子网。 EC2-Classic中的负载平衡器始终面向互联网。
  • [EC2-Classic] EC2-Classic的负载均衡器支持IPv4和IPv6地址。 VPC的负载平衡器不支持IPv6地址。
  • 您可以使用CloudWatch指标,访问日志和AWS CloudTrail监控负载均衡器。
  • 您可以将面向Internet的负载平衡器与您的域名相关联。

因此,在这种情况下,我不理解为什么我会选像consul.ionetflix eurekaAmazon ELB服务发现。

我有一种预感,这可能是由于实施客户端服务发现 VS 服务器端的服务发现,但我不能肯定。

+0

https://stackoverflow.com/questions/46807757/service-discovery-on-aws-ecs-with-application-load-balancer 这个帖子似乎也有同样的关注 –

回答

7

您应该将其视为客户端负载平衡与专用负载平衡。客户端负载均衡器包括贝克街(http://bakerstreet.io);客户端负载均衡器包括Baker Street(http://bakerstreet.io);客户端负载均衡器包括Baker Street(http://bakerstreet.io); Baker Street(http://bakerstreet.io) SmartStack(http://nerds.airbnb.com/smartstack-service-discovery-cloud/);或领事HA代理(https://hashicorp.com/blog/haproxy-with-consul.html)。

客户端LB使用服务发现组件(Baker Street使用无状态发布/订阅服务发现机制; SmartStack使用ZooKeeper; Consul HA代理使用Consul)作为其实现的一部分,但它们提供健康检查/您可能正在寻找的端到端功能。

2

服务发现组件通常有一个通知组件。这不是一个负载均衡器,尽管有些可能有这样的能力。它可以通知注册客户有关更改,例如负载均衡器正在关闭。

客户端可以查询服务发现/注册表以获取正在运行的负载平衡器。而负载平衡器在客户端关闭时不会拒绝客户端。

0

你也应该阅读有关EUREKA


亚马逊ELB提供的EC2实例基于负载均衡服务请求和EC2实例的IP地址并不一致,所以你也可以使用EUREKA哪些呢同样的工作,但基于服务注册和客户端负载平衡,其中每个区域的应用程序客户端都有注册表。 你可以阅读更多关于它在这里: https://github.com/Netflix/eureka/wiki/Eureka-at-a-glance