Condivisione della tecnologia

Haproxy crea cluster web

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1: Analisi del caso

1: Panoramica del caso

2: Conoscenza pre-caso

3: Ambiente del caso

2: Implementazione del caso

1: Compila e installa il server nginx (i passaggi per i due siti Web nginx sono esattamente gli stessi, solo la pagina di test è diversa)

[root@localhost ~]# yum -y install pcre-devel zlib-devel gcc*

[root@localhost ~]# useradd -M -s /sbin/nologin nginx

[root@localhost ~]# tar zxvf nginx-1.12.0.tar.gz

[root@localhost ~]# cd nginx-1.12.0/

[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module

[root@localhost nginx-1.12.0]# make && make install

[root@localhost nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

[root@localhost nginx-1.12.0]# cd /usr/local/nginx/html/0

[root@localhost html]# echo "test web01" > test.html

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# nginx -t

[root@localhost ~]# nginx ##Avvia il processo nginx

[root@localhost ~]# netstat -anpt | grep nginx

2: Compila e installa Haproxy

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# setenforce 0

[root@localhost ~]# yum -y install pcre-devel bzip2-devel gcc*

[root@localhost ~]# tar zxvf haproxy-1.5.19.tar.gz

[root@localhost ~]# cd haproxy-1.5.19/

[root@localhost haproxy-1.5.19]# crea TARGET=linux26

[root@localhost haproxy-1.5.19]# esegui l'installazione

Nota:

linux22 per Linux 2.2

linux24 per Linux 2.4 e versioni successive (predefinito)

linux24e per Linux 2.4 con supporto per un epoll funzionante (> 0.21)

linux26 per Linux 2.6 e versioni successive

solaris per Solaris 8 o 10 (altri non testati)

freebsd per FreeBSD 5 a 8.0 (altri non testati)

openbsd per OpenBSD 3.1 a 4.6 (altri non testati)

cygwin per Cygwin

generico per qualsiasi altro sistema operativo.

personalizzato per regolare manualmente ogni impostazione

3: Configurazione del server Haproxy

(1) Creare un file di configurazione haproxy

[root@localhost haproxy-1.5.19]# mkdir /etc/haproxy

[root@localhost haproxy-1.5.19]# cp esempi/haproxy.cfg /etc/haproxy/

(2) Creare uno script di servizio

[root@localhost haproxy-1.5.19]# cp esempi/haproxy.init /etc/init.d/haproxy

[root@localhost haproxy-1.5.19]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

[root@localhost haproxy-1.5.19]# chmod +x /etc/init.d/haproxy

[root@localhost ~]# chkconfig --add haproxy

(3) Introduzione alla configurazione Haproxy

[root@localhost haproxy-1.5.19]# vi /etc/haproxy/haproxy.cfg

globaleeee

registro 127.0.0.1 locale0

registro 127.0.0.1 avviso locale1

#log loghost informazioni locali0

maxconn 4096

UID 99

gid 99

demone

#debug

#Tranquillo

valori predefiniti

registro globale

modalità http

opzione httplog

opzione dontlognull

riprova 3

# ridispaccio

maxconn 2000

tempo di permanenza 5000

tempo di attesa 50000

timeout servizio 50000

ascolta webcluster 0.0.0.0:80

opzione httpchk GET /index.html

equilibrio roundrobin

server inst1 192.168.1.61:80 controlla inter 2000 fall 3

server inst2 192.168.1.62:80 controlla inter 2000 fall 3

È possibile aggiungere peso dopo ciascun server per impostare il valore del peso.

server inst1 192.168.1.61:80 controlla inter 2000 fall 3peso 1

server inst2 192.168.1.62:80 controlla inter 2000 fall 3peso 2

Spiegazione di ogni affermazione

globaleeee

registro 127.0.0.1 locale0 \configurare la registrazione,locale0È il dispositivo di registro, l'impostazione predefinita è il registro di sistema

registro 127.0.0.1 local1 avviso \Il livello di registro èavviso

#log loghost informazioni locali0

maxconn 4096 \Numero massimo di connessioni

uid 99 \utentefluido

gid 99 \utentegiretto

demone \Esegui come processo demone

#debug \Modalità debug, visualizza le informazioni di avvio sull'output standard

#Tranquillo \Modalità silenziosa, nessuna uscita all'avvio

valori predefiniti

registro globale \utilizzoglobaleregistro definito in

modalità http \La modalità èhttp

opzione httplog \utilizzohttpIl formato della registrazione

opzione dontlognull \garantireProxyHaNon registrare i pacchetti heartbeat inviati dal sistema di bilanciamento del carico di livello superiore per rilevare i dati sullo stato.

tentativi 3 \Controllare il numero di errori di connessione del nodo che supera3Il nodo è considerato non disponibile

  # ridispaccio\quando caricoQuando il valore è molto alto, le connessioni elaborate nella coda corrente per un lungo periodo verranno interrotte automaticamente.

maxconn 2000 \Numero massimo di connessioni

tempo di permanenza 5000 \Connesione finitaSM

tempo di attesa 50000Timeout del clienteSM

timeout servizio 50000Timeout del serverSM

ascolta webcluster 0.0.0.0:80 \Definire i numeri del cluster e delle porte di ascolto

opzione httpchk GET /index.html \Controlla quelli del serverindice.htmldocumento,Impostazioni URL di rilevamento del battito cardiaco

equilibrio roundrobin \L'algoritmo di pianificazione del bilanciamento del carico è round robin

server inst1 192.168.1.61:80 controlla inter 2000 fall 3 \Definire i nodi online

server inst2 192.168.1.62:80 controlla inter 2000 fall 3

controlla inter 2000è quello di rilevare la frequenza del battito cardiaco (ogni2000 millisecondiRilevato una volta),caduta 33Il server è considerato non disponibile in caso di guasto

Nella nuova versione, le impostazioni di timeout sono state modificate come segue:

contimeout è sostituito da timeout connect:Definire il periodo di timeout che haproxy attende per inoltrare le richieste del client al server backend

clitimeout è sostituito dal client timeout:Il periodo di timeout per l'inattività del client è il tempo necessario all'app per connettersi a haproxy

srvtimeout è sostituito dal server timeout:Dopo che il client ha stabilito una connessione con il server, il periodo di timeout di attesa del server è il tempo impiegato da Haproxy per connettersi al server Web backend.

Nota:

haproxyEsistono otto algoritmi di pianificazione

    1. bilanciare leastconnNumero minimo di connessioni
    2. equilibrio roundrobinsondaggio
    3. fonte di equilibrioSecondo il clienteProprietà intellettualeCome eseguire l'hashing
    4. statico-rrSecondo il peso
    5. l'uomosu richiestaNome dell'utente
    6. parametro_urlsu richiestaIndirizzo e-mailparametro
    7. hdr(nome)secondoHTTPrichiedere l'intestazione da bloccare ogni voltaHTTPchiedere
    8. rdp-cookie(nome)secondobiscotto(nome)per bloccare e hash ogni voltaTCPchiedere

chroot /usr/condividi/haproxy \Cioè per cambiare la posizione della directory root a cui si fa riferimento quando il programma viene eseguito. Se hai questo codice, devi creare questa directory.

Informazioni sui livelli di registro

Livello statico DEBUG

DEBUG Level sottolinea che gli eventi informativi a grana fine sono molto utili per il debug delle applicazioni.

INFO livello statico

Il livello INFO indica che il messaggio evidenzia il processo in esecuzione dell'applicazione a un livello di grana grossa.

Livello statico AVVISO

Il livello WARN indica una potenziale situazione di errore.

ERRORE di livello statico

Il livello ERRORE indica che, sebbene si verifichi un evento di errore, esso non influisce comunque sul funzionamento continuo del sistema.

Livello statico FATALE

Il livello FATAL indica che ogni evento di errore grave provocherà la chiusura dell'applicazione.

Inoltre, sono disponibili due livelli di registrazione speciali:

Livello statico TUTTI

ALL Level è il livello più basso e viene utilizzato per attivare tutte le registrazioni.

Livello statico OFF

OFF Level è il livello più alto e viene utilizzato per disattivare tutta la registrazione.

4: Inizio

[root@localhost haproxy-1.5.19]# /etc/init.d/haproxy avvio

5: testare il cluster web

http://192.168.1.60/test.html

Aggiorna la pagina per testare

o prova usando lo script

[root@localhost ~]# per i in $(seq 10); esegui curl http://192.168.1.60/test.html ;fatto

6: registro Haproxy

Haproxy non registra i log per impostazione predefinita Oltre a specificare l'output del log nella sezione globale in haproxy.conf, è necessario configurare anche il file di configurazione del log di sistema.

metodo uno:

[root@localhost haproxy-1.4.24]# vi /etc/haproxy/haproxy.cfg

globaleeee

# registra 127.0.0.1 local0

# log 127.0.0.1 local1 avviso

#log loghost informazioni locali0

maxconn 4096

chroot /usr/share/haproxy

UID 99

gid 99

demone

#debug

#Tranquillo

log /dev/log informazioni locali0

log /dev/log local0 avviso

[root@localhost haproxy-1.4.24]# tocca /etc/rsyslog.d/haproxy.conf

[root@localhost haproxy-1.4.24]# vi /etc/rsyslog.d/haproxy.conf

se ($programname == 'haproxy' e $syslogseverity-text == 'info') allora -/var/log/haproxy/haproxy-info.log

& ~

se ($programname == 'haproxy' e $syslogseverity-text == 'notice') allora -/var/log/haproxy/haproxy-notice.log

& ~

[root@localhost haproxy-1.4.24]# riavvio del servizio rsyslog

[root@localhost ~]#/etc/init.d/haproxy riavvia

[root@localhost ~]# cat /var/log/haproxy/haproxy-info.log

Metodo due:

(1) Modificare /etc/haproxy/haproxy.conf

[root@localhost ~]# vi /etc/haproxy/haproxy.cfg

globaleeee

registro 127.0.0.1 locale3

#local3 è il dispositivo, corrispondente alla configurazione in /etc/rsyslog.conf, e il livello di informazioni del registro viene riciclato per impostazione predefinita.

(2) Scrivere il file di registro haproxy

[root@localhost ~]# vim /etc/rsyslog.d/haproxy.conf

$ModLoad imudp

$UDPServerRun 514

local3.* /var/log/haproxy.log

&~

Nota:

$ModLoad imudpProtocollo UDP per la raccolta dei log

$UDPServerRun 514Specificare il numero di porta utilizzato per la raccolta dei registri

local3.* /var/log/haproxy.logSpecificare il percorso di archiviazione del registro

(3) Configurare il file di configurazione principale di rsyslog e abilitare la registrazione remota (opzionale)

[root@localhost ~]# vim /etc/sysconfig/rsyslog

OPZIONI_SYSLOGD=”-c 2 -r -m 0″

#-c 2 Usa la modalità compatibilità, il valore predefinito è -c 5

#-r Abilita la registrazione remota

#-m Timestamp con contrassegno 0.L'unità è minuti. Quando è 0, significa che la funzione è disabilitata.

(4) Riavviare i servizi haproxy e rsyslog

[root@localhost ~]# systemctl riavvia rsyslog

[root@localhost ~]# systemctl riavvia haproxy

(5) Controllare il registro dopo aver visitato il sito web

[root@localhost ~]# cat /var/log/haproxy.log

Estensione: proxy mysql

ascolta mysql 0.0.0.0:3306

server mysql1 192.168.10.205:3306 controlla porta 3306 maxconn 300