Déploiement bi-site avec authentification SAML¶
Le déploiement bi-site actif/actif permet de répartir la charge des utilisateurs entre deux sites indépendants, hébergeant chacun une instance complète de la plateforme (portail, API, base de données).
Chaque site fonctionne de manière autonome : il n’y a pas de réplication de base de données ni de sessions entre les sites. La cohérence des accès et des droits utilisateurs est assurée par un fournisseur d’identité SAML unique, partagé entre les deux sites.
Bénéfices clés¶
Haute disponibilité & Maintenance : Bascule automatique des utilisateurs en cas de panne ou de maintenance planifiée d’un site.
Performance : Répartition équitable de la charge (sessions, API et bases de données locales) entre les deux infrastructures.
Continuité de l’expérience : Authentification transparente via SAML (les utilisateurs conservent les mêmes profils et droits d’un site à l’autre).
Principe de fonctionnement¶
L’utilisateur accède à l’URL publique partagée (
PORTAL_URL).Le DNS le dirige vers l’un des deux sites (mécanisme de répartition externe : round-robin, GSLB, géolocalisation).
Le site cible le redirige vers son URL propre (
PORTAL_URL_REDIRECT).L’utilisateur reste sur ce site pour toute la durée de sa session (affinité de session via cookie de domaine).
L’authentification est gérée par le fournisseur SAML, qui restitue les mêmes droits sur l’un ou l’autre site.
Déploiement bi-site avec architecture SAML¶
Note
L’utilisateur retrouve les mêmes ressources et les mêmes droits quel que soit le site sur lequel il est routé, grâce à l’authentification SAML partagée. Seule sa session technique (cookie) est attachée au site sur lequel il a atterri.
Pré-requis¶
Avant de modifier vos inventaires, assurez-vous de disposer de :
Certificat TLS : Un certificat SAN (multi-domaines) ou Wildcard couvrant
PORTAL_URLet les deux domainesPORTAL_URL_REDIRECT.Routage DNS :
PORTAL_URLdoit pointer vers les deux sites (via GSLB ou Round-Robin).Chaque
PORTAL_URL_REDIRECTdoit pointer exclusivement vers son site respectif (A ou B).
Configuration SAML : Les deux URL de redirection (Site A et B) doivent être déclarées comme points de terminaison ACS (Assertion Consumer Service) valides chez votre fournisseur d’identité.
Options à configurer¶
Deux variables activent le mode bi-site dans vos inventaires :
PORTAL_URLObligatoirement identique sur les deux sites. C’est l’URL publique globale saisie par les utilisateurs (ex:
portal.example.com).PORTAL_URL_REDIRECTStrictement unique par site. C’est l’URL locale propre à chaque infrastructure (ex:
site-a.example.com) permettant de verrouiller la session technique.
Exemples d’inventaire Ansible¶
Inventaire du Site A¶
Fichier inventory-site-a.yml :
all:
vars:
API_LICENSE: "{{ LICENSING_KEY }}"
REGISTRY_URL: "registry.reemo.io"
REGISTRY_ENV: "reemoinfra"
REGISTRY_USERNAME: "< username >"
REGISTRY_PASSWORD: "< password >"
children:
infra_manager:
vars:
PORTAL_URL: "portal.example.com"
PORTAL_URL_REDIRECT: "site-a.example.com"
PROVISION_SIGNAL_IP:
- ip: "192.168.10.66"
INIT_PROVISION:
provision1:
type: "SWARM"
ip:
- "192.168.10.100"
hosts:
infra_manager1:
ansible_host: "192.168.10.66"
provision1:
children:
provision1_manager:
hosts:
provision1_manager1:
ansible_host: "192.168.10.100"
Inventaire du Site B¶
Fichier inventory-site-b.yml :
all:
vars:
API_LICENSE: "{{ LICENSING_KEY }}"
REGISTRY_URL: "registry.reemo.io"
REGISTRY_ENV: "reemoinfra"
REGISTRY_USERNAME: "< username >"
REGISTRY_PASSWORD: "< password >"
children:
infra_manager:
vars:
PORTAL_URL: "portal.example.com"
PORTAL_URL_REDIRECT: "site-b.example.com"
PROVISION_SIGNAL_IP:
- ip: "192.168.20.66"
INIT_PROVISION:
provision1:
type: "SWARM"
ip:
- "192.168.20.100"
hosts:
infra_manager1:
ansible_host: "192.168.20.66"
provision1:
children:
provision1_manager:
hosts:
provision1_manager1:
ansible_host: "192.168.20.100"
Désactiver le mode bi-site¶
Pour un déploiement mono-site standard, laisser PORTAL_URL_REDIRECT
vide ou ne pas la définir :
all:
children:
infra_manager:
vars:
PORTAL_URL: "portal.example.com"
PORTAL_URL_REDIRECT: ""
Aucune redirection n’est alors mise en place.