Partage de technologie

Haproxy crée un cluster Web

2024-07-12

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

1 : Analyse de cas

1 : Aperçu du cas

2 : Connaissance préalable au cas

3 : Environnement du cas

2 : Mise en œuvre du cas

1 : Compilez et installez le serveur nginx (les étapes pour les deux sites nginx sont exactement les mêmes, seule la page de test est différente)

[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 ##Démarrer le processus nginx

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

2 : Compiler et installer 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]# créer TARGET=linux26

[root@localhost haproxy-1.5.19]# make install

Note:

linux22 pour Linux 2.2

linux24 pour Linux 2.4 et supérieur (par défaut)

linux24e pour Linux 2.4 avec prise en charge d'un epoll fonctionnel (> 0.21)

linux26 pour Linux 2.6 et supérieur

solaris pour Solaris 8 ou 10 (autres non testés)

freebsd pour FreeBSD 5 à 8.0 (autres non testés)

openbsd pour OpenBSD 3.1 à 4.6 (autres non testés)

Cygwin pour Cygwin

générique pour tout autre système d'exploitation.

personnalisé pour ajuster manuellement chaque paramètre

3 : Configuration du serveur Haproxy

(1) Créer un fichier de configuration haproxy

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

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

(2) Créer un script de service

[root@localhost haproxy-1.5.19]# cp examples/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) Introduction à la configuration Haproxy

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

mondial

journal 127.0.0.1 local0

journal 127.0.0.1 local1 avis

#log loghost local0 info

maxconn 4096

uid 99

gid99

démon

#déboguer

#calme

défauts

journal global

mode http

option httplog

option dontlognull

tentatives 3

# réexpédition

maxconn 2000

délai d'attente 5000

délai d'attente cli 50000

délai d'attente srv 50000

écouter webcluster 0.0.0.0:80

option httpchk GET /index.html

équilibre roundrobin

serveur inst1 192.168.1.61:80 vérifier inter 2000 automne 3

serveur inst2 192.168.1.62:80 vérifier inter 2000 automne 3

Vous pouvez ajouter du poids après chaque serveur pour définir la valeur du poids.

serveur inst1 192.168.1.61:80 vérifier inter 2000 automne 3poids 1

serveur inst2 192.168.1.62:80 vérifier inter 2000 automne 3poids 2

Explication de chaque affirmation

mondial

journal 127.0.0.1 local0 \configurer la journalisation,local0Est le périphérique de journalisation, la valeur par défaut est le journal système

journal 127.0.0.1 local1 avis \Le niveau de journalisation estavis

#log loghost local0 info

maxconn 4096 \Nombre maximum de connexions

identifiant 99 \utilisateuridentifiant utilisateur

gid99 \utilisateurDieu

démon \Exécuter en tant que processus démon

#débogage \Mode débogage, affiche les informations de démarrage sur la sortie standard

#calme \Mode silencieux, aucune sortie au démarrage

défauts

journal global \utiliserglobejournal défini dans

mode http \Le mode esthttp

option httplog \utiliserhttpLe format de journalisation

option dontlognull \assurerHAProxyN'enregistrez pas les paquets de battements de cœur envoyés par l'équilibreur de charge de niveau supérieur pour détecter les données d'état.

tentatives 3 \Vérifiez le nombre d'échecs de connexion des nœuds, qui dépasse3Le nœud est considéré comme indisponible

  # réexpédition\quand chargerLorsque la valeur est très élevée, les connexions traitées dans la file d'attente actuelle depuis longtemps seront automatiquement interrompues.

maxconn 2000 \Nombre maximum de connexions

délai d'attente 5000 \Délai de connection dépasséMS

délai d'attente cli 50000Délai d'expiration du clientMS

délai d'attente srv 50000Expiration du délai du serveurMS

écouter webcluster 0.0.0.0:80 \Définir les numéros de cluster et de port d'écoute

option httpchk GET /index.html \Vérifiez le serveurindex.htmldocument,Paramètres d'URL de détection de battement de coeur

tournoi à la ronde d'équilibre \L'algorithme de planification d'équilibrage de charge est un tourniquet

serveur inst1 192.168.1.61:80 vérifier inter 2000 automne 3 \Définir des nœuds en ligne

serveur inst2 192.168.1.62:80 vérifier inter 2000 automne 3

vérifier entre 2000est de détecter la fréquence des battements cardiaques (chaque2000 msDétecté une fois),automne 3Oui3Le serveur est réputé indisponible en cas de panne

Dans la nouvelle version, les paramètres de délai d'attente ont été ajustés comme suit :

contimeout est remplacé par timeout connect :Définir le délai d'attente d'Haproxy pour transférer les requêtes des clients vers le serveur backend

clitimeout est remplacé par le client timeout :Le délai d'expiration pour l'inactivité du client est le temps nécessaire à l'application pour se connecter à haproxy.

srvtimeout est remplacé par timeout server :Une fois que le client a établi une connexion avec le serveur, le délai d'attente du serveur correspond au temps nécessaire à haproxy pour se connecter au serveur Web principal.

Note:

haproxyIl existe huit algorithmes de planification

    1. équilibrer le moinsconnNombre minimum de connexions
    2. équilibre roundrobinvote
    3. source d'équilibreSelon le clientPropriété intellectuelleComment faire du hachage
    4. statique-rrSelon le poids
    5. urià la demandeURI
    6. url_paramà la demandeURLparamètre
    7. hdr(nom)selonHTTPdemander à l'en-tête de se verrouiller à chaque foisHTTPdemander
    8. rdp-cookie(nom)seloncookie(nom)verrouiller et hacher à chaque foisTCPdemander

chroot /usr/share/haproxy \Il s'agit de modifier l'emplacement du répertoire racine référencé lors de l'exécution du programme. Si vous avez ce code, vous devez créer ce répertoire.

À propos des niveaux de journalisation

niveau statique DEBUG

DEBUG Level souligne que les événements d’informations à granularité fine sont très utiles pour le débogage des applications.

niveau statique INFO

Le niveau INFO indique que le message met en évidence le processus en cours d’exécution de l’application à un niveau grossier.

Niveau statique WARN

Le niveau WARN indique une situation d’erreur potentielle.

ERREUR de niveau statique

Le niveau ERREUR indique que même si un événement d'erreur se produit, il n'affecte toujours pas le fonctionnement continu du système.

Niveau statique FATAL

Le niveau FATAL indique que chaque événement d'erreur grave entraînera la fermeture de l'application.

De plus, deux niveaux de journalisation spéciaux sont disponibles :

Niveau statique TOUS

Le niveau ALL est le niveau le plus bas et est utilisé pour activer toute la journalisation.

Niveau statique OFF

Le niveau OFF est le niveau le plus élevé et est utilisé pour désactiver toute journalisation.

4 : Démarrer

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

5 : Testez le cluster Web

http://192.168.1.60/test.html

Actualisez la page pour tester

ou tester à l'aide d'un script

[root@localhost ~]# pour i dans $(seq 10); faire curl http://192.168.1.60/test.html ; terminé

6 : Journal Haproxy

Haproxy n'enregistre pas les journaux par défaut. En plus de spécifier la sortie du journal dans la section globale de haproxy.conf, vous devez également configurer le fichier de configuration du journal système.

première méthode :

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

mondial

# journal 127.0.0.1 local0

# journal 127.0.0.1 local1 avis

#log loghost local0 info

maxconn 4096

chroot /usr/share/haproxy

uid 99

gid99

démon

#déboguer

#calme

journal /dev/log local0 info

journal /dev/log local0 avis

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

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

si ($programname == 'haproxy' et $syslogseverity-text == 'info') alors -/var/log/haproxy/haproxy-info.log

& ~

si ($programname == 'haproxy' et $syslogseverity-text == 'notice') alors -/var/log/haproxy/haproxy-notice.log

& ~

[root@localhost haproxy-1.4.24]# redémarrage du service rsyslog

[root@localhost ~]#/etc/init.d/haproxy redémarrer

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

Deuxième méthode :

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

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

mondial

journal 127.0.0.1 local3

#local3 est le périphérique correspondant à la configuration dans /etc/rsyslog.conf, et le niveau de journalisation des informations est recyclé par défaut.

(2) Écrire le fichier journal haproxy

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

$ModLoad imudp

$UDPServerRun 514

local3.* /var/log/haproxy.log

&~

Note:

$ModLoad imudpProtocole UDP pour la collecte des journaux

$UDPServerRun 514Spécifiez le numéro de port utilisé pour la collecte des journaux

local3.* /var/log/haproxy.logSpécifier l'emplacement de stockage des journaux

(3) Configurez le fichier de configuration principal de rsyslog et activez la journalisation à distance (facultatif)

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

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

#-c 2 Utiliser le mode de compatibilité, la valeur par défaut est -c 5

#-r Activer la journalisation à distance

#-m 0 marque l'horodatage.L'unité est les minutes. Lorsqu'elle est à 0, cela signifie que la fonction est désactivée.

(4) Redémarrez les services haproxy et rsyslog

[root@localhost ~]# systemctl redémarrer rsyslog

[root@localhost ~]# systemctl redémarre haproxy

(5) Vérifiez le journal après avoir visité le site Web

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

Extension : proxy mysql

écouter mysql 0.0.0.0:3306

serveur mysql1 192.168.10.205:3306 vérifier le port 3306 maxconn 300