logo Alfresco
Version Enterprise 3.4.2

Je vais présenter comment configurer un « Simple repository cluster » pour Alfresco 3.4.2 en TCP. Les nœuds du cluster doivent être accessibles via un load-balancer (dont je ne parlerai pas ici). On pourra ensuite faire pointer Share sur ce load-balancer.

Voici un schéma de comment cela va se présenter :
Alfresco_LB_Diagram

Le file system (alfresco_data) doit se trouver sur un espace partagé (de type SAN par exemple)
dir.root

Les index doivent rester locaux (sur chaque serveur). Les caches de ces index devront être synchronisés entre les nœuds du cluster.
dir.indexes
dir.indexes.backup
dir.indexes.lock

La base de données est également partagée et doit être configurer pour supporter tous les appels des nœuds du cluster.
db.username
db.password
...

Configurer le cluster (JGroups)

Définir le nom du cluster (celui-ci doit être identique sur tous les nœuds du cluster)
alfresco.cluster.name=test

Définir l’adresse et l’interface bind de chaque serveur
alfresco.jgroups.bind_address=10.32.0.46
alfresco.jgroups.bind_interface=eth4

Choisir le protocole à utiliser (TCP ou UDP) ainsi que le fichier de configuration associé
alfresco.jgroups.defaultProtocol=TCP
alfresco.jgroups.configLocation=classpath:alfresco/extension/jgroups/custom-alfresco-jgroups-${alfresco.jgroups.defaultProtocol}.xml

Pour le fichier de configuration vous pouvez, dans un premier temps, simplement copier le fichier alfresco/jgroups/alfresco-jgroups-TCP.xml

Définir l’ensemble des nœuds du cluster
alfresco.tcp.initial_hosts=10.32.0.46[7800],10.32.0.47[7800]

Les autres propriétés peuvent garder leurs valeur par défaut.

Synchronisation des caches entre les nœuds du cluster

Afin d’assurer une cohérence entre les index des nœuds du cluster il est nécessaire de configurer une synchronisation des caches.

Chaque serveur doit être en mode AUTO afin de resynchroniser les différences qu’il pourrait y avoir à chaque redemarrage.
index.recovery.mode=AUTO

Il faut ensuite définir une periode pour vérifier les index
index.tracking.cronExpression=0/5 * * * * ?

Les autres propriétés peuvent garder leurs valeur par défaut.

Copier le fichier alfresco/ehcache-default.xml vers alfresco/extension/ehcahe-custom.xml

L’élément cacheManagerPeerProviderFactory devrait ressembler à cela :
<cacheManagerPeerProviderFactory
class="org.alfresco.repo.cache.AlfrescoCacheManagerPeerProviderFactory"
properties="heartbeatInterval=5000,
peerDiscovery=automatic,
multicastGroupAddress=230.0.0.1,
multicastGroupPort=4446"
/>

La taille des différents caches est à adapter en fonction de votre utilisation.

Tester le cluster

S’assurer que le contenu est bien partagé :

  • Aller sur le premier nœud
  • Créer un nouveau dossier et ajouter un nouveau document
  • Aller sur les autres nœuds
  • Vérifier que le document est bien présent

S’assurer que les index sont bien synchronisés

  • Aller sur le premier nœud
  • Modifier une métadonnée d’un document
  • Aller sur les autres nœuds
  • Vérifier que la métadonnée a bien changé

Réindexer les nœuds du cluster

Il peut arriver qu’il soit nécessaire de relancer une indexation complète des index d’Alfresco. Voici la procédure à suivre dans le cas d’un cluster :

  1. Stopper tous les nœuds du cluster
  2. Faire un backup de la base de données
  3. Faire un backup du dossier d’index
  4. Passer la propriété index.recovery.mode à FULL
  5. Redémarrer le premier noeud du cluster
    Les lignes suivantes devraient apparaitre dans les logs
    INFO [org.alfresco.repo.node.index.FullIndexRecoveryComponent] Index recovery started: 2 968 724 transactions.
    INFO [org.alfresco.repo.node.index.FullIndexRecoveryComponent] 10 % complete.
    ...
    INFO [org.alfresco.repo.node.index.FullIndexRecoveryComponent] 100 % complete.
    INFO [org.alfresco.repo.node.index.FullIndexRecoveryComponent] Index recovery completed.
  6. Stopper le noeud
  7. Copier le dossier d’index vers les autres nœuds
  8. Redémarrer tous les nœuds du cluster

Pendant l’indexation, Alfresco n’est pas disponible. Si cette indisponibilité est trop longue il est possible de laisser les autres nœuds du cluster en lecture seule.

S’il y a un problème :

  1. Restaurer le backup de la base de données
  2. Restaurer le dossier d’index

Documentation Alfresco sur le sujet : Setting up high availability systems

A vous de jouer !

Publicités