docker registrator配合consul使用的问题

上一篇文章中有介绍使用registrator将docker容器启动的服务注册到consul,再用consul-template自动更新ngnix配置,实现系统服务的自动发现。

在多个docker主机的情况下存在以下问题:
registrator获取的是本地地址:例如:

{
    "Node":"consulserver",
    "Address":"172.17.0.5",
    "ServiceID":"registrator:dockercompose_web_7:80",
    "ServiceName":"web",
    "ServiceTags":["backend"],
    "ServiceAddress":"172.17.0.4",
    "ServicePort":80,
    "ServiceEnableTagOverride":false,
    "CreateIndex":17,
    "ModifyIndex":17
}

解决办法

在registrator注册时将地址替换为外网地址
其中使用到consul的服务注册和服务列表

  • 服务注册
    curl -X PUT -d '{"Node": "consulserver", "Address": "192.168.17.161","Service": {"Service": "web", "tags": ["backend"], "Port": 32778,"ServiceAddress":"192.168.17.161"}}' http://127.0.0.1:8500/v1/catalog/register
  • 服务列表
    curl http://127.0.0.1:8500/v1/catalog/service/web
    注册以后的地址:
    { 
     "Node":"consulserver",
     "Address":"192.168.17.161",
     "ServiceID":"registrator:dockercompose_web_7:80",
     "ServiceName":"web",
     "ServiceTags":["backend"],
     "ServiceAddress":"",
     "ServicePort":80,
     "ServiceEnableTagOverride":false,
     "CreateIndex":17,
     "ModifyIndex":17
    }

你可能感兴趣的:(docker registrator配合consul使用的问题)