【问题标题】:Consul + consul agents领事+领事代理
【发布时间】:2017-12-13 09:36:26
【问题描述】:

帮助理解 consul 节点和 consul 代理的启动。 我有一台虚拟机,上面有consul + vault + 2 consul nodes。在VM 3 ip LAN。 所有这些都在 docker 容器中。当我尝试从另一个虚拟机连接到这个领事时。然后代理连接到第一个控制台,无法连接到领事的其他节点。

据我了解,我需要在单独的 ip 主机虚拟机上运行所有 3 个控制台节点,这样才能访问它们的领事代理。只是如何做到这一点?

我用这个 docker-compose 开始 consul + vault

version: "2"
services:
  consul1:
    image: "consul.1.0.1"
    container_name: "consul12"
    hostname: "consul12"
    volumes:
     - ./consul/config:/config/
    ports:
      - "8400:8400"
      - "8500:8500"
      - "8600:53"
      - "8300:8300"
      - "8301:8301"
    command: "agent -config-dir=/config -ui -server -bootstrap-expect 3"
  consul2:
    image: "consul.1.0.1"
    container_name: "consul2"do
    hostname: "consul2"
    volumes:
     - ./consul/config:/config/
    expose:
      - "8400"
      - "8500"
      - "8600"
      - "8300"
      - "8301"
    command: "agent -config-dir=/config -server -join consul1"
    depends_on:
      - consul1
  consul3:
    image: "consul.1.0.1"
    container_name: "consul3"
    hostname: "consul3"
    volumes:
     - ./consul/config:/config/
    expose:
      - "8400"
      - "8500"
      - "8600"
      - "8300"
    command: "agent -config-dir=/config -server -join consul1"
    depends_on:
      - consul1
  vault:
    depends_on:
      - consul1
    image: "vault"
    hostname: "vault"
    links:
      - "consul1:consul1"
    environment:
      VAULT_ADDR: http://127.0.0.1:8200
    ports:
      - "8200:8200"
    volumes:
      - ./vault/tools/wait-for-it.sh:/wait-for-it.sh
      - ./vault/config/vault:/config
      - ./vault/config/vault/policies:/policies
    entrypoint: /wait-for-it.sh -t 20 -h consul1 -p 8500 -s -- vault server -config=/config/with-consul.hcl

领事设置:

{
"data_dir": "/data",
"client_addr": "0.0.0.0",
"ports": {
    "dns": 53
},
"disable_update_check": true,
"addresses": {
    "https": "0.0.0.0"
  }
}

【问题讨论】:

  • 对不起,但其他领事是主人?或者这些其他领事是代理人?

标签: docker networking docker-compose consul


【解决方案1】:

首先尝试使用单个 consul 实例运行并首先使其正常工作。默认情况下,docker consul 将在 dev 模式下运行——没有“bootstrap=3”——其中一对一的端口映射是完整的(即单个 docker vm 到主机端口,与 consul2、consul3 不复杂):

“8400:8400” “8500:8500” “8600:53” “8300:8300” "8301:8301"

【讨论】:

    【解决方案2】:

    我认为默认情况下 consul 不会像@damobrisbane 提到的那样在开发模式下运行。

    不确定您是否显示了服务器或客户端代理的领事设置,但请尝试以下操作: 指定 server: true

    使用 retry_join - 代替 join。

    还可以查看 this 链接以获取领事引导指南。

    【讨论】:

      【解决方案3】:

      我做了这个 docker-compose.yml 并且它有效。

      version: '3'
      
      services:
        consul_master: 
          image: consul
          environment:
            - CONSUL_LOCAL_CONFIG={"datacenter":"dc_local_001", "server":true,"ui":true,"enable_debug":true,"disable_update_check":true,"primary_datacenter":"dc_local_001","acl":{"enabled":false,"default_policy":"deny","down_policy":"extend-cache", "tokens":{"agent":""}}}
            - CONSUL_BIND_INTERFACE=eth0
          hostname: "consul1"
          ports:
            - "8301:8301"
            - "8400:8400"
            - "8500:8500"
            - "8600:53/udp"
          command: "agent -server -bootstrap -ui -client=0.0.0.0 -bind='{{ GetInterfaceIP \"eth0\" }}'"
      
        consul_client:
          image: consul
          links:
            - consul_master
          environment:
            - CONSUL_LOCAL_CONFIG={"leave_on_terminate":true, "datacenter":"dc_local_001"}
          depends_on:
            - consul_master
          command: "agent -server -retry-join=consul_master"
      

      如果您有任何疑问,请写信给我!

      【讨论】:

        猜你喜欢
        • 2018-05-20
        • 2015-09-01
        • 2019-04-18
        • 2021-02-22
        • 2016-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多