我刚开始做码头和微型服务。我已经开始将我的web应用程序分解成微服务,目前,我正在进行手动配置。
经过一些研究后,我遇到了码头群模式,允许服务发现。此外,我还遇到了其他服务发现工具,如尤里卡和领事。
我的主要目标是用服务名称替换curl调用中的IP地址,并在同一服务的多个实例之间实现负载平衡。
也就是前任。curl http://192.168.0.11:8080/ to curl http://my-service
我必须保持服务语言的独立性。
请建议,我是否需要使用领事与码头群服务发现,或我可以做到这一点,没有领事?有什么好处?
发布于 2017-02-05 17:45:19
使用新的“群模式”,您可以使用停靠器服务创建跨多个群集节点的集群服务。然后,您可以通过在请求中使用服务名称而不是节点名称来访问这些相同的服务,即负载平衡服务。
这只适用于群集覆盖网络中的节点。如果您的客户端系统是同一群的一部分,那么发现应该在不需要任何外部解决方案的情况下开箱即用。
另一方面,如果您希望能够从群集之外的系统中发现服务,那么您有几种选择:
--mode global
选项的码头服务(即haproxy,nginx),以确保它在所有节点上运行,或者是一个单独的负载均衡器,比如citrix。您需要让您的服务容器通过它们的启动脚本或通过供应工具(或者手动添加它们)重新配置LB。当然,您也可以将您的服务消费者转移到群体中。但是,如果要将客户端与不同物理VLAN(或VPC等)中的服务分离,则需要在单独的覆盖网络中启动客户端容器,以确保不会有效地消除任何已经存在的物理网络隔离。
发布于 2017-02-05 19:44:34
服务发现(通过dns)从1.12版本开始就被内置到了docker中。当您创建一个自定义网络时(比如桥接或覆盖,如果您有多个主机),只要容器是同一个网络的一部分,就可以让容器通过名称相互交谈。您还可以为每个容器设置一个别名,以循环具有相同别名的容器列表。有关简单的示例,请参见:
发布于 2017-07-12 06:23:45
只要您在码头网络中使用桥接器模式,并在该网络中创建容器,服务发现就可以立即提供给您。
一旦基础设施开始扩展到分布在它们上的多个服务器和微服务,您将需要从其他工具获得帮助。
蜂群是一个很好的工具,然而,如果我的产品负载涉及到像亚马逊这样的IaaS提供商,我想继续坚持下去。
https://stackoverflow.com/questions/42054051
复制相似问题