Come posso rimuovere il nodo bilanciato da haproxy tramite la row di command?

Ho haproxy in esecuzione come mio bilanciatore di carico e dall'interface web di stats che viene fornita con haproxy, posso mettere un server web in modalità di manutenzione (e riportrlo di nuovo) – che è fantastico!

Tuttavia, desidero anche poter eseguire la stessa azione dalla row di command (per l'utilizzo in alcuni flussi di lavoro automatizzati di distribuzione). È ansible, e se così, come?

Grazie molto

  • Come get il nome del server che ha fornito la richiesta nella sezione fronted?
  • HAProxy max a ~ 10.700 connessioni
  • Switch HAProxy solo in caso di server verso il basso
  • Bilanciamento del carico senza un bilanciatore di carico?
  • HAProxy restituisce l'errore se il server scende prima che sia verificato il controllo della salute
  • 5 Solutions collect form web for “Come posso rimuovere il nodo bilanciato da haproxy tramite la row di command?”

    Aggiornamento (28 ago 2012): Ora ho l'uso di haproxyctl che utilizza i methods descritti di seguito.


    Lo ho risolto dopo una ricerca più piccola, per chiunque altro con la stessa questione:

    È ansible aggiungere una socket unix nella configuration, quindi interagire con quella ( qui sono i comandi possibili ).

    Impostare:

    sudo nano /etc/haproxy/haproxy.cfg 

    Nella sezione "globale" aggiungere:

     stats socket /etc/haproxy/haproxysock level admin 

    Riavviare il tuo daemon haproxy (ad esempio sudo service haproxy restart )

    Ora avete bisogno di socat (se non lo avete, solo apt-get install socat su Ubuntu).

    Ora tutto quello che devi fare è spegnere questo command per togliere un nodo:

     echo "disable server yourbackendname/yourservername" | socat stdio /etc/haproxy/haproxysock 

    Per riportrlo indietro sostituire disabilitare con abilitazione nel command precedente.

    Oltre al metodo di echo di beardwizzle, puoi anche farlo in modo interattivo:

     root@ny-lb01:/etc/haproxy# sudo socat readline /var/run/haproxy.stat prompt > set timeout cli 1d > disable server foo/web01 > help Unknown command. Please enter one of the following commands only : clear counters : clear max statistics counters (add 'all' for all counters) clear table : remove an entry from a table help : this message prompt : toggle interactive mode with prompt quit : disconnect show info : report information about the running process show stat : report counters for each proxy and server show errors : report last request and response errors for each proxy show sess [id] : report the list of current sessions or dump this session show table [id]: report table usage stats or dump this table's contents get weight : report a server's current weight set weight : change a server's weight set timeout : change a timeout setting disable server : set a server in maintenance mode enable server : re-enable a server that was previously in maintenance mode 

    Il modo più semplice è:

    1 – Configurare il server Web per restituire il codice 503 se esiste un file denominato maintenance.html (ad esempio). Con apache puoi farlo come segue:

     <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{ENV:REDIRECT_STATUS} !=503 RewriteCond "/var/www/maintenance.html" -f RewriteRule ^(.*)$ /$1 [R=503,L] </IfModule> 

    2 – Configurare il backlog haproxy per controllare un URL invece di controllare una port solo come segue:

     backend site balance roundrobin option httpchk GET /index.html server myserver1.example.com 1.1.1.1:80 cookie S1 check inter 2000 fall 3 server myserver2.example.com 1.1.1.2:80 cookie S2 check inter 2000 fall 3 

    3 – Riavviare il server web e il bilanciatore di carico.

    4 – Metti il ​​tuo server web in modalità di manutenzione.

     touch /var/www/maintenance.html 

    5 – Rimuovere il server web dalla modalità di manutenzione.

     rm -f /var/www/maintenance.html 

    Sull'assenza che si ha solo accesso a netcat ( nc ) è ansible utilizzarlo per interagire con il file socket di HAProxy in modo simile a socat .

     $ echo "show info" | nc -U /var/lib/haproxy/stats | head -10 Name: HAProxy Version: 1.5.2 Release_date: 2014/07/12 Nbproc: 1 Process_num: 1 Pid: 29745 Uptime: 0d 0h14m35s Uptime_sec: 875 Memmax_MB: 0 Ulimit-n: 8034 

    Per disabilitare un server:

     $ echo "enable server bk_dservers/ds02" | nc -U /var/lib/haproxy/stats 

    Assicurarsi che il file socket abbia il livello di accesso appropriato per eseguire quanto sopra. Principalmente qualcosa di simile:

     stats socket /var/lib/haproxy/stats level admin 

    Altrimenti avrai l'authorization negata degli errori:

     $ echo "disable server bk_dservers/ds02" | nc -U /var/lib/haproxy/stats Permission denied $ 

    Riferimenti

    • Statistiche HAProxy dalla row di command

    Puoi anche temporaneamente "rimuovere" la pagina di controllo della salute da un server, per get l'endpoint in discesa e pubblicare l'applicazione.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.