(J'ai regardé d'autres questions, mais je ne pense pas qu'elles couvrent les mêmes sujets que celle-ci).
Je cherche une solution d'équilibrage de charge pour notre ferme de serveurs web. Nous utilisons actuellement des appareils de la série Cisco CSS11000, mais ceux-ci présentent quelques limitations :
- Nous déchargeons actuellement le SSL, ce qui, j'en suis conscient, alourdit la charge des LB, au lieu d'être en mesure d'échelonner horizontalement le travail SSL sur plusieurs serveurs web.
- Les LB CSS ne supportent pas IPv6
- Les CSS ne fonctionnent pas très bien pour le basculement - nous voulons être en mesure de déplacer le trafic utilisateur de manière gracieuse pour nous permettre de mettre à niveau les serveurs web sans interruption de service.
Objectifs :
- Désactivons la moitié des serveurs web de manière "gracieuse" (c'est-à-dire que les nouvelles connexions des utilisateurs vont vers un sous-groupe de serveurs web spécifié, et qu'il nous indique quand les connexions existantes sont fermées - points bonus s'il peut les forcer à se fermer gracieusement pour que les utilisateurs ne s'en aperçoivent pas).
- Nous pouvons redémarrer/reconfigurer les équilibreurs de charge sans interrompre le service.
- Prise en charge des fonctions HA habituelles (en cas d'explosion ou de panne d'un seul serveur, il n'y a pas de rupture).
- J'aimerais faire cela sans dépenser des $$$ sur des équilibreurs de charge commerciaux / matériels.
- J'aimerais le faire sur Linux si possible pour utiliser l'expérience interne.
- Le reste de l'entreprise aime les produits "Enterprise" parce qu'ils peuvent rejeter la faute sur quelqu'un d'autre en cas de problème. Par conséquent, ce que je recommande de mettre en place doit être aussi fiable qu'une solution commerciale.
Idées :
-
Deux paires de HAProxy. Nous utiliserons le mécanisme de contrôle des sockets de HAProxy ( http://code.google.com/p/haproxy-docs/wiki/UnixSocketCommands ) pour supprimer gracieusement les serveurs web. Chaque paire utiliserait le heartbeat pour maintenir le service, et nous modifierions le DNS pour qu'il pointe vers l'autre paire afin de déplacer les nouvelles connexions d'utilisateurs vers l'autre paire. Il faudrait une certaine forme de surveillance pour nous dire quand une paire particulière a 0 connexion active.
-
Deux machines Linux effectuant l'équilibrage avec iptables et le module -m random. J'utiliserais heartbeat pour maintenir le VIP HA sur l'une des machines, et j'utiliserais conntrackd pour synchroniser l'état de la connexion TCP, afin que nous puissions basculer sans perte de service. Il faudrait un script pour insérer/supprimer les règles iptables en fonction de l'état des backends (à moins que quelqu'un ne connaisse un outil ?).
Quelqu'un a-t-il des commentaires à faire sur ce qui précède ? Ou d'autres idées, meilleures ou complémentaires ?
Merci de votre attention !