Saltar al contenido

¿Cómo puedo eliminar el nodo balanceado de haproxy a través de la línea de comando?

Solución:

Solución 1:

Actualización (28 de agosto de 2012): Ahora tiendo a usar haproxyctl hoy en día, que utiliza los métodos que se describen a continuación.


Lo solucioné después de investigar un poco más, para cualquier otra persona con el mismo problema: –

Puede agregar un socket Unix en su configuración, luego interactuar con eso (aquí están los posibles comandos).

Para configurar:

sudo nano /etc/haproxy/haproxy.cfg

En su sección ‘global’ agregue:

stats socket /etc/haproxy/haproxysock level admin

Reinicie su demonio haproxy (p. Ej. sudo service haproxy restart)

Ahora necesitas socat (si no lo tienes, solo apt-get install socat en Ubuntu).

Ahora todo lo que necesita hacer es ejecutar este comando para eliminar un nodo:

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

Para volver a activarlo, reemplace deshabilitar con habilitar en el comando anterior.

Solucion 2:

Además del método de eco de beardwizzle, también puede hacer esto de forma interactiva:

[email protected]:/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

Solución 3:

En caso de que solo tenga acceso a netcat (nc) puede usarlo para interactuar con el archivo de socket de HAProxy de manera similar 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

Para deshabilitar un servidor:

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

Asegúrese de que el archivo de socket tenga el nivel de acceso adecuado para realizar lo anterior. Principalmente algo como esto:

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

De lo contrario, obtendrá errores de permiso denegado:

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

$

Referencias

  • Estadísticas de HAProxy desde la línea de comando

Solución 4:

La forma fácil es:

1 – Configure su servidor web para que devuelva el código 503 si existe un archivo llamado maintenance.html (por ejemplo). Con apache puedes hacerlo de la siguiente manera:

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

2 – Configure su backend haproxy para verificar una URL en lugar de solo verificar un puerto de la siguiente manera:

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

3 – Reinicie su servidor web y equilibrador de carga.

4 – Pon tu servidor web en modo de mantenimiento.

touch /var/www/maintenance.html

5 – Retire su servidor web del modo de mantenimiento.

rm -f /var/www/maintenance.html

Solución 5:

También puede “eliminar” temporalmente la página de verificación de estado de un servidor, para desactivar el punto final y luego publicar su aplicación.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *