2 votes

Une solution évolutive pour les Urls multi-tenant dans IIS

Nous avons développé une application ASP.NET multi-locataires. Lorsqu'un client s'inscrit, il obtient son propre sous-domaine à utiliser pour son site (par exemple, tenant1.ourapp.com).

Le processus de mise en place du site du client doit être exempt de toute configuration.

Actuellement, nous l'avons configuré comme suit :

  • 1 x Adresse IP dédiée pour le site web
  • Enregistrement DNS A pour *.ourapp.com à l'IP dédié
  • Un seul site web dans IIS (7.5) qui traite toutes les demandes vers une IP dédiée.

Le reste est géré par notre application (inspection de l'url et chargement de la configuration spécifique au locataire, etc.)

La grande question est de savoir comment cela peut évoluer. Supposons que je veuille héberger seulement 50 instances de locataires par site physique dans IIS. J'ai maintenant un problème : le site d'origine traite toutes les demandes pour ourapp.com (grâce à l'enregistrement DNS joker).

Nous envisageons également d'utiliser Azure, donc une solution qui fonctionne à la fois pour un serveur autonome et pour Azure serait la bienvenue !

1voto

Nabeel Points 11

Je modifierais légèrement votre architecture :

Windows Azure est livré avec un équilibreur de charge intégré. Installez tous vos sites web sur un seul Webrole qui peut être réparti sur plusieurs instances. Configurez votre application multi-tenant pour acheminer les demandes en interne en fonction de la source/client/URL.

Si vous êtes vraiment multi-tenant, vous aurez une base de code unique. Le contenu qui est vu par l'utilisateur dépend de son contexte/identifiant/etc. De cette manière, vous disposez d'une seule application, tout le monde partage les ressources de vos instances à tour de rôle, et aucun serveur ne peut être à l'origine d'une défaillance.

Mettre 50 sites sur un serveur, 50 autres sites sur un autre serveur, etc. est la "vieille" façon de gérer les choses sans nuage. Votre serveur tombe en panne, et 50 clients sont hors service. Et vous ne disposez pas de l'agilité/de l'évolutivité lorsque l'un des clients devient "trop chaud" pour un seul serveur.

0voto

Kyle Brandt Points 81077

En général, si j'ai bien compris votre question, vous devriez examiner les points suivants un équilibreur de charge pour répartir la charge sur plusieurs serveurs web. Vous envoyez toutes les demandes à l'équilibreur de charge, qui les transmet ensuite à vos serveurs web.

Vous pouvez le faire de plusieurs façons, vous pouvez toujours envoyer tenant1.ourapp.com au même serveur, ou vous pouvez le répartir entre tous les serveurs ou un ensemble de serveurs.

Je suis personnellement un fan de l'utilisation de HAProxy sous Linux comme équilibreur de charge. Il existe également d'autres équilibreurs de charge logiciels et des options matérielles.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X