2015-10-26 1 views
5

Ich versuche, Haproxy mit Docker ausführen. Ich folgte den Anweisungen hier:haproxy/docker Kein aktivierter Listener gefunden (nach "bind" -Direktiven suchen)! Exiting

https://hub.docker.com/_/haproxy/

Ich konnte das Docker Bild bauen, aber nach dem Versuch, um es auszuführen.

mit

docker run -d --link another_container:another_container --name mc-ha -v haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro my_own_haproxy:latest 

ich diesen Fehler:

[ALERT] 298/054910 (1) : [haproxy.main()] No enabled listener found (check for 'bind' directives) ! Exiting. 

ich danach gesucht, aber das einzige, was ich fand, ist der Quellcode ha-Proxy.

Hier ist meine haproxy.cfg

global 
    log /dev/log local0 
    log /dev/log local1 notice 
    chroot /var/lib/haproxy 
    stats socket /run/haproxy/admin.sock mode 660 level admin 
    stats timeout 30s 
    user haproxy 
    group haproxy 
    daemon 

    # Default SSL material locations 
    ca-base /etc/ssl/certs 
    crt-base /etc/ssl/private 

    # Default ciphers to use on SSL-enabled listening sockets. 
    # For more information, see ciphers(1SSL). 
    ssl-default-bind-ciphers kEECDH+aRSA+AES:kRSA+AES:+AES256:RC4-SHA:!kEDH:!LOW:!EXP:!MD5:!aNULL:!eNULL 

defaults 
    log  global 
    mode http 
    option httplog 
    option dontlognull 
    timeout connect 5000 
    timeout client 50000 
    timeout server 50000 
    errorfile 400 /etc/haproxy/errors/400.http 
    errorfile 403 /etc/haproxy/errors/403.http 
    errorfile 408 /etc/haproxy/errors/408.http 
    errorfile 500 /etc/haproxy/errors/500.http 
    errorfile 502 /etc/haproxy/errors/502.http 
    errorfile 503 /etc/haproxy/errors/503.http 
    errorfile 504 /etc/haproxy/errors/504.http 

frontend esNodes 
    bind *:8091 
    mode http 
    default_backend srNodes 

backend srNodes 
    mode http 
    balance roundrobin 
    option forwardfor 
    http-request set-header X-Forwarded-Port %[dst_port] 
    http-request add-header X-Forwarded-Proto https if { ssl_fc } 
    option httpchk HEAD/HTTP/1.1\r\nHost:localhost 
    server web01 0.0.0.0:10903/project/es check 

EDIT: BTW auch ich versucht, den Back-End-Knoten URL zu meinem Docker Host-IP ändern. Aber immer noch kein Glück.

Antwort

4

Dank @Michael kommentieren. Ich konnte das Problem lösen.

Zuerst entferne ich den Haproxy-Befehl aus der Docker-Datei. Und dann starte ich den haproxy-Befehl manuell im Container.

Voila! Meine Konfigurationsdatei ist keine Datei. Es ist ein Verzeichnis. LOL

Das Problem ist in meinem Docker Befehl -v.

ich es vollständigen Pfad ändern

-v full_path/customhaproxy.cfg: /usr/local/etc/haproxy/haproxy.cfg

+0

Zuerst entferne ich den Haproxy-Befehl aus der Docker-Datei. >> so erstellen Sie eine neue Docker-Datei – andNn

+0

@ naveen23 Ja, ich habe es geändert, ich entferne den Aufruf, um Haproxy zu starten, wenn Sie das Beispiel in ihrem Repo betrachten, ist es die letzte Zeile. Dann starte ich haproxy im Container. Der Fehler, den Sie erhalten, ist detaillierter. Aber nach dem Finden des Fehlers "SIE MÜSSEN DEN Daemon-Befehl ZURÜCK" oder sonst, haproxy nicht starten. –

+0

Sorry Herr, noch nicht klar so ..docker run -d -v /path/to/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy: 1.6 .. sollte geändert werden? – andNn

3

Sie wollen das daemon Stichwort aus dem Docker-Datei entfernen - muss Docker ein Vordergrundprozess sonst Docker zu laufen sofort verlassen wird.

Ich denke, die Fehlermeldung, die Sie sehen, ist, weil Docker schneller beendet als Haproxy bindet an beliebige Ports.

+0

Dank wurde Montage ist es nicht das Problem. Aber es hat mich dazu gebracht, das Problem zu finden. Durch Entfernen des Daemon Haproxy in Dockerfile. Und es manuell im Andock-Container ausführen. Das Problem war meine -V-Option in Docker. Es erstellt ein Verzeichnis anstelle der .cfg-Datei –

0
ls -l /etc/ssl/certs 
ls -l /etc/ssl/private 
chmod -r 400 /etc/ssl/private 

vielleicht auch die Berechtigungen für Zert ändern, aber ich 'ich bin mir nicht sicher. Das Starten von haproxy mit global lesbaren SSL-Schlüsseln ist eine sehr schlechte Sicherheitsvorkehrung, daher wird der Startvorgang komplett deaktiviert.

+0

Guter Tipp, aber Andrew hat bereits die Lösung zu seinem Problem gepostet, das eine schlechte Host-Volume-Zuordnung (fehlender Pfad) war. – BMitch

1

Ich hatte eigentlich docker-machine (mit OSX) neu zu starten, sonst Mount-Option jedes Mal, wenn ich lief container mit Volumen (versucht, beide absolute und relative Pfade) - es haproxy.cfg als Verzeichnis

Verwandte Themen