【问题标题】:Difference between Consul Service definition Address and Service AddressConsul 服务定义地址和服务地址的区别
【发布时间】:2017-04-06 23:31:42
【问题描述】:

Consul服务定义json如下

{
    "Address": "192.168.10.10",
    "TaggedAddresses": {
      "lan": "192.168.10.10",
      "wan": "10.0.10.10"
    },
    "CreateIndex": 51,
    "ModifyIndex": 51,
    "Node": "foobar",
    "ServiceAddress": "172.17.0.3",
    "ServiceEnableTagOverride": false,
    "ServiceID": "32a2a47f7992:nodea:5000",
    "ServiceName": "foobar",
    "ServicePort": 5000,
    "ServiceTags": [
      "tacos"
    ]
}

现在根据https://www.consul.io/docs/agent/http/catalog.html#catalog_service提供的文档

地址和服务地址的定义如下:

  1. 地址:服务所在的Consul节点的IP地址 已注册
  2. ServiceAddress:服务主机的 IP 地址——如果为空,则为节点 应该使用地址

A.这是否意味着Address是consul server节点的地址,service address是service所在节点的地址?

B.这是否意味着地址是驻留在服务中的领事代理的地址。如果是这种情况,这是否意味着地址和服务地址相同?

以上哪项是正确的?

【问题讨论】:

    标签: consul


    【解决方案1】:

    我想,该地址是领事代理的地址,而 ServiceAddress 是用于访问此服务的地址。这可以是相同的地址,但也可以不同。

    例如,您可以拥有一个带有多个接口的主机,其中一个用于使 Consul 代理相互交互,另一个用于访问您的服务。

    或者您可以拥有一个带有多个使用 Docker 部署的微服务的单个节点。您可以使用该节点的地址启动单个 Consul Agent,并注册许多在容器中运行并通过容器内部 IP 地址相互通信的微服务。在这种情况下,您将获得服务信息,其中 Address 等于节点的 IP,ServiceAddress 等于具有服务的容器的 IP。

    【讨论】:

    • 感谢@Stainslav 的解释
    猜你喜欢
    • 2018-03-07
    • 2021-02-13
    • 2011-04-29
    • 2020-01-31
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多