Docker集群实验环境布署--swarm【3 注册服务监控与自动发现组件--consul】

参考官网集群配置方式
https://hub.docker.com/r/progrium/consul/
 
集群中需要manager与node能通信consul的发现服务,不然,管理节点选举不了,无法执行docker 命令。
集群中consul工作3台的机器,大于等2台时,集群仍正常工作,如果,发生只有1台时,集群失效,无法选择管理节点,需要启动数据再次达到3台的标准后,集群才能慢慢恢复。
 
测试最终得出一个惊人结论,我把consul集群删除后,重新拉起时,元数据全部自动发现恢复。
 
 
10.40.100.145 docker-consul0.venic.com
10.40.100.146 docker-consul1.venic.com
10.40.100.147 docker-consul2.venic.com
 
 
 
首先在镜像服务器上148上,拉取一个官网 的 consul镜像,方便等下在其它三台上快速启动
# docker pull progrium/consul && docker tag progrium/consul:latest docker-registry.venic.com:5000/consul:latest
# docker push docker-registry.venic.com:5000/consul:latest
 
10.40.100.145上
 
docker run -d  --name consul0 --restart=always -v /mnt:/data \
    -p 8300:8300 \
    -p 8301:8301 \
    -p 8301:8301/udp \
    -p 8302:8302 \
    -p 8302:8302/udp \
    -p 8400:8400 \
    -p 8500:8500 \
    docker-registry.venic.com:5000/consul:latest -server -advertise 10.40.100.145 -bootstrap-expect 3
 
10.40.100.146上
 
docker run -d --name consul1 --restart=always -v /mnt:/data  \
    -p 8300:8300 \
    -p 8301:8301 \
    -p 8301:8301/udp \
    -p 8302:8302 \
    -p 8302:8302/udp \
    -p 8400:8400 \
    -p 8500:8500 \
    docker-registry.venic.com:5000/consul:latest  -server -advertise 10.40.100.146 -join 10.40.100.145
 
10.40.100.147上
 
docker run -d --name consul2 --restart=always -v /mnt:/data  \
    -p 8300:8300 \
    -p 8301:8301 \
    -p 8301:8301/udp \
    -p 8302:8302 \
    -p 8302:8302/udp \
    -p 8400:8400 \
    -p 8500:8500 \
    docker-registry.venic.com:5000/consul:latest  -server -advertise 10.40.100.147 -join 10.40.100.145
 
 
 
 
在Nginx上层代理配置consul的TCP代理转发
10.40.42.10
也是就是controller1和2
# vi 8500_consul.venic.com_10.40.100.145-147_8500.conf
upstream consul.venic.com {
    server 10.40.100.145:8500;
    server 10.40.100.146:8500;
    server 10.40.100.147:8500;
 
}
server {
    listen 8500;
    proxy_pass consul.venic.com;
}
 
 
测试可使用以下链接测试
http://10.40.42.10:8500/
posted @ 2017-01-16 17:42  veniceslove  阅读(1111)  评论(0编辑  收藏  举报