Come implementare controlli di integrità efficaci in HAProxy

Come Implementare Controlli Di Integrita Efficaci In Haproxy



La configurazione di HAProxy affinché agisca come bilanciatore del carico è incompleta se non si considerano controlli efficaci dello stato del server. L'implementazione dei controlli di integrità aiuta a migliorare l'affidabilità e la disponibilità dell'applicazione. HAProxy supporta l'implementazione dei controlli di integrità che controllano i server backend per accertare che le loro condizioni di integrità siano adatte all'uso.

Solo i server che superano i controlli di integrità vengono aggiunti alla rotazione. In questo modo, un server non verrà selezionato per l’uso se non supera il controllo di integrità, riducendo al minimo le possibilità di tempi di inattività. In questo post approfondiremo la comprensione del funzionamento dei controlli di integrità in HAProxy e di cosa è necessario per implementare un controllo di integrità efficace. Cominciamo!

Cosa sono i controlli di integrità in HAProxy

Quando si configura HAProxy, un'attività è specificare quali server backend utilizzare per l'applicazione. In questo modo, il traffico verrà distribuito sui server per evitare di sovraccaricare qualsiasi server. Tuttavia, i controlli di integrità aiutano ad accertare che un server venga selezionato per gestire il traffico solo se va bene.







I controlli di integrità vengono eseguiti su ciascun server e solo quelli che superano il test vengono aggiunti alla rotazione per essere utilizzati nel bilanciamento del carico. I controlli di integrità vengono eseguiti inviando richieste, come TCP o HTTP, a un endpoint predefinito sul server back-end. I risultati sull'integrità inviati dal server back-end ne determinano lo stato. Ad esempio, lo stato del server potrebbe mostrare SU o GIÙ o inviare uno stato OK 200 che conferma che il server è integro.



Nella configurazione dei controlli di integrità, assicurati di disporre di un endpoint predefinito da utilizzare per i controlli di integrità. Esistono diverse opzioni che puoi utilizzare per configurare il tuo endpoint. Ad esempio, puoi restituire un codice di stato o un messaggio a seconda dello stato del server. Tutti i controlli di integrità sono definiti nella sezione backend del file di configurazione HAProxy. Apri il file di configurazione e crea la tua sezione frontend.



$ sudo nano /etc/haproxy/haproxy.cfg

Ecco un esempio di base di una sezione di frontend che associa la porta 80, imposta una pagina di statistiche e specifica il backend predefinito.





Il passaggio successivo è creare la sezione backend. Di seguito sono riportati diversi esempi su come implementare un controllo dello stato efficace in HAProxy.



Esempio 1: implementazione di controlli sanitari attivi efficaci

Un modo semplice per implementare i controlli di integrità in HAProxy consiste nell'impostare i controlli di integrità attivi. Con questa opzione, HAProxy proverà a connettersi al server. Se non viene inviata alcuna risposta, considera il server non integro e lo rimuove dalla rotazione. Il modo predefinito di implementare i controlli di integrità attivi consiste nell'aggiungere la parola chiave 'check' su ogni riga del server affinché HAProxy li controlli tutti.

Sebbene questo primo esempio funzioni, non è il modo migliore per implementare i controlli di integrità. Inoltre, utilizza le impostazioni predefinite. Ad esempio, l'intervallo tra i controlli, contrassegnato come inter, è impostato su due secondi. La caduta, il numero consentito di controlli falliti, è fissato a tre. Per regolare queste impostazioni, specificare l'intervallo preferito e il numero di controlli come mostrato nell'esempio seguente:

Esempio 2: implementazione di un controllo dello stato HTTP

Con un controllo dello stato HTTP, HAProxy invierà una richiesta HTTP a tutti i server con la parola chiave 'check'. In base alla risposta, si conclude lo stato del server. Gli esempi di risposte del server riuscite rientrano nell'intervallo 2xx o 3xx. Una risposta come 200 OK significa che il server è in buono stato.

Per questo esempio, aggiungi la riga 'opzione httpchk' nel tuo backend.

Esempio 3: lavorare con una richiesta GET

HAProxy invia una richiesta GET al percorso '/' quando si effettua una richiesta HTTP. Tuttavia, se l'endpoint è configurato in un altro percorso, è possibile specificare il percorso URL come '/health' e HAProxy gli invierà la richiesta GET.

In base al tuo endpoint, il server utilizzerà la risposta per determinare lo stato del server. Ecco come implementarlo:

Esempio 4: specificare un percorso di richiesta GET e uno stato di risposta

Con un endpoint, puoi specificare quale risposta positiva aspettarti dalla richiesta GET dell'endpoint per determinare lo stato del server. Per questo esempio, il percorso della nostra richiesta GET è '/health' e ci aspettiamo uno stato di risposta 200 per confermare che il server è in buona salute per gestire il bilanciamento del carico e altre attività.

Una volta modificato il file di configurazione di HAProxy, riavviare HAProxy affinché le modifiche abbiano effetto.

Questo è tutto! Hai implementato controlli di integrità efficaci sul tuo HAProxy. Puoi accedere alla pagina delle statistiche o controllare il file di registro con il seguente comando per confermare che i controlli di integrità funzionano come previsto:

$ tail -f /var/log/haproxy.log

Conclusione

È possibile implementare un controllo dello stato efficace in HAProxy in diversi modi. I controlli di integrità sono implementati nella sezione backend del file di configurazione HAProxy e questo post ha fornito diversi esempi su come procedere. Verifica il tuo metodo ideale e implementa comodamente un controllo dello stato efficace in HAProxy.