Apps

Module de Contributions Centralisées 1.2

Description

Ce module redirige tous les contributeurs sur un réplicat d'écriture, afin d'optimiser les performances de la synchronisation JSync.


Installation

Ce module ne fonctionne qu'à partir de JCMS 7.0 SP3 et est compatible avec JCMS 7.1, JCMS 8 et JCMS 9.

1. Installation

Premièrement, assurez-vous de la compatibilité de votre architecture avec les pré-requis pour ce module :

  • Un serveur frontal avec son URL (ex. http://www.monsite.com)
  • Un réplica de contributions, atteignable directement par les contributeurs sur une URL dédié (ex. http://contributions.monsite.com)
  • Un ou plusieurs autre replicas.

1. Installez le module sur chaque réplica et redémarrez.

2. Editez les proprités du module.

Trois propriétés doivent être remplies (utilisez les même valeurs sur tous les réplicas) :

  • URID du réplica de contribution : Il s'agit de l'URID visible dans les propriétés du réplica de contribution (e.g. "c"). Cette propriété est requise, autrement le module sera désactivé.
  • URL du réplica de contribution : Il s'agit de l'URL qui sera utilisé pour rediriger les contributeurs (e.g. "http://contributions.mysite.com/"). Cette propriété est requise, autrement le module sera désactivé.
  • Regexp d'URL de base du serveur frontal : Une expression régulière utilisé pour déterminer si une requête utilisateur a lieu en passant par le frontal ou s'il il s'agit d'un acces direct à un replica. (e.g. http://www.monsite.com/). Attention : si cette propriété est laissée vide, les connexion des administrateurs directement sur les réplicas seront malgré tout redirigées vers les réplica de contribution. Assurez-vous de définir cette valeur correctement pour continuer à pouvoir administrer tous vos replicas.

Une propriété optionnelle permet de définir la durée de validité du ticket d'authentification utilisé lors de la redirection.

2. Configuration avancée

2.1 Disponibilité du réplica de contribution

Si le réplica de contribution n'est plus joignable pour maintenance,  plantage ou tout autre raison, l'utilisateur ne doit pas être redirigé..

Pour cela, une URL de vérification du réplica de contribution peut être spécifiée dans les propriétés du plugin pour vérifier régulièrement la disponibilité du réplica de contribution. Vous devez spécifier une URL qui soit directement joignable par le replica, sans aucun proxy ou authentification (sauf exception en présence d'une clé d'authentification). L'URL spécifiée doit renvoyé un code HTTP 200.
Si l'URL ne peut être contacté, la redirection sera désactivée en attendant qu'une nouvelle tentative de vérification de la disponibilité soit réussie et que la connexion soit établie.

Le réglage par défaut du modul est de vérifier cette URL toutes les minutes, vous pouvez modifier la planification via la propriété  jcmsplugin.centralized-writes.writing-replica-ping.schedule utilisant une syntaxe de CRON JDring.

2.2 Règle de redirection personnalisée

Si la vérification par défaut sur le statu de contributeur du membre ne correspondant pas à votre besoin pour déclencher la redirection, vous pouvez mettre en place une règle personnalisée en créant une classe Java implémentant l'interface  com.jalios.jcmsplugin.centralizedwrites.CentralizedWritesRule puis en déclarant cette classe via la propriété jcmsplugin.centralized-writes.custom-rule.class.

Ci-dessous un exemple de règle personnalisée effectuant une redirection systématique si l'utilisateur appartient a un groupe spécifique, sauf si le membre fait partie d'un groupe d'exclusion.

  public class CustomCentralizedWritesRule implements CentralizedWritesRule {

  private static Logger logger = PluginManager.getPluginManager().getPlugin("CustomPlugin").getLogger();
  private static Channel channel = Channel.getChannel();

  public CustomCentralizedWritesRule() {
  }
  
  public boolean isEligibleForRedirection(AuthenticationContext ctxt, boolean computedValue) {
    Member mbr = ctxt.getLoggedMember();
    if (mbr != null) {
      
      Group forcedGroup = channel.getGroup(channel.getProperty("jcmsplugin.Custom.centralized-writes-rule.forced-group-id", ""));
      if (forcedGroup != null && mbr.belongsToGroup(forcedGroup)) {
        if (logger.isTraceEnabled()) {
          logger.trace("Custom CentralizedWritesRule : DO redirect of Member '" + mbr + "' ("+mbr.getId()+") as it belongs to forced group '" + forcedGroup + "' ("+forcedGroup.getId()+")");
        }
        return true;
      }
      
      Group excludedGroup = channel.getGroup(channel.getProperty("jcmsplugin.Custom.centralized-writes-rule.excluded-group-id", ""));
      if (excludedGroup != null && mbr.belongsToGroup(excludedGroup)) {
        if (logger.isTraceEnabled()) {
          logger.trace("Custom CentralizedWritesRule : DO NOT redirect of Member '" + mbr + "' ("+mbr.getId()+") as it belongs to excluded group '" + excludedGroup + "' ("+excludedGroup.getId()+")");
        }
        return false;
      }
      
    }
    
    if (logger.isTraceEnabled()) {
      logger.trace("Custom CentralizedWritesRule : Apply default rule of CentralizedWritesPlugin.");
    }
    return computedValue;
  }

}
  

Il s'agit d'un simple exemple de règle pour mettre en avant les capacitiés fournies par le module et il DOIT être amélioré, notamment pour garantir des performances afin de lire les groupes concerné à l'avance via un PropertiesListener.


Changements

Centralized Writes Plugin v1.1

  • Improvement
    • [CWP-6] - Add compatibility with JCMS 7.0.3 security framework
    • [CWP-5] - Stop redirection if the writing replica cannot be reached
    • [CWP-4] - Provide hook for custom redirection rule

Centralized Writes Plugin v1.0.1

  • Improvement
    • [CWP-2] - Redirect to leader on same content/page originally accessed on replica

Centralized Writes Plugin v1.0

Initial release

Informations

Version
  • 1.2
Stabilité
  • Stable
Compatibilité
  • JCMS 7.0 SP3
    JCMS 7.1
    JCMS 8
    JCMS 9
Certifié Jalios
  • Oui
Prix
  • Module payant
Support
  • Jalios Support
Auteur
  • Jalios SA
Licence
  • Jalios
Taille
  • 51,27 Ko
Mis-à-jour
  • 30/05/13
Téléchargements
  • 19