首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >不使用领事在码头发现服务

不使用领事在码头发现服务
EN

Stack Overflow用户
提问于 2017-02-05 15:52:35
回答 3查看 1.9K关注 0票数 6

我刚开始做码头和微型服务。我已经开始将我的web应用程序分解成微服务,目前,我正在进行手动配置。

经过一些研究后,我遇到了码头群模式,允许服务发现。此外,我还遇到了其他服务发现工具,如尤里卡和领事。

我的主要目标是用服务名称替换curl调用中的IP地址,并在同一服务的多个实例之间实现负载平衡。

也就是前任。curl http://192.168.0.11:8080/ to curl http://my-service

我必须保持服务语言的独立性。

请建议,我是否需要使用领事与码头群服务发现,或我可以做到这一点,没有领事?有什么好处?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-02-05 17:45:19

使用新的“群模式”,您可以使用停靠器服务创建跨多个群集节点的集群服务。然后,您可以通过在请求中使用服务名称而不是节点名称来访问这些相同的服务,即负载平衡服务。

这只适用于群集覆盖网络中的节点。如果您的客户端系统是同一群的一部分,那么发现应该在不需要任何外部解决方案的情况下开箱即用。

另一方面,如果您希望能够从群集之外的系统中发现服务,那么您有几种选择:

  • 对于无状态服务,您可以使用docker的路由网格,这将使服务端口在所有群集节点上都可用。这样,您只需指向群中的任何节点,停靠者就会将您的请求定向到运行该服务的节点(不管您单击的节点是否有该服务)。
  • 如果您需要控制路由或处理不同的状态,请在群集服务前面使用实际的负载均衡器。这可能是另一个带有--mode global选项的码头服务(即haproxy,nginx),以确保它在所有节点上运行,或者是一个单独的负载均衡器,比如citrix。您需要让您的服务容器通过它们的启动脚本或通过供应工具(或者手动添加它们)重新配置LB。
  • 使用领事之类的方法来发现外部服务。可能与登记员一起自动添加服务。在这个场景中,您只需配置您的外部客户端,使其能够使用领事服务器/集群进行DNS解析(或使用API)。

当然,您也可以将您的服务消费者转移到群体中。但是,如果要将客户端与不同物理VLAN(或VPC等)中的服务分离,则需要在单独的覆盖网络中启动客户端容器,以确保不会有效地消除任何已经存在的物理网络隔离。

票数 6
EN

Stack Overflow用户

发布于 2017-02-05 19:44:34

服务发现(通过dns)从1.12版本开始就被内置到了docker中。当您创建一个自定义网络时(比如桥接或覆盖,如果您有多个主机),只要容器是同一个网络的一部分,就可以让容器通过名称相互交谈。您还可以为每个容器设置一个别名,以循环具有相同别名的容器列表。有关简单的示例,请参见:

https://linuxctl.com/docker-networking-options-bridge

票数 1
EN

Stack Overflow用户

发布于 2017-07-12 06:23:45

只要您在码头网络中使用桥接器模式,并在该网络中创建容器,服务发现就可以立即提供给您。

一旦基础设施开始扩展到分布在它们上的多个服务器和微服务,您将需要从其他工具获得帮助。

蜂群是一个很好的工具,然而,如果我的产品负载涉及到像亚马逊这样的IaaS提供商,我想继续坚持下去。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42054051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档