AnsweredAssumed Answered

Architecture Alfresco : backup dans un container docker ?

Question asked by lordfpl on Jan 30, 2015
Bonjour à toutes et à tous,

Je me permets de venir en ces lieux pour avoir quelques astuces sur les possibilités de backup en 5.0… dans un environnement Docker :)

Pour ceux que ça intéresse, voici mon Dockerfile qui fonctionne plutôt pas trop mal (à part la taille de l'image à cause du ADD de l'installeur…) :
FROM debian:jessie

# Packages
RUN apt-get update && \
    apt-get install -yq –force-yes supervisor procps vim net-tools swatch && \
    echo "Europe/Paris" > /etc/timezone && dpkg-reconfigure -f noninteractive tzdata && \
    rm -rf /var/lib/apt/lists/*

# On met les binaires… lourds…
ADD ./install /install/

# Installation, lancement, et arret des que tout est bon pour avoir le deploiement du .war ok
RUN /install/alfresco-community-5.0.c-installer-linux-x64.bin –optionfile /install/config && \
    mv /install/mysql-connector-java-5.1.32-bin.jar /opt/alfresco/tomcat/lib/ && \
    /opt/alfresco/alfresco.sh start && \
    swatch -c /install/swatch.conf -t /opt/alfresco/tomcat/logs/catalina.out && \
    rm -Rf /install

# On termine avec la configuration
ADD ./config/alfresco-global.properties /opt/alfresco/tomcat/shared/classes/alfresco-global.properties
ADD ./config/ldap-authentication.properties /opt/alfresco/tomcat/shared/classes/alfresco/extension/subsystems/Authentication/ldap/ldap1/ldap-authentication.properties
ADD ./config/share-config-custom.xml /opt/alfresco/tomcat/shared/classes/alfresco/web-extension/share-config-custom.xml

CMD /opt/alfresco/alfresco.sh start && tail -f /opt/alfresco/tomcat/logs/catalina.out


La seule particularité est l'utilisation de "swatch" pour déclencher l'arrêt du tomcat une fois démarré… arrêt/stop obligatoire lors de la construction de l'image si on veut pouvoir mettre des fichiers de config sans qu'ils soient écrasés par le déploiement des .war

swatch.conf :
watchfor /INFO: Server startup in/
        echo
        exec "/opt/alfresco/alfresco.sh stop"
        quit


Ma config est :
- Base MySQL externe
- alfresco/share mis avec des adresses https car situés derrière un haproxy qui se charge de l'ajout du ssl
- Désactivation du CSRF car j'ai eu trop de problèmes à vouloir autoriser toutes les urls malgré le fichier proposé par défaut
- Utilisation annuaire ldap
- Volume externe sur un serveur NFS pour /opt/alfresco/alf_data

Encore une fois, pour ceux que ça intéresse, j'utilise crane (similaire à fig pour ceux qui connaissent) avec cette conf :
containers:
  alfresco:
    image: alfresco:latest
    dockerfile: .
    run:
      detach: true
      env:
        - SERVICE_NAME=alfresco
      hostname: alfresco
      publish:
        - 8080
      volume:
        - /xxxxxxxxxxxxxxxxxx:/opt/alfresco/alf_data


L'ensemble de la configuration marche plutôt bien… mais lors de mes tests j'ai vite découvert l'énorme importance de la synchro entre mysql/alf_data… j'ai eu plusieurs alerte de corruptions qui ont entraîné un raz de ma base sql… au cours de tests, pas grave, mais une fois prod… bof…

Je me pose donc pas mal de question sur la façon de sécuriser convenablement une installation Alfresco 5.0 :
- côté Solr ça semble bien documenté (http://docs.alfresco.com/community/tasks/solr-backup.html). Je fais des tests pour confirmer
- Le keystore semble statique… à garder une seule fois dans un coin à priori… non ?
- Par contre le contentstore me semble un peu plus complexe. J'ai trouvé la possibilité d'aggreger plusieurs emplacements (http://docs.alfresco.com/community/concepts/cs-aggregating.html). Compte tenu que c'est quand même l'élément le plus critique puisqu'il contient tous les documents… j'ai un peu de mal à voir comment garantir mes données.

Mon but au travers de ma configuration est de pouvoir déplacer mon installation en fonction de la charge de mes serveurs (ou d'incidents)… actuellement, sans utilisateurs, ça marche… mais j'ai peur qu'un déplacement à chaud pendant une forte activité puisse entraîner des corruptions… et nécessite des restauration en urgence.

Des avis donc ?

Un grand merci au passage pour la documentation, le wiki et les forums alfresco qui aident beaucoup ! :)

Outcomes