Je suis nouveau dans l'équilibrage de charge et je me demande s'il est possible d'utiliser plusieurs équilibreurs de charge pour rediriger le trafic vers mes serveurs d'applications. Je ne comprends pas vraiment comment cela peut être fait. Un nom de domaine ne doit-il pas correspondre un à un avec l'adresse IP d'un certain serveur (dans ce cas, l'IP d'un équilibreur de charge)? Si chaque serveur d'équilibrage de charge a une IP différente, comment la demande peut-elle être reçue par les deux équilibreurs de charge (ou par 10 équilibreurs de charge ou 50 ou 100)?
domain-name-system
nginx
load-balancing
haproxy
high-load
user3790827
la source
la source
Réponses:
L'utilisation du DNS à tour de rôle n'est pas idéale pour la haute disponibilité - si un serveur se déconnecte, les clients essaieront toujours de s'y connecter et attendront un délai d'attente.
Il existe d'autres moyens d'y parvenir.
1) Équilibreurs de charge actifs / passifs
Fondamentalement, un équilibreur de charge gère tout le trafic pour une seule adresse IP.
Si cet équilibreur tombe en panne, le nœud passif intervient et prend en charge l'IP.
Gardez à l'esprit que les équilibreurs de charge ne sont à peu près que le transfert de trafic, donc pour les sites de petite à moyenne taille, cela peut fonctionner correctement.
2) Équilibreurs de charge actifs / actifs
La même IP de trafic est configurée sur les deux (ou plusieurs autres) équilibreurs de charge.
Le trafic entrant est envoyé à tous les équilibreurs de charge, mais un algorithme choisit quel équilibreur doit répondre, tous les autres rejetent ce trafic.
Pour y penser simplement, vous avez deux équilibreurs de charge:
lorsque l'IP demandante se termine par un nombre pair, alors l'équilibreur de charge A répond, sinon l'équilibreur de charge B répond.
Bien sûr, votre infrastructure doit prendre en charge cela et il y a des frais généraux dus au trafic envoyé mais rejeté.
Plus d'informations, par exemple ici: http://community.brocade.com/t5/SteelApp-Docs/Feature-Brief-Deep-dive-on-Multi-Hosted-IP-addresses-in-Stingray/ta-p/73867
la source
La haute disponibilité avec équilibreurs de charge est généralement mise en œuvre à l'aide d'un protocole d' adresse IP virtuelle (VIP) qui permet à plusieurs hôtes (c'est-à-dire des équilibreurs de charge) de répondre à une adresse IP commune de l'une des manières possibles (variations sur actif / passif, actif / actif) .
Il existe un bon nombre de ces protocoles, ceux que j'ai vus le plus avec les équilibreurs de charge réguliers sont VRRP et NLB (ainsi qu'un bon nombre de protocoles en boîte noire non descriptifs dans les appliances). En étendant les routeurs et les pare-feu, on peut également rencontrer CARP , HRSP , GLSP par exemple.
Cette stratégie présente un certain nombre d'avantages par rapport à l'équilibrage de charge DNS, qui est une stratégie plus simple (et qui est prise en charge dans une autre réponse).
L'équilibrage de charge DNS est par exemple surchargé avec:
En utilisant un protocole IP virtuel pour HA, on peut avoir le choix de réaliser par exemple:
Vous seul savez quelle stratégie et quel protocole correspondent le mieux à votre scénario.
la source
Les exigences: avoir une solution pratique qui fonctionne pour le cloud ou tout type d'environnement où aucun accès aux équilibreurs de charge matérielle, aux protocoles BGP et tout le reste.
Le numéro de demande de revenu d'une application est inconnu mais devrait être suffisamment élevé pour répondre à une attente de charge accrue sans crainte.
Trouvons une application avec une nature de charge similaire, par exemple un magasin de journalisation et une application de recherche. J'en ai trouvé un .
Ce qu'ils veulent:
Qu'ont-ils essayé et appris sur ELB:
Pourquoi ont-ils choisi avec Route53:
Cet exemple particulier montre que dans certains scénarios (collecteur de journaux, service d'annonces ou similaire), l'équilibreur de charge est redondant et que la «solution de round robin de contrôle de santé DNS» fait très bien son travail.
Voyons ce que AWS dit du basculement DNS:
Cette technique rend également ELB (non requis, juste pour une note) plus robuste, encore une fois, il est basé sur RR + Health Check:
Voyons maintenant comment cela fonctionne en arrière-plan. La question évidente est de savoir comment gérer la mise en cache DNS:
et définir une ressource générique
L'Algolie a introduit une "stratégie de relance client" qui fonctionne plutôt bien si votre client (JS dans votre cas) peut gérer cela:
la source