我们使用Spring Cloud Netflix创建了一系列使用Spring Boot构建的微服务。到目前为止,它们已被打包为RPM并部署到VM。使用Eureka允许服务注册/发现(显然),我们的跨微服务交互使用Spring的RestTemplate与虚拟IP(VIP)完成,如下所示:
http://foo-service/<PATH_TO_RESOURCE>
客户端负载平衡是另一个好处。
现在,我们正在寻找使用Docker并在Rancher中运行。我想知道在这种环境下使用Eureka仍然有意义。
在Rancher中,如果服务被命名为“foo-service&#39;”,那么该名称将用作Rancher内部网络中的VIP,因此上面显示的相同URL也可以使用,无论是Eureka。
此外,如果有多个Container支持服务,Rancher将在它们之间循环负载平衡流量。
另外,看起来Rancher会比Eureka更早了解容器的来来往往。
我努力找到留下尤里卡的坚实理由。
答案 0 :(得分:4)
对Rancher,AFAIK不太熟悉,它使用户可以选择Cattle,Docker Swarm,Apache Mesos或Kubernetes来管理您的容器。
因此,最终归结为您的基础架构平台是否提供服务发现功能(我知道Docker swarm和Kubernetes提供服务发现,不确定其他人);如果您从平台上获得免费服务发现,并且如果您不需要客户端负载平衡,那么尤里卡是一种过度杀伤。
以下是Kubernetes背景下的问题的答案
https://stackoverflow.com/a/40568412/6785908
引用相关部分
在Kubernetes平台,使用Eureka(或Consul / zookeeper any 服务发现的其他服务注册表是一种过度杀伤力;您 可以与Kubernetes服务实现相同(可论证)的功能 (+ kube DNS Addon),它将充当可参考的IP地址和负载 短暂的Pods(不是客户端)。读这个 [文章] [1]由Christian Posta撰写。如果您想通过推荐您的服务 它的名称而不是IP地址添加KubeDNS(A kubernetes add on) 你的集群。
http://blog.christianposta.com/microservices/netflix-oss-or-kubernetes-how-about-both/
既然你说过,
在Rancher中,如果服务名为'foo-service',则将其用作a Rancher内部网络中的VIP所以上面显示的URL相同 也可以工作,没有尤里卡。
此外,如果有多个Container支持服务,Rancher会 他们之间的轮流负载平衡流量。
因此,您可以从您的平台免费获得服务发现和(服务器端)负载均衡器。因此,如果您没有令人信服的理由进行客户端负载平衡,请忘记eureka。