2017-06-13 61 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/