2017-06-13 3 views
0

Mit Docker-compose v3 und Bereitstellung auf einen Schwarm:Kibana kann Elasticsearch nicht erreichen

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 

ich dies im Kibana Service Protokoll anzeigen:

Kann Verbindung wieder zu beleben: http://elasticsearch:9200/

Der Elasticsearch Service läuft und kann erreicht werden. Der Schwarm besteht aus 3 Knoten.

Was fehlt mir?

Update: Ich stellte sich heraus, dass, wenn ich versuche, Kibana auf demselben Schwarm Knoten zuzugreifen, in dem Elasticsearch läuft, es funktioniert. Alle anderen Knoten haben entweder ein Netzwerkproblem oder können den Namen elasticsearch nicht auflösen.

+0

Sind sie im selben Netzwerk? – johnharris85

+0

Ja, das sind sie. Ich habe versucht, ein Netzwerk speziell für sie zu definieren sowie das Standard-Netzwerk wie die oben genannte Datei zu verwenden. Ich habe auch beide Dienste überprüft, um die Netzwerkeinstellungen zu überprüfen. Es ist so, als könnten die Kibana-Knoten den Namen 'elasticsearch' nicht auflösen. – ThomasVestergaard

+0

Es funktioniert, wenn ich den Stapel auf meinem lokalen Computer im Schwarm-Modus (nur ein Schwarm-Knoten) bereitstellen. Aber nicht auf dem Schwarm, der 3 Knoten hat. – ThomasVestergaard

Antwort

0

Docker-komponieren erzeugt standardmäßig ein Netzwerk und stellt alle Dienste darin zur Verfügung. Aber ich weiß nicht, ob es sich im Docker-Schwarm ändert. Um es zu definieren, können Sie dies tun.

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 

Ich hoffe, es dient Ihnen, ich für Nachrichten warten.

+0

Immer noch das Gleiche. Überprüfen Sie das Update, das ich der Frage hinzugefügt habe. – ThomasVestergaard

+0

Ich habe eine kleine Docker-Schwarm-Dokumentation gelesen und es scheint eine Möglichkeit zu bestehen, ein Netzwerk zwischen Knoten zu erstellen, um Dienste zu durchlaufen. Sie müssen den "Overlay" -Treiber hinzufügen. – German

0

Ich fand den Grund und die Lösung. Mein Schwarm läuft auf AWS - Alle Knoten befinden sich in derselben Sicherheitsgruppe und ich nahm an, dass alle Ports in dieser Sicherheitsgruppe intern offen waren. Das ist nicht der Fall. Ich habe explizit die Sicherheitsgruppe konfiguriert, um eingehenden Datenverkehr gemäß den Routing-Mesh-Spezifikationen der Hafenarbeiter zuzulassen: https://docs.docker.com/engine/swarm/ingress/

Verwandte Themen