当 Rancher 中有 运行 Docker 个容器时,Netflix 的 Eureka 是否提供任何好处?
Does Netflix's Eureka provide any benefit when running Docker containers within Rancher?
我们有一组使用 Spring Boot 构建的微服务,使用 Spring Cloud Netflix。到目前为止,它们被打包为 RPM 并部署到 VM。使用 Eureka 允许服务 registration/discovery(很明显),我们的跨微服务交互可以使用 Spring 的 RestTemplate 和虚拟 IP (VIP) 来完成,如下所示:
http://foo-service/<PATH_TO_RESOURCE>
客户端负载平衡是另一个好处。
现在,我们希望在 Rancher 中使用 Docker 和 运行。我想知道在这种环境下使用 Eureka 仍然有意义。
在 Rancher 中,如果服务名为 'foo-service',则该名称在 Rancher 内部网络中用作 VIP,因此上面显示的相同 URL 也可以工作,没有 Eureka。
此外,如果有多个容器支持一个服务,Rancher 将在它们之间循环负载均衡流量。
此外,Rancher 似乎比 Eureka 更早知道容器的出现和消失。
我正在努力寻找保留 Eureka 的可靠理由。
不太熟悉 Rancher,据我所知,它使用户可以选择部署 Cattle、Docker Swarm、Apache Mesos 或 Kubernetes 来管理您的容器。
所以,最后还是要看你的基础设施平台是否提供服务发现功能(我知道Dockerswarm和Kubernetes提供服务发现,不确定其他);如果您从您的平台获得开箱即用的免费服务发现,并且如果您不需要客户端负载平衡,eureka 就太过分了。
这是在 Kubernetes 上下文中对问题的回答
引用相关部分
In Kubernetes platform, using Eureka (Or Consul/zookeeper any
other service registries) for service discovery is an overkill; you
can achieve the same (arguably) functionality with Kubernetes Services
(+kube DNS Addon), which will act as a referable IP address and a load
balancer (not client side) for the ephemeral Pods. Read this
[article][1] by Christian Posta. If you want to refer your service by
its name instead of IP address add KubeDNS (A kubernetes add on) to
your cluster.
http://blog.christianposta.com/microservices/netflix-oss-or-kubernetes-how-about-both/
编辑
既然你说了,
Within Rancher, if the Service is named 'foo-service', it is used as a
VIP within the Rancher internal network so the same URL shown above
can also work, sans Eureka.
Also, if there are multiple Containers backing a Service, Rancher will
round-robing load-balance traffic amongst them.
因此您可以免费从您的平台获得服务发现和(服务器端)负载平衡器。因此,如果您没有令人信服的理由进行客户端负载平衡,请忘记尤里卡。
我们有一组使用 Spring Boot 构建的微服务,使用 Spring Cloud Netflix。到目前为止,它们被打包为 RPM 并部署到 VM。使用 Eureka 允许服务 registration/discovery(很明显),我们的跨微服务交互可以使用 Spring 的 RestTemplate 和虚拟 IP (VIP) 来完成,如下所示:
http://foo-service/<PATH_TO_RESOURCE>
客户端负载平衡是另一个好处。
现在,我们希望在 Rancher 中使用 Docker 和 运行。我想知道在这种环境下使用 Eureka 仍然有意义。
在 Rancher 中,如果服务名为 'foo-service',则该名称在 Rancher 内部网络中用作 VIP,因此上面显示的相同 URL 也可以工作,没有 Eureka。
此外,如果有多个容器支持一个服务,Rancher 将在它们之间循环负载均衡流量。
此外,Rancher 似乎比 Eureka 更早知道容器的出现和消失。
我正在努力寻找保留 Eureka 的可靠理由。
不太熟悉 Rancher,据我所知,它使用户可以选择部署 Cattle、Docker Swarm、Apache Mesos 或 Kubernetes 来管理您的容器。
所以,最后还是要看你的基础设施平台是否提供服务发现功能(我知道Dockerswarm和Kubernetes提供服务发现,不确定其他);如果您从您的平台获得开箱即用的免费服务发现,并且如果您不需要客户端负载平衡,eureka 就太过分了。
这是在 Kubernetes 上下文中对问题的回答
引用相关部分
In Kubernetes platform, using Eureka (Or Consul/zookeeper any other service registries) for service discovery is an overkill; you can achieve the same (arguably) functionality with Kubernetes Services (+kube DNS Addon), which will act as a referable IP address and a load balancer (not client side) for the ephemeral Pods. Read this [article][1] by Christian Posta. If you want to refer your service by its name instead of IP address add KubeDNS (A kubernetes add on) to your cluster.
http://blog.christianposta.com/microservices/netflix-oss-or-kubernetes-how-about-both/
编辑
既然你说了,
Within Rancher, if the Service is named 'foo-service', it is used as a VIP within the Rancher internal network so the same URL shown above can also work, sans Eureka.
Also, if there are multiple Containers backing a Service, Rancher will round-robing load-balance traffic amongst them.
因此您可以免费从您的平台获得服务发现和(服务器端)负载平衡器。因此,如果您没有令人信服的理由进行客户端负载平衡,请忘记尤里卡。