2011-06-28 5 views
2

J'ai une application Web Java Enterprise qui utilise Tomcat6 + Struts + Hibernate + MySql. À l'heure actuelle, il fonctionne en mode public sur un seul serveur. Pour résoudre les problèmes de performances, nous devons déplacer l'application vers un environnement en cluster. Quoi qu'il en soit, je veux utiliser le regroupement Tomcat6 comme ci-dessous:Clustering Apache Tomcat6

  • Machine d'équilibrage de charge comprenant un serveur web (Apache + mod_proxy) en tant que front-end
  • Certaines machines de serveur d'applications, chacun exécutant une instance tomcat6
  • A gestion de session back-end
  • Et enfin un serveur db

quelque chose comme ça

this

La machine d'équilibrage de charge reçoit toutes les demandes et, en fonction de l'algorithme d'équilibrage, les redirige vers la machine tomacat6 respective. Après avoir effectué la partie commerciale, la réponse est renvoyée au serveur Web et à la fin à l'utilisateur. Dans ce scénario, la machine frontale traite toutes les demandes et réponses de sorte que ce soit un point de goulot d'étranglement dans l'application.

Dans le clustering Apache Tomcat, existe-t-il un moyen de charger le mécanisme d'équilibrage et les serveurs Web? Je veux dire mettre un équilibreur de charge dans la partie frontale et laisser la partie traitement des requêtes/réponses à plusieurs serveurs Web.

Répondre

1

Tomcat ne prend pas en charge le clustering intégré. Ce qui se passe est que l'équilibreur de charge distribue les requêtes, de sorte que les différentes instances de Tomcat n'ont pas besoin de savoir ce qui se passe.

Ce que vous avez à faire est de vous assurer que votre application peut le gérer. Par exemple, vous devez être conscient que les caches peuvent être périmés. Dites instance 1 a l'objet X dans son cache et X est modifié par une requête traitée sur l'instance 2. Le cache dans l'instance 2 sera correct, le cache de l'instance 1 sera maintenant obsolète.

La solution consiste à utiliser un cache qui prend en charge la mise en cluster ou désactiver la mise en cache pour les instances qui peuvent être modifiées. Mais cela n'a pas d'importance pour Tomcat.

+0

s'inquiéter de la mise en cache est un problème séparé. Ce que je veux savoir ici, c'est: est-ce que cette seule machine serveur web tolérerait cette quantité de charge? –

+0

Avez-vous des chiffres sur ce dont nous parlons? Combien d'accès (pages vues, impressions de pages, combien d'utilisateurs?) – khmarbaise

+0

@SJ Jafari: Comment le saurais-je? Combien de visiteurs allez-vous avoir? Quelle est la complexité de chaque demande? Quelle est la puissance de votre ordinateur, CPU, RAM, disques, réseau? –