Questo "riavvio script" di HAProxy funzionerà con garbo, penso che funzionerà?


9

Ho messo insieme questa sceneggiatura da vari luoghi. Ciò che spero è che una volta eseguito eseguirà le seguenti operazioni:

  1. Metti in pausa tutto il traffico "NUOVO" http per le porte 80 e 443 - basta "metterle in pausa", non dare alcun errore
  2. riavviare graziosamente haproxy quando tutte le richieste "in process" sono state completate
  3. Annulla la pausa dal traffico http e continua a lavorare normalmente.

È così che funzionerà? Ho perso qualcosa? Abbiamo migliaia di regole acl basate su ip, memorizzate in un file che fa riferimento al proxy e dobbiamo ricaricarlo più volte al 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

Modifica: mi piacerebbe in qualche modo testarlo, ma non abbiamo ancora alcun traffico (ad eccezione di me test).

fonti:

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

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

Ricarica graziosa HAProxy senza perdita di pacchetti

Risposte:


4

Sulla base di quegli articoli dovrebbe funzionare bene.

Ricorda solo che non hai il traffico che puoi sempre emulare.

Usa lo strumento di benchmark apache per inserire un traffico falso.

Assicurati solo che la pagina che stai caricando impieghi alcuni secondi per caricare, per testare lo scenario peggiore.

Ho creato per te un libro di cucina che dimostra che la configurazione che fornisci funziona correttamente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.