2015-10-26 43 views
5

Sto tentando di eseguire haproxy con la finestra mobile. Ho seguito le istruzioni qui:haproxy/docker Nessun listener abilitato trovato (controllare le direttive "bind")! Chiusura

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

sono stato in grado di costruire l'immagine finestra mobile, ma dopo aver provato a farlo funzionare.

utilizzando

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 

ottengo questo errore:

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

ho cercato, ma l'unica cosa che ho trovato è il codice sorgente di delega ha.

Ecco il mio 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 Ho anche provato a cambiare il nodo URL backend al mio IP dell'host finestra mobile. Ma ancora senza fortuna.

risposta

4

Grazie a @Michael commento. Sono stato in grado di risolvere il problema.

Prima di rimuovere il comando haproxy dal file docker. E poi eseguo manualmente il comando haproxy all'interno del contenitore.

Voilà! Il mio file di configurazione non è un file. È una directory. LOL

Il problema è nel mio comando finestra mobile -v.

lo cambio di percorso completo

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

+0

Prima rimuovo il comando haproxy dal file docker. >> così crei un nuovo file di finestra mobile – andNn

+0

@ naveen23 Sì, l'ho modificato, rimuovo la chiamata per avviare haproxy, se si guarda l'esempio nel repository, è l'ultima riga. Quindi avvio haproxy all'interno del contenitore. L'errore che otterrai sarà più dettagliato. Ma dopo aver trovato l'errore "HAI BISOGNO DI METTERE il comando daemon BACK" o altro, haproxy non si avvierà. –

+0

mi dispiace signore, ancora non chiaro così ..finestra mobile eseguire -d -v /path/to/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy: 1.6 .. deve essere modificato in? – andNn

3

Si desidera rimuovere la parola chiave daemon dal file docker. La finestra mobile richiede che sia in esecuzione un processo in primo piano, altrimenti la finestra mobile verrà chiusa immediatamente.

Penso che il messaggio di errore che si sta vedendo è perché la finestra mobile esce più veloce di haproxy si lega a qualsiasi porta.

+0

Grazie, non è il problema. Ma mi ha portato a trovare il problema. Rimuovendo il daemon di haproxy nel file docker. E eseguirlo manualmente all'interno del contenitore docker. Il problema era la mia opzione -v nella finestra mobile. Crea una directory invece del file .cfg –

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

forse anche cambiare i permessi su certs, ma io non sono sicuro Avviare haproxy con chiavi ssl leggibili a livello globale è una pessima pratica di sicurezza, quindi disabilitano completamente l'avvio.

+0

Un buon consiglio, ma Andrew ha già pubblicato la soluzione al suo problema, che era una cattiva mappatura del volume dell'host (mancava il percorso). – BMitch

1

in realtà ho dovuto riavviare docker-machine (usando OSX), altrimenti ogni volta che correvo container con il volume opzione mount (provato entrambi i percorsi assoluti e relativi) - si stava montando haproxy.cfg come una directory