2016-06-30 11 views
1

Ich versuche, HAProxy als Loadbalancer für meine Python Webapp, die Redis verwendet verwenden. Ich arbeite am Übergang der docker run-Befehle zu docker-compose mit dem docker-compose.yml - aber ich bin in ProblemeDocker-Compose HAProxy fehlt Frontend

Unten ist meine aktuelle "Docker Run" -Befehle, die völlig in Ordnung ist!

docker run --name sdnapi-redis -v /opt/redis:/data -p 6379:6379 -d redis redis-server --appendonly yes 
docker run -d --name sdnapi1 --link sdnapi-redis:redis mycomp/sdnapi 
docker run -d --name sdnapi2 --link sdnapi-redis:redis mycomp/sdnapi 
docker run -d --name sdnapilb -p 80:80 -p 443:443 -p 1936:1936 -e DEFAULT_SSL_CERT="$(awk 1 ORS='\\n' ./certs/cert.pem)" -v /certs/:/certs/ --link sdnapi1:sdnapi1 --link sdnapi2:sdnapi2 dockercloud/haproxy 

Hier mein Docker-compose.yml ist, die die gleiche Funktionalität

version: '2' 
services: 
    sdnapi: 
    image: mycomp/sdnapi 
    links: 
     - sdnapi-redis:redis 
    sdnapilb: 
    image: dockercloud/haproxy:1.2.1 
    environment: 
     - DEFAULT_SSL_CERT 
    volumes: 
     - /certs/:/certs/ 
    ports: 
     - "80:80" 
     - "443:443" 
     - "1936:1936" 
    links: 
     - sdnapi:sdnapi 
    sdnapi-redis: 
    image: redis 
    volumes: 
     - /opt/redis:/data 
    ports: 
     - "6379:6379" 
    command: redis-server --appendonly yes 

Wenn ich ausführen, um die Docker Befehle ausführen, ist dies die sdnapilb Protokolle replizieren sollte:

global 
    log 127.0.0.1 local0 
    log 127.0.0.1 local1 notice 
    log-send-hostname 
    maxconn 4096 
    pidfile /var/run/haproxy.pid 
    user haproxy 
    group haproxy 
    daemon 
    stats socket /var/run/haproxy.stats level admin 
    ssl-default-bind-options no-sslv3 
    ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:DHE-DSS-AES128-SHA:DES-CBC3-SHA 
defaults 
    balance roundrobin 
    log global 
    mode http 
    option redispatch 
    option httplog 
    option dontlognull 
    option forwardfor 
    timeout connect 5000 
    timeout client 50000 
    timeout server 50000 
listen stats 
    bind :1936 
    mode http 
    stats enable 
    timeout connect 10s 
    timeout client 1m 
    timeout server 1m 
    stats hide-version 
    stats realm Haproxy\ Statistics 
    stats uri/
    stats auth stats:stats 
frontend default_frontend 
    bind :80 
    bind :443 ssl crt /certs/ 
    reqadd X-Forwarded-Proto:\ https 
    maxconn 4096 
    defcon 1 
    default_backend default_service 

Wenn ich docker-compose.yml mit "docker-compose-up -d" ausführen .. Ich verliere die Frontend Abschnitt.

global 
    log 127.0.0.1 local0 
    log 127.0.0.1 local1 notice 
    log-send-hostname 
    maxconn 4096 
    pidfile /var/run/haproxy.pid 
    user haproxy 
    group haproxy 
    daemon 
    stats socket /var/run/haproxy.stats level admin 
    ssl-default-bind-options no-sslv3 
    ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:DHE-DSS-AES128-SHA:DES-CBC3-SHA 
defaults 
    balance roundrobin 
    log global 
    mode http 
    option redispatch 
    option httplog 
    option dontlognull 
    option forwardfor 
    timeout connect 5000 
    timeout client 50000 
    timeout server 50000 
listen stats 
    bind :1936 
    mode http 
    stats enable 
    timeout connect 10s 
    timeout client 1m 
    timeout server 1m 
    stats hide-version 
    stats realm Haproxy\ Statistics 
    stats uri/
    stats auth stats:stats 

Können Sie Probleme mit beiden Setup sehen? Ich möchte Docker-Compose für seine Skalierbarkeit verwenden.

+0

versuchen Sie es ohne -d laufen, so dass Sie die Ausgabe in Ihrem Terminal sehen können. Das wird Ihnen helfen zu debuggen, dann den Fehler zusammen mit Ihrer Frage – ExoticChimp

+0

Vielen Dank für die Idee. Ich habe das versucht, aber es gibt nicht viel in den Protokollen neben der haproxy.cfg-Ausgabe, die den Frontend-Abschnitt fehlt. Die Stats-Seite (Port 1936) funktioniert gut, aber da das Frontend fehlt, gibt es auf Port 80 oder 443 keine Belichtung – truncj

Antwort

0

dachte ich, das Problem aus ...

Die Docker-compose.yml Probleme mit den Links hat .. das Format für Links ist Dienstname: alias

Das Problem mit Mine ist, dass, obwohl meine Service-Namen korrekt waren, der Alias ​​'war falsch ... verursacht den Docker-Compose fehlschlagen, ohne einen tatsächlichen Fehler. Da der Alias ​​nicht existiert, verbindet er einfach nicht den Container - also kein Frontend