C'è un modo per aggiungere più server back-end a haproxy senza riavviare haproxy?


17

Vogliamo essere in grado di aggiungere altri server back-end su richiesta. In questo momento non vedo un modo per aggiungere altri server back-end al file di configurazione senza riavviare haproxy.

Risposte:


15

Non ho testato questo caso d'uso specifico ma haproxy supporta un "hot ricaricamento":

2.4.1) Hot reconfiguration
--------------------------
The '-st' and '-sf' command line options are used to inform previously running
processes that a configuration is being reloaded. They will receive the SIGTTOU
signal to ask them to temporarily stop listening to the ports so that the new
process can grab them. If anything wrong happens, the new process will send
them a SIGTTIN to tell them to re-listen to the ports and continue their normal
work. Otherwise, it will either ask them to finish (-sf) their work then softly
exit, or immediately terminate (-st), breaking existing sessions. A typical use
of this allows a configuration reload without service interruption :

 # haproxy -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid)

Se hai uno script init per avviare e arrestare haproxy, probabilmente supporta l' reloadargomento con una funzione come:

haproxy_reload()
{
    $HAPROXY -f "$CONFIG" -p $PIDFILE -D $EXTRAOPTS -sf $(cat $PIDFILE) \
        || return 2
    return 0
}

1
Ci ho provato ma ho scoperto che cancella i miei contatori. Forse sto facendo qualcosa nel modo sbagliato, o è un comportamento previsto?
Leandro López,

6

Dal manuale:

> 1.6) Aiutare la gestione dei processi

Haproxy ora supporta la nozione di pidfile. Se l'argomento della riga di comando '-p' o l'opzione globale 'pidfile' è seguita da un nome file, questo file verrà rimosso, quindi riempito con pid di tutti i bambini, uno per riga (solo in modalità demone). Questo file NON si trova nel chroot, il che consente di lavorare con un chroot di sola lettura. Sarà di proprietà dell'utente che avvia il processo e disporrà delle autorizzazioni 0644.

Esempio :

global
    daemon
    quiet
    nbproc  2
    pidfile /var/run/haproxy-private.pid

# to stop only those processes among others :
# kill $(</var/run/haproxy-private.pid)

# to reload a new configuration with minimal service impact and without
# breaking existing sessions :
# haproxy -f haproxy.cfg -p /var/run/haproxy-private.pid -sf $(</var/run/haproxy-private.pid)

1

Inoltre, a seconda della versione del proxy HA, potresti prendere in considerazione l'API dinamica HA-Proxy come descritto da haproxy.com in questa pagina: https://www.haproxy.com/blog/dynamic-scaling-for-microservices-with -runtime-api /

L'API dinamica HA-Proxy viene fornita con la versione Enterprise.

È necessario considerare l'API dinamica HA-Proxy se si desidera aggiungere / rimuovere i server al volo come una pratica normale o se il progetto implica un caso d'uso di questo tipo.

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.