Quelle est la meilleure / bonne façon de configurer un environnement équilibré de charge pour une application web?

StackOverflow https://stackoverflow.com/questions/375787

Question

Je développe une application web qui doit équilibrer la charge sur 4 serveurs Web. Mon entreprise achète le matériel d'équilibrage de charge (Cisco). Il y a confusion sur la façon de dire à l'équilibreur de charge qu'un serveur Web doit être dans la rotation.

L'équipe de soutien du matériel informatique veut créer une application Web d'une page qui siégera à côté de la principale application Web. On m'a dit que cette petite application page doit appeler la base de données et faire une instruction INSERT, UPDATE et DELETE sur une table. Ensuite, l'application doit retourner un code d'état, qui à son tour l'équilibrage de charge sera en mesure de lire et de déterminer si vous souhaitez conserver ce serveur Web dans la rotation. Cette application devra résider sur tous les serveurs charge équilibrée. L'une application de la page serait alors interrogé toutes les 5 secondes par l'équilibreur de charge.

Je pense que cela ressemble à une HACK absolue. On dirait que le travail inutile et les frais généraux sur la base de données. L'équipe matérielle essaie de me convaincre que c'est la bonne façon de procéder. Je REFUSE complètement! Mon argument est que l'équilibreur de charge ne doit pas se soucier de la connexion de base de données. Nous essayons seulement de répartir la charge sur les 4 serveurs Web. Une chose à noter est que l'application Web principal est inutile sans la connexion de base de données.

L'équilibreur de charge lui-même ont un moyen de déterminer si un serveur doit être dans la rotation? Quelle est la bonne façon de le faire?

Était-ce utile?

La solution

Je crois qu'il est un hack. L'équilibreur de charge doit simplement utiliser une simple page html pour revenir à l'équilibreur de charge comme l'a dit JWMiller. nous utilisons cette approche accross toutes nos applications. Vérification des connexions de base de données, les services, etc. est déportées le travail d'un healthcheck d'application et devrait être une fonction distincte.

Autres conseils

évolutive Architectures Internet .

L'équilibreur ne peut voir que les serveurs Web. Si le serveur Web apparaît, mais ne peut pas parler à la base de données (parce que, par exemple, Apache est en cours d'exécution, mais votre application est cassé), alors vous aurez un problème avec le serveur non sensible à recevoir des demandes lorsque l'application est cassé .

Nous avons une application selftest qui retourne un statut. Actuellement utilisé pour le débogage. À l'avenir, sera utilisé avec d'autres solutions HA et de partage de charge.

Je mets toujours une vraie page html simple sur le serveur Web. Si l'état HTTP de status.html revient 200, puis garder le serveur dans la rotation, sinon, suspendre le serveur web.

Que faire si votre DB descend dur? pendant que vous restaurez, vous devriez être en mesure de placer un message d'état qui dit « désolé, bientôt de retour ». Vous ne voulez pas avoir à reconfigurer votre équilibreur de charge aussi bien. Yat-il pas partie de votre application qui peut fonctionner sans la DB?

Il est pas un hack, mais une façon courante de vérifier le rythme cardiaque de serveurs Web . Cependant, la base de données dans l'interrogation de cette page est sujette à controverse. Par exemple, vous pouvez vous retrouver avec aucun serveur web en groupe en cas de délai d'attente DB.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top