3 votes

L'équilibrage des charges ne fonctionne pas comme prévu dans Apache en mode round-robin

Nous sommes confrontés à un comportement inattendu de l'équilibrage de charge round-robin sur Apache lorsque l'un des serveurs Tomcat tombe en panne.

Notre configuration : nous avons 2 serveurs web Apache sur le front-end utilisant le module mod_jk pour l'équilibrage de charge avec une distribution de charge round-robin. Nous avons activé la permanence de la session. La charge est répartie entre 4 serveurs Tomcat sur lesquels les applications sont exécutées.

Parfois, en cas de forte charge, s'il y a une lenteur dans notre niveau de base de données, l'un des serveurs Tomcat se met en état d'arrêt et doit être redémarré. Au moment où nous faisons rebondir le serveur Tomcat, nous constatons un pic de demandes dans l'un des autres serveurs Tomcat, qui se met également en état de blocage et doit être redémarré.

Finalement, tous les serveurs Tomcat se bloquent de la même manière.

Pourquoi Apache transfère-t-il toute la charge sur un seul serveur au lieu de la répartir ?

Nous essayons maintenant le worker.balancer.method=B pour voir si cela aide à résoudre notre problème.

Dans les images ci-dessous, nous voyons que les fils de service augmentent,

  • sur le serveur 1 lorsque le serveur 4 tombe en panne vers 11 h 50.
  • dans le serveur 2 lorsque le serveur 1 tombe en panne à environ 11h55.

enter image description hereenter image description hereenter image description here

0 votes

Installer un équilibreur de charge comme varnish ou f5 big-ip ?

0 votes

J'ai oublié de mentionner que nous avons un F5 avant les apaches, mais voulez-vous dire, utiliser le F5 au lieu des apaches ? C'est une chose, mais je voulais aussi savoir si c'était le comportement attendu dans l'équilibrage de charge round-robin.

0 votes

Comme vous n'avez que 4 tomcats, je mettrais en route 2 apaches supplémentaires et je configurerais chaque apache pour qu'il n'accède qu'à un seul tomcat : Ainsi, tout le loadblancing serait fait par f5 big ip.

1voto

(Je poste une réponse au lieu d'un commentaire car il pourrait être trop long) :

Je ne dis pas que "F5 peut traiter le problème en une seule fois". meilleur façon" mais :

  • Je préférerais que la répartition de la charge soit effectuée par des équilibreurs de charge : F5 big ip, entre autres produits, a été conçu pour faire ce travail.
  • Comme vous avez une petite installation (4 tomcat), je ne vois aucune raison pour l'instant d'avoir 2 niveaux d'équilibrage de charge. Avoir seulement F5 vérifiant qu'une page jsp personnalisée renvoie 200 est à mon avis beaucoup plus simple.
  • Les pires inconvénients dont je me souviens sont : Lorsqu'un nœud est en panne, une partie du trafic est toujours dirigée vers lui jusqu'au prochain contrôle de santé (~ 5 sec par défaut iirc). Les sessions sont perdues si un noeud est en panne (peut-être que Tomcat offre la possibilité d'avoir une solution de contournement, par exemple une session dans une base de données...).

Je ne pense pas qu'il soit facile de trouver un benchmarking/testing public "neutre" sur le meilleur équipement/logiciel pour faire de l'équilibrage de charge. Je ne peux que vous conseiller de faire votre propre test si vous avez des f5 de rechange pour le stagging.

En règle générale, je ferais en sorte que f5 fasse le maximum : répartition de charge, certificats ssl, réécriture d'url, asm, .... Non pas parce que f5 est meilleur mais parce que c'est pratique d'avoir tout au même endroit. Malheureusement, lorsque le trafic http commence à dépasser quelques centaines de Mo, il faut commencer à faire faire certaines tâches par apache au lieu de f5.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X