2011-07-14 3 views
0

Comment les utilisateurs empêchent-ils Tomcat de générer du trafic lors du redémarrage d'un équilibreur de charge Elastic Amazon Web Services?Tomcat redémarre sur AWS ELB

Nos applications prennent jusqu'à 40 secondes pour redémarrer une fois qu'un nouveau logiciel leur a été déployé. Il s'agit d'une fenêtre trop petite pour que les ELB remarquent, et donc l'instance Tomcat continue à recevoir des requêtes en attendant l'initialisation de leur webapp, ce qui conduit à 500 pages d'erreur.

Existe-t-il un moyen courant de contourner ce problème?

Répondre

1

Vous pouvez jouer avec le Health Check parameter: Configurer une page html spéciale comme /health-check.html dans le paramètre Cible. Lorsque vous souhaitez arrêter une instance, supprimez/renommez cette page, puis redémarrez votre tomcat et, une fois celle-ci installée, renommez la page en /health-check.html.

+0

Merci, c'est une bonne solution, mais trop manuelle pour mon utilisation. Peut-être que les outils qui déploient de nouveaux .wars peuvent contrôler ce comportement ... –

2

Franck a raison, vous devriez utiliser le mécanisme de contrôle de santé. Cependant, le plus souvent, vous pouvez exécuter ce bilan de santé toutes les 6 secondes. Cela se produit si votre application est redémarrée ou redéployée? Malheureusement, l'ELB ne le sait pas, et continue d'envoyer du trafic vers cette instance. Ainsi, dans le pire des cas, pendant (environ) 6 secondes, les visiteurs de votre site qui sont servis par cette instance recevront un message d'erreur ou un vidage de trace.

J'ai contacté Amazon en leur demandant un bouton PAUSE pour chaque instance inscrite avec l'ELB, afin que nous puissions dire à l'ELB d'arrêter d'envoyer des requêtes à cette instance. Quelqu'un a aimé l'idée, et a promis de l'escalader aux développeurs. Au moins, ce serait un moyen facile d'éviter que cette demande ne soit pas prête.

Un conseil pas directement lié à l'ELB, mais à Tomcat: Tomcat a maintenant un moyen de télécharger des WAR avec des versions. Au lieu de télécharger un fichier "root.war", vous pouvez télécharger un fichier "root ## 2012-04-30.war" (par exemple), et Tomcat déploiera une nouvelle version du même fichier WAR. Cette nouvelle version n'interrompra pas la version actuelle qui répond aux demandes, et dès que la nouvelle version sera prête, elle commencera à prendre le trafic au lieu de l'ancienne version. De cette façon, votre instance n'arrête jamais de répondre aux demandes, de sorte que l'ELB n'a pas besoin d'arrêter d'envoyer des requêtes.

Questions connexes