Serveur d'équilibrage de charge, comment puis-je l'implémenter?


J'ai googlé pour l'équilibrage de charge mais la seule chose que je peux trouver est la théorie de travail, qui pour le moment, est la partie "facile" pour moi. Mais aucun exemple de la façon d'en implémenter un.

J'ai plusieurs questions concernant l'équilibrage de charge:

  1. J'ai un domaine (example.com) et moi derrière, j'ai un serveur d'équilibrage de charge (appelons-le A ) qui, selon la théorie, demandera au client de fermer la connexion avec A, et de se connecter à B, un sous-serveur et continuer la demande avec B. Le client, dans un navigateur Web, cessera-t-il de voir "example.com/page.html" dans la barre d'adresse et commencer à voir " B_ip_address / page.code html" à la place?

  2. Comment puis-je implémenter un équilibreur de charge simple à partir de zéro? Mon doute cible la partie HTTP. Y a-t-il un message ou un ensemble de messages spécifiques que je dois envoyer au client qui le fera se déconnecter de moi et se connecter à un sous-serveur?

  3. Qu'en est-il des protocoles de niveau inférieur à HTTP, tels que TCP/IP, sont il y a des paquets standard pour dire au client qu'il vient de se connecter à un serveur d'équilibreur de charge et maintenant il doit se connecter à xxx.xxx.xxx.xxx pour poursuivre la demande?

  4. Quelle méthode est la plus utilisée? (1) le client se connecte au serveur d'équilibrage de charge, et il demande au client de se connecter directement à l'un des sous-serveurs, ou (2) le serveur d'équilibrage de charge commence à relier tout le trafic du client au sous-serveur et vice-versa de manière transparente?

Donc les questions 2, 3 et 4 concernent le protocole d'équilibrage de charge, et la 1ère la façon dont un nom de domaine peut être connecté à un équilibreur de charge et quelles sont les conséquences sous-jacentes.

Author: vhu, 2015-07-28

1 answers

Votre approche est une sorte d'équilibrage de charge statique en redirigeant les appels vers un autre serveur. Tous les appels suivants peuvent utiliser cet autre serveur ou sont à nouveau envoyés à l'équilibreur de charge pour une redirection.

Une implémentation dépend de l'implémentation de votre système. Un équilibreur de charge fonctionne mieux pour les demandes indépendantes sans état de session. Vous devez synchroniser l'état de la session sinon entre les serveurs "fin". Ou utilisez un magasin de session partagé pour fournir l'état de la session à tous serveur.

Il existe une solution simple et transparente pour l'équilibrage de charge du serveur HTTP. Vous pouvez utiliser le module d'équilibrage de charge d'un serveur nginx ( http://nginx.org/en/docs/http/load_balancing.html). Ceci peut être utilisé pour les requêtes HTTP et HTTPS. Et il peut être étendu avec des serveurs supplémentaires dynamiquement si la charge augmente. Vous devez modifier la configuration nginx et redémarrer le serveur. Cela peut être transparent pour les connexions existantes. Et nginx ne cause pas de problèmes avec modification des noms de domaine ou d'hôte.

D'autres protocoles nécessitent une prise en charge par le client et le serveur. L'équilibrage de charge peut être transparent si un périphérique spécialisé se trouve entre le client et le serveur. Ou le protocole de communication doit prendre en charge les redirections de connexion.

Modifier: L'équilibrage de charge peut également être mis en œuvre par DNS round robin. Chaque appel de recherche DNS renvoie une autre adresse IP pour le même nom de domaine. Le client choisit une adresse IP et se connecte à ce serveur. Un autre client peut utiliser le à côté de la propriété intellectuelle. Le nom de la barre d'adresse est le même tout le temps.

Exemple:

Non-authoritative answer:
Name:    www.google.com
Addresses:  2a00:1450:4001:80f::1010
      173.194.116.209
      173.194.116.210
      173.194.116.212
      173.194.116.211
      173.194.116.208

Non-authoritative answer:
Name:    www.google.com
Addresses:  2a00:1450:4001:80f::1010
      173.194.116.210
      173.194.116.212
      173.194.116.211
      173.194.116.208
      173.194.116.209

Non-authoritative answer:
Name:    www.google.com
Addresses:  2a00:1450:4001:80f::1010
      173.194.116.212
      173.194.116.211
      173.194.116.208
      173.194.116.209
      173.194.116.210

La plage d'adresses IP tourne. La plupart des équilibreurs de charge HTTP fonctionnent comme un équilibreur de charge transparent comme nginx ou d'autres implémentations de proxy inverse. Un équilibreur de charge de redirection est plus une implémentation à faible technologie, je pense.

TCP/IP n'est pas un protocole. C'est la couche de transport utilisée pour transférer des données implémentant un protocole de communication spécifique. Alors que TCP / IP lui-même est un protocole pour les composants du réseau. Mais pas les applications. Vous pouvez vérifier https://en.wikipedia.org/wiki/OSI_model .

 3
Author: Konrad, 2015-07-28 19:10:53