docker registrator配合consul使用的问题

原创
2016/04/19 18:14
阅读数 918

上一篇文章中有介绍使用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
    }
展开阅读全文
打赏
1
2 收藏
分享
加载中
更多评论
打赏
0 评论
2 收藏
1
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部