3 votes

HAProxy algorithmes d'équilibrage pour Apache et MySQL

Je viens tout juste de devenir responsable d'un projet existant qui utilise des serveurs web Apache et des bases de données MySQL.

Les serveurs web sont derrière un équilibreur de charge HAProxy et l'application se connecte aux esclaves MySQL via un autre HAProxy.

2 des 10 serveurs web ont été récemment ajoutés et sont plus puissants que les anciens. De même pour les esclaves MySQL : 2 de ces 5 esclaves disposent de plus de RAM et de CPU.

L'algorithme d'équilibrage pour les serveurs Apache est leastconn et pour les esclaves est source. Au moins les paramètres des serveurs MySQL me semblent étranges car dans le pire des cas, le "meilleur" apache (avec le plus de poids) peut toujours choisir le pire serveur MySQL si je comprends bien la documentation HAProxy Docs. Je choisirais roundrobin avec des poids ajustés :

  • 10 pour les trois serveurs MySQL normaux
  • 20 pour les deux serveurs MySQL plus puissants

Et comme les apaches sont derrière le HAProxy avec un timeout de 20s, j'appliquerais plutôt roundrobin aussi.

  • 10 pour les huit serveurs apache normaux
  • 20 pour le serveur apache plus puissant

(Je n'utiliserais le 20 que pour commencer. Je vais surveiller la surveillance et ajusterai plus tard.)

Comme les serveurs sont en colocation (c'est-à-dire que je n'ai pas accès root, les demandes de changement prennent un certain temps), j'aimerais juste avoir un deuxième (ou plusieurs) avis sur ce sujet : est-ce une bonne idée de changer l'algorithme d'équilibrage pour les deux en roundrobin ? Je ne le considérerais pas s'il n'y avait eu récemment des problèmes de performance et c'est juste un endroit que je trouve intéressant à ajuster.

Merci pour vos conseils !

Cordialement dennis

3voto

Felix Frank Points 3033

source est en effet un choix étrange, sauf si vos serveurs d'applications sont censés avoir une persistance de session avec des esclaves de base de données. C'est à vous de le découvrir, cependant.

leastconn est généralement un très bon choix si les performances de chaque serveur (à la fois appserver et base de données) ne sont pas totalement stables. Cela dépend des détails de votre application et de votre plateforme. (Par exemple, un appserver basé sur Java peut connaître des périodes de ralentissement en raison de la collecte des déchets, pendant lesquelles il est judicieux de réduire sa charge d'équilibrage.)

Enfin, oui, avec roundrobin, vous atteindrez généralement une répartition très prévisible et stable qui respecte strictement les pondérations.

1 votes

Merci pour votre feedback. Surtout pour l'astuce concernant la persistance de la session.

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