OK, cela a été demandé il y a quelque temps, et je suis en retard à la fête. Pourtant, il y a quelque chose à ajouter ici.
Jackie, tu l'as à peu près compris. Votre illustration montre comment l'équilibrage de charge est géré sur la plupart des installations plus petites et moyennes.
Vous devriez lire l' introduction à l'équilibrage de charge de Willy Tarreau à laquelle Nakedible est lié. C'est toujours valable et c'est une bonne introduction.
Vous devez considérer comment ceux-ci répondent à vos besoins:
- Équilibreurs de charge de niveau TCP / IP (Linux Virtual Server et al). Le plus bas par surcharge de connexion, la vitesse la plus élevée, ne peut pas "voir" HTTP.
- Équilibreurs de charge de niveau HTTP (HAProxy, nginx, Apache 2.2, Pound, Microsoft ARR, etc.). Une surcharge plus élevée, peut voir HTTP, peut gzip HTTP, peut faire SSL, peut faire un équilibrage de charge de session collante.
- Proxys inverses HTTP (Apache Traffic Server, Varnish, Squid). Peut stocker des objets pouvant être mis en cache (certaines pages Web, css, js, images) dans la RAM et les transmettre aux clients suivants sans impliquer le serveur Web principal. Peut souvent faire les mêmes choses que les équilibreurs de charge HTTP L7.
il y a un deuxième équilibreur car je suis sûr qu'à un moment donné, l'équilibreur aurait aussi besoin d'aide.
Et bien certainement. Mais l'équilibrage de charge est simple, et souvent un seul équilibreur de charge peut aller vite . Je renvoie à cet article, qui a frappé un nerf sur le Web, comme juste un exemple de la performance que peut fournir un seul serveur moderne . N'utilisez pas plusieurs LB avant d'en avoir besoin. Lorsque vous avez besoin d'une approche commune, les équilibreurs de charge de niveau IP sont tout de suite (ou DNS Round Robin), les équilibreurs de charge de niveau HTTP, les serveurs proxy et les applications Web.
aide sur ce que devraient être les «équilibreurs» et les meilleures pratiques pour les configurer.
Le problème est la gestion de l'état de session et, dans une certaine mesure, le comportement de l'état d'échec. La configuration des équilibreurs de charge eux-mêmes est relativement simple.
Si vous utilisez simplement 2 à 4 serveurs Webapp backend, le hachage statique basé sur l'adresse IP d'origine peut être viable. Cela évite d'avoir besoin d'un état de session partagé entre les serveurs Webapp. Chaque nœud d'application Web voit 1 / N du trafic global, et le mappage client-serveur est statique en fonctionnement normal. Ce n'est pas un bon ajustement pour une installation plus grande.
Les deux meilleurs algorithmes d'équilibrage de charge, en ce sens qu'ils ont un comportement bénin sous une charge élevée et même une distribution de charge, sont le round robin et le véritable équilibrage de charge aléatoire. Les deux nécessitent que l'état de session globale de votre application Web soit disponible sur les nœuds d'application Web. La façon dont cela se fait dépend de la pile technologique de l'application Web; mais il existe généralement des solutions standard disponibles pour cela.
Si ni le hachage statique, ni l'état de session partagée ne vous conviennent, alors le choix est généralement l' équilibrage de charge « session persistante » et l'état de session par serveur. Dans la plupart des cas, cela fonctionne bien et c'est un choix entièrement viable.
le ou les équilibreurs verraient le nombre de connexions sur chaque instance d'apache (via une liste de configuration d'IP internes ou d'éternelles IP) et répartir les connexions de manière égale
Oui, certains sites l'utilisent. Il existe de nombreux noms pour les nombreux algorithmes d'équilibrage de charge différents qui existent. Si vous pouvez choisir le tournoi à la ronde ou aléatoire (ou le tournoi à la ronde pondéré, pondéré au hasard), je vous recommanderais de le faire, pour les raisons indiquées ci-dessus.
Dernière chose: n'oubliez pas que de nombreux fournisseurs (F5, Cisco et autres sur les technologies haut de gamme, fx Coyote Point et Kemp à des prix plus raisonnables) proposent des appliances d'équilibrage de charge matures .