使用Docker Swarm 1.12 ++上的Consul进行Spring云微服务的方法

时间:2017-07-19 07:40:11

标签: java docker spring-cloud docker-swarm consul

我在Spring Cloud生态系统上有几个微服务,作为配置服务器和注册服务器我有领事。此外,我将4个节点上的Docker Swarm和3个consul代理作为服务器模式,将1个consul代理作为每个节点的客户端模式。

我的问题是什么: 我尝试在consul实例上的每个节点上作为docker容器运行,例如:

docker run -d --name consul -h node1 -p 8500:8500 -p ... progrium/consul -server -advertise ${CONSUL_MASTER} -bootstrap-expect 3

并与其他领事代理人一起加入主要领事:

docker run -d --name consul -h node2 -p 8500:8500 -p ... progrium/consul -server -advertise $(docker info --format "{{.Swarm.NodeAddr}}") -join ${CONSUL_MASTER}

然后将我的微服务部署为Docker Swarm中的堆栈:

docker stack deploy --compose-file docker-compose.yml my_stek

我在每个微服务中的bootstrap.yml是: spring: application: name: service-name cloud: consul: host: consul port: 8500 config: enabled: true format: yaml 发现我的服务后出现问题,因为有网络 -  Consul不在swarm集群中运行,无法检查我的微服务的健康状况,我的微服务无法从配置服务器接收配置文件。

所以,请帮助我组织正确的架构。也许我应该在Swarm集群中运行我的领事 - 这是解决这个问题的常用方法,或者它有其他解决方案。谢谢你的帮助!!!

0 个答案:

没有答案