2010-07-15 3 views
4

Je me demande s'il existe un moyen d'équilibrer la charge élastique. J'ai lu à propos de HAProxy mais il semble que j'ai besoin de réduire HAProxy pour le reconfigurer pour fonctionner avec plus ou moins de machines.Elastic Load Balancing

Pour rendre l'image plus claire: J'ai un cluster de backends web (disons apache + mod_rails). Je peux surveiller l'utilisation des backends et faire apparaître une autre machine avec le même contenu très rapidement (de l'ordre des secondes) si le trafic devient très élevé. Cependant, je ne sais pas comment faire HAProxy utiliser les backends supplémentaires sans le redémarrer (nuire à la disponibilité). Est-il possible d'utiliser HAProxy ou un autre équilibreur de charge pour cela?

Je pensais qu'il pourrait y avoir un moyen d'avoir deux équilibreurs de charge pour la redondance. Ensuite, je pourrais en abattre un, mettre à jour sa configuration, la ramener à la normale, puis démonter l'autre. Mais je n'ai pas une bonne idée sur la façon de faire cela.

Répondre

2

Si vous devez ajouter de nouveaux serveurs, vous devez le redémarrer, mais il est presque indétectable lorsque vous démarrez le nouveau processus avec "-sf $ oldpid", car les nouveaux et anciens processus fonctionnent en parallèle.

Si vous devez désactiver temporairement un serveur, vous avez plusieurs options:

1) (le préféré un): activer option "http-disable-sur-404" et manipuler la réponse de contrôle de votre serveur pour revenir 404 Cela désactivera les nouvelles connexions mais permettra aux utilisateurs existants de terminer leur session. Ensuite, vous vous organisez pour retourner 500 et vous pouvez arrêter votre processus. L'avantage de cette méthode est que vous n'avez jamais à toucher le LB, tout est contrôlé depuis le serveur sur lequel vous travaillez. C'est ainsi que la plupart des infrastructures sensibles le font.

2) la facilité d'un: en utilisant socat, connectez à la prise de statistiques et désactiver le serveur vous avez l'intention de travailler sur:

printf "disable server 1\n" | socat stdio unix-connect:/var/state/haproxy.stat 

puis activez une fois que vous avez terminé:

printf "enable server 1\n" | socat stdio unix-connect:/var/state/haproxy.stat 

Tant que vous ne modifiez pas la configuration, il n'y a aucune raison de redémarrer, même si reste non détecté.

0

Si vous avez un budget pour cela, rendez-vous sur www.Zeus.com. La nouvelle version, disponible dans quelques semaines, offre cette possibilité, mais vous pouvez également utiliser la version existante pour surveiller le niveau de service, puis utiliser un langage de script et une API pour créer la fonctionnalité de provisionnement automatique pour vos serveurs principaux. .

des mises à jour gratuites sont disponibles tout comme une licence de développeur pour que vous puissiez modéliser gratuitement ce que vous essayez d'obtenir.

Un logiciel Zeus est également disponible auprès d'un certain nombre de fournisseurs de cloud si vous souhaitez suivre cette voie à un moment donné.

+0

Je n'ai aucun budget pour cela, ce n'est pas une option. Même ainsi, je n'ai vu aucune fonctionnalité sur leur site Web qui correspond à ce que je cherche. – dschatz