2017-06-13 50 views
0

使用泊坞窗,撰写v3和部署到群:Kibana不能达到elasticsearch

version: '3' 
services: 

    elasticsearch: 
    image: docker.elastic.co/elasticsearch/elasticsearch:5.4.1 
    deploy: 
     replicas: 1 
    ports: 
    - "9200:9200" 
    tty: true 


    kibana: 
    image: docker.elastic.co/kibana/kibana:5.4.1 
    deploy: 
     mode: global 
    ports: 
    - "5601:5601" 
    depends_on: 
     - elasticsearch 
    tty: true 

我看到这个在kibana服务日志:

无法恢复连接:http://elasticsearch:9200/

Elasticsearch服务正在运行,可以到达。 Swarm由3个节点组成。

我错过了什么?

更新: 事实证明,如果我尝试访问弹性搜索运行的同一个swarm节点上的kibana,它就会起作用。所有其他节点都有网络问题或无法解析弹性搜索名称。

+0

他们在同一个网络上吗? – johnharris85

+0

是的,他们是。我试着为他们定义一个网络,并使用默认的网络,比如上面的撰写文件。我还检查了两种服务以验证网络设置。这就像kibana节点不能解决'elasticsearch'的名字。 – ThomasVestergaard

+0

当我以堆栈模式将堆栈部署到本地计算机时(只有一个群集节点),它可以工作。但不是有3个节点的群体。 – ThomasVestergaard

回答

0

默认情况下,Docker-compose会生成一个网络并将其中的所有服务。但我不知道它是否会在码头群中发生变化。要定义它,你可以做到这一点。

version: '3' 
services: 

    elasticsearch: 
    image: docker.elastic.co/elasticsearch/elasticsearch:5.4.1 
    deploy: 
     replicas: 1 
    ports: 
    - "9200:9200" 
    tty: true 
    networks: 
     - some-name 


    kibana: 
    image: docker.elastic.co/kibana/kibana:5.4.1 
    deploy: 
     mode: global 
    ports: 
    - "5601:5601" 
    links: 
     - elasticsearch 
    depends_on: 
     - elasticsearch 
    tty: true 
    networks: 
     - some-name 

networks: 
    some-name: 
    driver: overlay 

我希望它能为你服务,我会等待消息。

+0

仍然一样。检查我添加到问题中的更新。 – ThomasVestergaard

+0

我正在阅读一个小型的docker swarm文档,似乎有一种方法可以在节点之间创建一个网络来运行服务。你必须添加“覆盖”驱动程序。 – German

0

我找到了原因和解决办法。 我的swarm在AWS上运行 - 所有节点都放在同一个安全组中,我假设所有端口都在该安全组内部打开。事实并非如此。 我明确地配置安全组以允许入站流量按照码头工路由网格规格:https://docs.docker.com/engine/swarm/ingress/