Question

Je prévois d’utiliser 2 serveurs racine dédiés loués chez un fournisseur d’hébergement. ces machines exécuteront tomcat 6 dans un cluster. si j'ajouterai d'autres machines ultérieurement, il est peu probable qu'elles soient accessibles avec la multidiffusion, car elles seront situées dans différents sous-réseaux.

est-il possible d'exécuter tomcat sans multidiffusion? tous les tutoriels pour la mise en cluster de tomcat 6 incluent la pulsation de multidiffusion. existe-t-il des alternatives à SimpleTcpCluster?

ou d'autres solutions sont-elles plus appropriées dans cette situation?

Était-ce utile?

La solution

En l'absence de contrôle sur la distance entre les deux serveurs (ils peuvent se trouver dans deux centres de données différents) et sans ligne de communication dédiée entre serveurs, je préférerais les exécuter via un DNS alternatif ou un répartiteur de charge redirigeant les clients vers l'un ou l'autre. www1.votredomaine.xxx ou www2.votredomaine.xxx et gérez les communications avec le serveur avec précaution.

Si les serveurs communiquent fortement entre eux, vous pouvez soit chercher à modifier votre architecture, soit optimiser l’enfer de votre application pour qu'elle soit "ajustée". sur un serveur (au moins pendant un certain temps) ou optez pour un hébergement dédié avec un contrôle sur l'emplacement, la distance et le câblage de vos serveurs. Sinon, votre communication inter-serveur, vos pulsations, etc. utiliseraient le même canal que les clients qui communiquent avec lui (par exemple, le même segment de réseau), ce qui pourrait ralentir tout le monde.

Si vous vous attendez vraiment à une telle charge, je suppose qu’il ya au moins un peu d’argent en jeu, non? Utilisez-le judicieusement et utilisez vos compétences en matière d'installation pour résoudre des problèmes plus difficiles que la configuration d'un clustering distribué sans contrôle ni lignes dédiées.

Autres conseils

En voyant le commentaire à la question après avoir donné mon autre réponse, je suis perplexe quant à votre question. S'agit-il de la réplication de session? Communication de cluster? Il serait peut-être préférable d’énoncer votre problème au lieu de la solution que vous avez planifiée et qui pose lui-même des problèmes.

Je vais exposer quelques problèmes possibles avec des réponses rapides:

Votre application nécessite beaucoup de ressources CPU / RAM

  • Profilez-le, optimisez-le, essayez à nouveau
  • Acheter un serveur plus gros / meilleur

Votre application utilise beaucoup de bande passante

  • utiliser la mise en cluster cheapo que vous avez mentionnée dans votre question ne fera probablement qu'empirer les choses, car le même canal (masqué) est utilisé pour la communication entre serveurs que pour la communication client-serveur
  • Vous pourrez peut-être séparer différents types de bande passante, par exemple. en ayant du contenu dynamique servi par un serveur différent du contenu statique: pas besoin de communication entre serveurs ici

Votre application nécessite beaucoup de stockage

  • obtenir un serveur plus gros
  • optez pour un hébergement dédié et insérez autant de disques que vous le souhaitez
  • voyez si d'autres modèles (tels que le stockage S3 d'Amazon) pourraient fonctionner pour vous)

Votre application sera probablement en barre oblique

  • déterminez lequel des facteurs ci-dessus (ou d’autres) déterminent les limites de votre application, corrigez-le.

Vous avez juste besoin d'une réplication de session?

  • L’interface Tomcats SessionManager est petite et peut être facilement implémentée / étendue. Utilisez-le pour la réplication de session que vous aimez. Voir la documentation de StandardManager . et mise en œuvre pour plus d'informations

Plus d'idées

  • étudiez des configurations plus souples telles que EC2 (amazon), des offres googles ou d’autres configurations de cloud computing. Utilisez leurs propres installations de stockage en nuage et de communication entre serveurs. Veillez à ne pas trop dépendre de cette infrastructure.

J'ai certainement oublié quelque chose, mais cela pourrait constituer un point de départ. Soyez plus concret sur la nature de votre problème sous-jacent pour obtenir de meilleures réponses:)

J'essaie de déployer le serveur CAS (Central Authentication Server) yale et j'aimerais le mettre en cluster pour la redondance, car il s'agit d'un élément d'infrastructure essentiel. Le système CAS nécessite la réplication de la session, car après qu'un utilisateur se soit connecté à l'application A et a accédé à l'application B qui fait partie du domaine à authentification unique, l'application B envoie une demande à CAS pour déterminer si l'utilisateur a un 'ticket' actif. . Puisqu'aucun périphérique ne doit indiquer à l'application B à quel nœud il doit s'adresser pour valider le ticket, tous les tickets actifs d'un nœud doivent être répliqués sur tous les nœuds du cluster. En d’autres termes, la persistance de la session n’est pas une solution ici, car l’application B, lors de la validation du ticket dans le cookie de l’utilisateur, n’a pas connaissance du ID de session de la session originale dans l’application A au cours de laquelle l’utilisateur a ouvert une session.

Ainsi, CAS requiert que la session soit répliquée sur tous les nœuds. La nécessité pour le réseau de prendre en charge la multidiffusion ajoute une quantité non négligeable de temps système et rend cette approche un peu plus lourde à déployer. J'ai testé ce projet sur google code:

http://code.google.com/p/memcached-session-manager

qui semble très utile et simple à déployer (du moins sur un système d’exploitation Linux), mais ne fournit malheureusement que le basculement de session, et n’est pas une solution de réplication de session.

Utilisez simplement http://code.google.com/p/memcached-session -manager / . Ça marche très bien. Nous l'utilisons depuis des années pour cette configuration avec 20 sessions de partage de serveurs Tomcat. Vous pouvez avoir un ou deux serveurs memcached pour gérer la réplication de session.

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