¿Funcionará este "script de reinicio" de HAProxy con la gracia que creo?


9

Puse este script juntos desde varios lugares. Lo que espero es que haga lo siguiente una vez que se ejecute:

  1. Pause todo el tráfico http "NUEVO" para los puertos 80 y 443 - solo "pause" ellos, no dé ningún error
  2. reinicie con gracia haproxy cuando se completen todas las solicitudes "en proceso"
  3. Deshabilite el tráfico http y continúe con sus actividades habituales.

¿Es así como funcionará? ¿Me he perdido algo? Tenemos miles de reglas acl basadas en ip, almacenadas en un archivo que hace referencia a un proxy y necesitamos volver a cargarlo varias veces por minuto.

#!/bin/sh

# hold/pause new requests
iptables -I INPUT -p tcp --dport 80 --syn -j DROP
iptables -I INPUT -p tcp --dport 443 --syn -j DROP
sleep 1

# gracefully restart haproxy
/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid)

# allow new requests to come in again
iptables -D INPUT -p tcp --dport 80 --syn -j DROP
iptables -D INPUT -p tcp --dport 443 --syn -j DROP

Editar: Me encantaría probarlo de alguna manera, pero todavía no tenemos tráfico (con la excepción de mi prueba).

Fuentes:

http://www.forouzani.com/reload-haproxy-cfg-without-restarting.html

https://github.com/Mirantis/openstack-lbaas/issues/3

HAProxy recarga elegante con cero pérdida de paquetes

Respuestas:


4

Según esos artículos, debería funcionar bien.

Solo recuerda que no tienes el tráfico, siempre puedes emularlo.

Use la herramienta de referencia de Apache para generar tráfico falso.

Solo asegúrese de que la página que está cargando tarde unos segundos en cargar, para probar el peor de los casos.

Creé para usted un libro de cocina que demuestra que la configuración que proporciona funciona correctamente.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.