安装consul-client+registrator

先安装consul-server集群:https://www.cnblogs.com/cjsblogs/p/9146492.html

安装consul-client

下载consul:

docker pull docker.io/consul:latest

  

创建calico配置文件:

mkdir -p /opt/platform/consul/config/ /opt/platform/consul/data
vim /opt/platform/consul/config/client.json
{
    "datacenter": "quark-test-consul",
    "data_dir": "/consul/data",
    "server": false,
    "ui": false,
    "bind_addr": "172.16.5.45",
    "client_addr": "0.0.0.0",
    "bootstrap_expect": 0,
    "retry_join": ["172.16.150.25","172.16.150.26","172.16.150.27"],
    "retry_interval": "10s",
    "rejoin_after_leave": true,
    "skip_leave_on_interrupt": true
}

这里client不需要开启UI及server,所以均为false,以及bootstrap_expect设为0不参与leader节点竞争。

启动consul-client

docker run -d \
--net=host \
--name consul \
-v /opt/platform/consul/config:/consul/config \
-v /opt/platform/consul/data:/consul/data \
consul agent

  

安装registrator

下载镜像
这里必须要注意:registrator的lastest版本已经2年没更新了,他的最新主板本是master,一定要注意,因为旧的版本无法发现跟自己不是同一个网络的容器

docker pull docker.io/gliderlabs/registrator:master

#启动镜像
docker run -d \
--name=registrator \
--net=host \
-v /var/run/docker.sock:/tmp/docker.sock \
gliderlabs/registrator:master \
consul://127.0.0.1:8500

这里consul需要读取docker socket信息,所以需要映射docker.sock路径
a. consul的api地址最好填写和registrator在一台机器上的consul地址,因为如果你填了远端的IP,则在consul端口显示你的服务地址为远端+本地端口,这个也是consul设计问题或者说是BUG
b. 如果consul api地址填了远端的,并且注册成功,然后因为一些原因改成本地的,重新注册,就会出现一个服务重复注册的情况,造成这个情况的原因是service的key与serviceid无关,所在集群中会造成服务的重复情况(坑爹),所以切记consul地址一定要填本地,安全起见,全部写成127.0.0.1。以及在启动容器的时候添加-e SERVICE_ID参数,指定service id,然后在注册前做判断。如果出现重复情况,可以尝试清空出现数据异常的consul节点的data目录。

  

猜你喜欢

转载自www.cnblogs.com/cjsblogs/p/9156444.html