【问题标题】:Adding services in different consul clients running on same host在同一主机上运行的不同 consul 客户端中添加服务
【发布时间】:2016-09-01 13:28:18
【问题描述】:

我使用 consul 遵循了Testing a Consul cluster on a single host 中的部分。三台领事服务器已成功添加并在同一主机上运行以进行测试。之后,我也按照教程创建了一个 consul 客户端 node4 来公开端口。是否可以添加更多服务并绑定到其中一个领事客户?

【问题讨论】:

  • 这是旧的领事图片/说明。有几个月的官方Consul镜像了hub.docker.com/_/consul但是……你知道6月份发布的新Docker“swarm mode”不再需要Consul了吗?
  • @Alkaline 我们仍然需要 consul 来实现高可用性,不是吗? docs.docker.com/swarm/multi-manager-setup
  • 您不需要使用新的“群模式”的 Consul。服务发现和键/值存储现在是 docker 守护程序的一部分,当它以托管模式(群模式)运行时。设置起来要容易得多。不幸的是,遵循旧的遗留 Swarm 文档也很容易。确保在 google 时搜索“swarm mode”,并确保查看 Docker 站点中的“swarm mode”页面。 docs.docker.com/engine/swarm 通常,它位于“引擎”路径下,如您所见。

标签: docker consul


【解决方案1】:

使用新的“swarm 模式”而不是旧的 Swarm。 Swarm 模式不需要 Consul。服务发现和键/值存储现在是 docker 守护进程的一部分。以下是创建 3 个节点的高可用集群(3 个主节点)的方法。

  1. 创建三个节点

    docker-machine create --driver vmwarefusion node01
    docker-machine create --driver vmwarefusion node02
    docker-machine create --driver vmwarefusion node03
    
  2. 找到node01的ip

    docker-machine ls
    
  3. 设置一个作为初始swarm master

    docker $(docker-machine config node01) swarm init --advertise-addr <ip-of-node01>
    
  4. 获取令牌以让其他节点作为主节点加入

    docker $(docker-machine config node01) swarm join-token manager
    

    这会打印出类似的东西

    docker swarm join \
    --token SWMTKN-1-0siwp7rzqeslnhuf42d16zcwodk543l99liy0wuq1mern8s8u9-8mbsrxzu9mgfw7x6ehpxh0dof \
    192.168.40.144:2377
    
  5. 将另外两个节点添加到集群中作为主节点

    docker $(docker-machine config node02) swarm join \
    --token SWMTKN-1-0siwp7rzqeslnhuf42d16zcwodk543l99liy0wuq1mern8s8u9-8mbsrxzu9mgfw7x6ehpxh0dof \
    192.168.40.144:2377
    
    docker $(docker-machine config node03) swarm join \
    --token SWMTKN-1-0siwp7rzqeslnhuf42d16zcwodk543l99liy0wuq1mern8s8u9-8mbsrxzu9mgfw7x6ehpxh0dof \
    192.168.40.144:2377
    
  6. 检查蜂群

    docker node ls
    

您现在应该能够关闭领导节点并看到另一个作为经理的接机。

【讨论】:

    【解决方案2】:

    Consul 的最佳实践是每个 HOST 运行一个 consul,当你想与 consul 交谈时,你总是在本地交谈。一般来说,1个领事节点知道的一切,其他领事节点也知道。所以你可以和你的本地领事(127.0.0.1:8500)交谈,做你需要做的一切。添加服务时,将它们添加到本地 consul 节点上,该节点上有服务的进程。有像 Registrator (https://github.com/gliderlabs/registrator) 这样的项目,它会自动从正在运行的 docker 容器中添加服务,让生活更轻松。

    总的来说,欢迎来到 Consul,这是很棒的东西!

    【讨论】:

      猜你喜欢
      • 2017-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-14
      • 2013-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多