Résumé de l'algorithme de débogage haproxy

Jiang Shen Shen Shen Shen Shen 2021-08-20 00:41:28 阅读数:311

sum algorithme bogage haproxy

1、 Algorithme statique

Algorithme statique :Scrutin équitable selon des règles prédéfinies,Peu importe la charge actuelle du serveur d'arrière - plan、 Nombre de connexions, vitesse de réponse, etc. , Et les poids ne peuvent pas être modifiés en temps réel ( Seulement pour 0Et1, Autres valeurs non prises en charge ), Redémarrer seulement HAProxyEntrée en vigueur.

1.1 static-rr

static-rr: Calendrier des sondages fondé sur le poids , L'utilisation de l'exécution n'est pas prise en charge socat Ajustement dynamique des poids (Soutien uniquement0Et1, Autres valeurs non prises en charge ) Démarrage lent du serveur arrière ,Il n'y a pas de limite au nombre d'hôtes d'arrière - plan,équivalent àLVSDans wrr

listen web_host
bind 10.0.0.11:80,:8801-8810,10.0.0.11:9001-9010
mode http
log global
balance static-rr
server web1 10.0.0.12:80 weight 1 check inter 3000 fall 2 rise 5
server web2 10.0.0.13:80 weight 2 check inter 3000 fall 2 rise 5

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

1.2 first

first:Selon l'emplacement du serveur dans la liste, Programmation descendante ,Mais ce n'est que lorsque le nombre maximum de connexions au premier serveur atteint,Une nouvelle demande sera attribuée au service suivant,Par conséquent, les paramètres de poids du serveur sont ignorés, Moins utilisé de cette façon .
Non pris en charge socat Modifier dynamiquement les poids ,Peut être réglé0Et1,D'autres valeurs peuvent être définies mais ne sont pas valides.

listen web_host
bind 10.0.0.11:80,:8801-8810,10.0.0.11:9001-9010
mode http
log global
balance first
server web1 10.0.0.12:80 maxconn 2 weight 1 check inter 3000 fall 2 rise 5
server web2 10.0.0.13:80 weight 1 check inter 3000 fall 2 rise 5

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

2、 Algorithme dynamique

Algorithme dynamique :Programmer les ajustements appropriés en fonction de l'état du serveur d'arrière - plan,Priorité au serveur actuellement moins chargé, Et les poids peuvent être haproxyLe réglage dynamique de l'exécution n'a pas besoin d'être redémarré.

2.1 roundrobin

roundrobin:Algorithme d'ordonnancement dynamique du scrutin basé sur le poids,Prise en charge du réglage du temps d'exécution des poids,Différent delvsDansrr Mode de rotation ,HAProxyDansroundrobin Prise en charge du démarrage lent (Les nouveaux serveurs augmentent progressivement le nombre de transferts), Chaque extrémité arrière backend Prise en charge maximale 4095- Oui.real server, Oui. real server Ajustement dynamique du poids ,roundrobin Algorithme de programmation par défaut , Cet algorithme est largement utilisé

listen web_host
bind 10.0.0.11:80,:8801-8810,10.0.0.11:9001-9010
mode http
log global
balance roundrobin
server web1 10.0.0.12:80 weight 1 check inter 3000 fall 2 rise 5
server web2 10.0.0.13:80 weight 2 check inter 3000 fall 2 rise 5

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

2.2 leastconn

leastconnDynamique pondérée des connexions minimales,Prise en charge du réglage du temps d'exécution et du démarrage lent des poids,C'est - à - dire::Priorité de programmation basée sur le serveur d'arrière - plan actuellement le moins connecté, plutôt que sur le poids( Nouvelle connexion client ),Plus approprié pour les scénarios avec de longues connexions,Par exemple,:MySQL Attendre la scène .

listen web_host
bind 10.0.0.11:80,:8801-8810,10.0.0.11:9001-9010
mode http
log global
balance leastconn
server web1 10.0.0.12:80 weight 1 check inter 3000 fall 2 rise 5
server web2 10.0.0.13:80 weight 1 check inter 3000 fall 2 rise 5

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

2.3 random

In1.9 La version commence à augmenter random Algorithme d'équilibrage de la charge pour ,Il est basé sur un nombre aléatoire comme cohérencehashDekey,L'équilibrage aléatoire des charges est très utile pour les grandes fermes de serveurs ou pour ajouter ou supprimer fréquemment des serveurs,Soutienweight Ajustement dynamique ,weightLes Hôtes plus grands ont une plus grande probabilité d'obtenir de nouvelles demandes

listen web_host
bind 10.0.0.11:80,:8801-8810,10.0.0.11:9001-9010
mode http
log global
balance random
server web1 10.0.0.12:80 weight 1 check inter 3000 fall 2 rise 5
server web2 10.0.0.13:80 weight 1 check inter 3000 fall 2 rise 5

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

3、 Autres algorithmes

D'autres algorithmes peuvent être utilisés comme algorithmes statiques,Vous pouvez aussi devenir un algorithme dynamique avec des options

3.1 source

  • Adresse de la sourcehash, Basé sur l'adresse source de l'utilisateur hashEt transmettre la demande au serveur d'arrière - plan,Les demandes subséquentes de la même adresse source seront transmises au même BackendwebServeur.De cette façon, lorsque la quantité de données du serveur d'arrière - plan change,Cela fait que de nombreuses demandes d'utilisateurs sont transmises au nouveau serveur d'arrière - plan, Par défaut en mode statique , Mais ça peut passer hash-type Modifications des options prises en charge
  • Cet algorithme N'insère généralement pasCookieDeTCPUtilisé en mode, Vous pouvez également refuser une session cookieLes clients de,Poursession Session tenue mais non prise en charge cookie Et les scènes mises en cache
  • L'adresse source a deux façons de calculer la sélection du serveur pour transmettre les demandes des clients au serveur d'arrière - plan,C'est la moisissure et la cohérencehash
3.1.1 map-base Méthode de moulage

map-based: Méthode de moulage ,C'est exact.source Adresse hashCalcul,Ensuite, prenez le modèle basé sur le poids total du serveur,Le résultat final décide de transmettre cette demande au serveur d'arrière - plan correspondant. Cette méthode est statique ,C'est - à - dire que l'ajustement du poids en ligne n'est pas pris en charge, Démarrage lent non pris en charge ,Programmation équilibrée des serveurs d'arrière - plan.L'inconvénient est que lorsque le poids total du serveur change,Il y a des serveurs en ligne ou hors ligne,Le résultat global de l'ordonnancement sera modifié en raison d'un changement de poids total,hash-type La valeur par défaut spécifiée pour cet algorithme

Exemple de configuration de la méthode de prise de modèle :
listen web_host
bind 10.0.0.11:80,:8801-8810,10.0.0.11:9001-9010
mode tcp
log global
balance source
hash-type map-based
server web1 10.0.0.12:80 weight 1 check inter 3000 fall 2 rise 3
server web2 10.0.0.13:80 weight 1 check inter 3000 fall 2 rise 3

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
3.1.2 Cohérencehash

Hachage de cohérence,Lorsque le poids total du serveur change,L'impact sur les résultats de l'ordonnancement est local, Ça ne change rien. ,hash(o)mod n ,Lehash L'algorithme est dynamique ,Soutien à l'utilisation socatEt d'autres outils pour ajuster le poids en ligne, Prise en charge du démarrage lent

CohérencehashExemple de configuration
listen web_host
bind 10.0.0.11:80,:8801-8810,10.0.0.11:9001-9010
mode tcp
log global
balance source
hash-type consistent
server web1 10.0.0.12:80 weight 1 check inter 3000 fall 2 rise 5
server web2 10.0.0.13:80 weight 1 check inter 3000 fall 2 rise 5

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

3.2 uri

Basé sur la demande de l'utilisateur URI La moitié gauche ou la totalité uriFais - le.hash,Encore.hashRésultats après moulage du poids total,Transmettre la demande au serveur spécifié à l'arrière - plan en fonction du résultat final,Pour les scénarios de serveur de cache en arrière - plan, Algorithme statique par défaut ,On peut aussihashtypeDésignationmap-basedEtconsistent,Pour définir l'utilisation de la méthode de moulage ou de la cohérencehash.

uri Exemple de configuration de la méthode de prise de modèle
listen web_host
bind 10.0.0.11:80,:8801-8810,10.0.0.11:9001-9010
mode http
log global
balance uri
server web1 10.0.0.12:80 weight 1 check inter 3000 fall 2 rise 5
server web2 10.0.0.13:80 weight 1 check inter 3000 fall 2 rise 5

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
uri CohérencehashExemple de configuration
listen web_host
bind 10.0.0.11:80,:8801-8810,10.0.0.11:9001-9010
mode http
log global
balance uri
hash-type consistent
server web1 10.0.0.12:80 weight 1 check inter 3000 fall 2 rise 5
server web2 10.0.0.13:80 weight 1 check inter 3000 fall 2 rise 5

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

3.3 url_param

url_param Demandé à l'utilisateur urlDans params Un paramètre dans la Section keyCorrespondantvalue Valeur hashCalcul,Et envoyé à un serveur sélectionné après avoir été divisé par le poids total du serveur; Généralement utilisé pour suivre les utilisateurs ,Pour s'assurer que les demandes du même utilisateur sont toujours envoyées au mêmereal server, Si non key, Appuyez sur roundrobinAlgorithmes

url_param Exemple de configuration de la méthode de prise de modèle
listen web_host
bind 10.0.0.11:80,:8801-8810,10.0.0.11:9001-9010
mode http
log global
balance url_param userid #url_param hash
server web1 10.0.0.12:80 weight 1 check inter 3000 fall 2 rise 5
server web2 10.0.0.13:80 weight 1 check inter 3000 fall 2 rise 5

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
url_paramCohérencehashExemple de configuration
listen web_host
bind 10.0.0.11:80,:8801-8810,10.0.0.11:9001-9010
mode http
log global
balance url_param userid keyword #C'est exact.url_param Valeur de
hash hash-type consistent
server web1 10.0.0.12:80 weight 1 check inter 3000 fall 2 rise 5
server web2 10.0.0.13:80 weight 1 check inter 3000 fall 2 rise 5

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

3.4 hdr

Pour chaque utilisateur httpTête(header) Informations spécifiées dans la demande hash, Ici par name Désignationhttp La tête sera enlevée et fabriquée hashCalcul,Ensuite, le modèle est pris par le poids total du serveur et envoyé à un serveur sélectionné, S'il n'y a pas de valeur valide ,Le calendrier de scrutin par défaut est utilisé.

hdr Exemple de configuration de la méthode de prise de modèle
listen web_host
bind 10.0.0.11:80,:8801-8810,10.0.0.11:9001-9010
mode http
log global
balance hdr(User-Agent)
#balance hdr(host)
server web1 10.0.0.12:80 weight 1 check inter 3000 fall 2 rise 5
server web2 10.0.0.13:80 weight 1 check inter 3000 fall 2 rise 5

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
CohérencehashExemple de configuration
listen web_host
bind 10.0.0.11:80,:8801-8810,10.0.0.11:9001-9010
mode http
log global
balance hdr(User-Agent)
hash-type consistent
server web1 10.0.0.12:80 weight 1 check inter 3000 fall 2 rise 5
server web2 10.0.0.13:80 weight 1 check inter 3000 fall 2 rise 5

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

3.5 rdp-cookie

rdp-cookie C'est loin. windows Charge sur le bureau distant ,Utilisercookie Tenir une session , La valeur par défaut est statique ,On peut aussihash-typeDésignationmap-basedEtconsistent,Pour définir l'utilisation de la méthode de moulage ou de la cohérencehash.

rdp-cookie Exemple de configuration de la méthode de prise de modèle
listen RDP
bind 10.0.0.12:3389
balance rdp-cookie
mode tcp
server rdp0 10.0.0.13:3389 check fall 3 rise 5 inter 2000 weight 1

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
rdp-cookie CohérencehashExemple de configuration
listen magedu_RDP_3389
bind 172.17.0.100:3389
balance rdp-cookie
hash-type consistent
mode tcp
server rdp0 10.0.0.100:3389 check fall 3 rise 5 inter 2000 weight 1

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

4、Résumé de l'algorithme

#Statique
static-rr--------->tcp/http
first------------->tcp/http
#Dynamique
roundrobin-------->tcp/http
leastconn--------->tcp/http
random------------>tcp/http
#Les caractéristiques statiques et dynamiques suivantes dépendent dehash_typeEst - ce queconsistent
source------------>tcp/http
Uri--------------->http
url_param--------->http
hdr--------------->http
rdp-cookie-------->tcp

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

5、 Scénarios d'utilisation de chaque algorithme

first # Moins utilisé
static-rr #C'est fait.session Partagé webCluster
roundrobin
random
leastconn #Base de données
source # Basé sur le réseau public client IP Maintien de la session
Uri--------------->http # Serveur de cache ,CDNPrestataires de services, Lanxun 、Baidu、Alicloud、Tencent
url_param--------->http #Peut être réalisésessionTiens bon.
hdr #Effectuer le traitement suivant en fonction de l'en - tête du message de demande du client
rdp-cookie #Basé surWindowsHôte, Rarement utilisé

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
Copyright:Cet article est[Jiang Shen Shen Shen Shen Shen]Établi,Veuillez apporter le lien original pour réimprimer,remercier。 https://fra.fheadline.com/2021/08/20210820004032796e.html