【问题标题】:docker-compose: zipkin cannot connect to elasticsearchdocker-compose:zipkin 无法连接到 elasticsearch
【发布时间】:2019-09-30 14:49:15
【问题描述】:

我尝试使用 docker-compose.yml 设置 zipkin、elasticsearch、prometheus 和 grafana 当我运行 dockers 时,在日志中查看:

dependencies_zipkin | 19/09/30 14:37:09 错误网络客户端:节点 [172.28.0.2:9200] 失败(java.net.ConnectException:连接被拒绝(连接被拒绝));没有其他节点了 - 正在中止...

我在 MacOS X 上使用 docker 2.1.0.3

我的 docker-compose.yml 的内容是这个:

version: '3.7'
services:
  storage:
    image: openzipkin/zipkin-elasticsearch7
    container_name: elasticsearch
    ports:
      - "9200:9200"
    environment:
      - "xpack.security.enabled=false"
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    restart: unless-stopped
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    volumes:
      - $PWD/prometheus:/etc/prometheus/
      - /tmp/prometheus:/prometheus/data:rw
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--web.console.libraries=/usr/share/prometheus/console_libraries'
      - '--web.console.templates=/usr/share/prometheus/consoles'
    ports:
      - "9090:9090"
    restart: unless-stopped
  zipkin:
    image: openzipkin/zipkin
    container_name: zipkin
    depends_on: 
      - dependencies
      - storage
    environment: 
      - "STORAGE_TYPE=elasticsearch"
      - "ES_HOSTS=storage"
    ports:
      - "9411:9411"
    restart: unless-stopped
  grafana:
    image: grafana/grafana
    container_name: grafana
    ports:
      - "3000:3000"
    restart: unless-stopped
  dependencies:
    image: openzipkin/zipkin-dependencies
    container_name: dependencies_zipkin
    depends_on: 
      - storage
    environment:
      - "STORAGE_TYPE=elasticsearch"
      - "ES_HOSTS=storage"

当我连接到 localhost:9200 时,我看到 elasticsearch 工作正常,并且在端口 9411 上部署了 zipkin,但出现错误:

错误:无法加载服务名称:服务器错误(服务不可用)(由于网络错误

在日志中,我有以下信息:

105 ^[[35mdependencies_zipkin |^[[0m 19/09/30 14:45:20 错误 NetworkClient:节点 [172.28.0.2:9200] 失败(java.net.ConnectException:连接被拒绝(连接被拒绝));没有其他节点了 - 正在中止...

还有这个

^[[31mzipkin |^[[0m java.lang.IllegalStateException: 无法连接任何 [Endpoint{storage:80, ipAddr=172.28.0.2, weight=1000}]]

有什么想法吗?

更新 通过使用 mysql 它工作正常,所以问题出在弹性搜索级别。 我也尝试过使用

“STORAGE_PORT_9200_TCP_ADDR=127.0.0.1”

但问题仍然存在。

更新 正如提到的是布赖恩给出的解决方案,我必须使用:

ES_HOSTS=http://storage:9300

关键在端口,我用的是9200端口

错误在zipkin和es之间消失,但​​在es和zipkin-dependencies之间仍然出现。

【问题讨论】:

    标签: docker elasticsearch docker-compose zipkin


    【解决方案1】:

    问题在于您的ES_HOSTS 变量,来自文档here

    所以你需要:ES_HOSTS=http://storage:9200

    【讨论】:

    • 嗨。 storage 是服务的名称,我在文档的某处读到您可以使用服务名称而不是 url(storage 是服务的名称,而不是主机的名称)。我尝试了localhost:9200127.0.0.1:9200,但仍然收到错误消息:dependencies_zipkin | 19/09/30 18:46:21 错误 NetworkClient:节点 [127.0.0.1:9200] 失败(java.net.ConnectException:连接被拒绝(连接被拒绝));。但是感谢您的帮助
    • 抱歉,您完全正确,但我的错误是使用了错误的 http.port。解决方案是:ES_HOSTS=storage:9300 而不是 9200。非常感谢
    【解决方案2】:

    我终于有了这个文件:

    version: '3.7'
    
    services:
      storage:
        image: openzipkin/zipkin-elasticsearch7
        container_name: elasticsearch
        ports:
          - 9200:9200
    
      zipkin:
        image: openzipkin/zipkin
        container_name: zipkin
        environment: 
          - STORAGE_TYPE=elasticsearch
          - "ES_HOSTS=elasticsearch:9300"
        ports:
          - 9411:9411
        depends_on: 
          - storage
    
      dependencies:
        image: openzipkin/zipkin-dependencies
        container_name: dependencies
        entrypoint: crond -f
      depends_on:
        - storage
      environment:
        - STORAGE_TYPE=elasticsearch
        - "ES_HOSTS=elasticsearch:9300"
        - "ES_NODES_WAN_ONLY=true"
    
    prometheus:
      image: prom/prometheus:latest
      container_name: prometheus
      volumes:
        - $PWD/prometheus:/etc/prometheus/
        - /tmp/prometheus:/prometheus/data:rw
      command:
        - '--config.file=/etc/prometheus/prometheus.yml'
        - '--storage.tsdb.path=/prometheus'
        - '--web.console.libraries=/usr/share/prometheus/console_libraries'
        - '--web.console.templates=/usr/share/prometheus/consoles'
      ports:
        - "9090:9090"
    
    grafana:
      image: grafana/grafana
      container_name: grafana
      depends_on:
        - prometheus
      ports:
        - "3000:3000"
    

    主要区别在于

    的用法

    “ES_HOSTS=elasticsearch:9300”

    而不是

    “ES_HOSTS=storage:9300”

    在依赖项配置中,我在依赖项中添加入口点:

    入口点:crond -f 这个真的是我启动docker-compose时不出现异常的关键。

    为了解决这个问题,我检查了这个项目:https://github.com/openzipkin/docker-zipkin

    剩下的问题是:为什么我需要使用入口点:crond -f

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-14
      • 2020-07-31
      • 2017-03-13
      • 2019-10-25
      • 2017-08-21
      • 2016-12-14
      • 1970-01-01
      • 2016-12-04
      相关资源
      最近更新 更多