Mise en oeuvre d’un cluster Zimbra avec synchronisation multi-plateformes

Pour un projet, j’ai eu à réfléchir à une solution d’agendas partagés, synchronisable sur blackberry.

C’est donc un dimanche matin, avant de me vautrer comme une loutre sur le canapé la messe, que j’ai mis en place tout cela et j’en suis plutôt content.

En matière d’outil de collaboration, il existe plusieurs produits, achevés ou non, intéressants ou pas.

J’avais d’abord commencé par lorgner du côté de Kolab mais j’ai préféré choisir un outil que je connais bien et qui a fait largement ses preuves : ZIMBRA.

Inutile de vous présenter cette suite d’outils, leur réputation n’est plus a faire.

Maintenant, il me fallait rendre Zimbra hautement disponible et surtout, permettre de synchroniser les agendas et carnet d’adresses avec une multitude d’équipements (téléphone Blackberry, Symbian, Iphone etc…) mais aussi sur les PC sous Thunderbird/Lightning, Evolution voir même (pour les GENS sales), Micro$oft Windaube avec Proutlook (la version complète, pas caca express qui ne dispose pas de calendrier).

Donc du Zimbra a ma sauce, voila donc la mise en oeuvre d’un ZImbrabloc (guiguiabloc + zimbra … ok , je –> [] )

Pour la partie synchronisation, il me fallait quelque chose de solide, d’Open (forcément), utilisable avec Zimbra et une immense majorité de plateformes comme énoncé plus haut.

Ce service magique, je l’ai trouvé chez Funambol.

Comme toujours si vous ou l’un de vos collaborateurs un dessin valant mieux qu’un long discours, voici ce que je vous propose mettre en place :

Architecture ZimbraBloc

Architecture ZimbraBloc

  • Préparation de l’ip Failover, des DNS et des Serveurs

Si vous êtes chez OVH, c’est le moment d’activer votre IP Failover pour qu’elle pointe sur vos deux serveurs.

(Sinon, a vous de préparer votre VIP CARP ou UCARP si vous utilisez un autre système d’ip failover).

Relire mes précédents billet :

ICI , ICI et LA .

L’installation de Zimbra est triviale si l’on prépare en amont ses DNS. En effet, le serveur sur lequel vous installerez Zimbra doit être MX du domaine (l’installeur le vérifie).

collab.guiguiabloc.fr IN A 10.0.0.1
 
collab.guiguiabloc.fr MX 10 collab.guiguiabloc.fr
 
zimbrabloc-1 IN A 10.10.10.1
 
zimbrabloc-2 IN A 10.10.10.2
 
zimbrabloc-1 MX 10 zimbrabloc-1
 
zimbrabloc-2 MX 10 zimbrabloc-2

Côté serveurs, prévoir :

Vos partitions  / /home /tmp bref, comme vous avez l’habitude de faire

1 partition pour DRBD (tailler large…)

1 partition de quelques gigas juste pour l’installation de Zimbra, que l’on montera en /opt

  • Installation de Zimbra, DRBD et Heartbeat

Je me suis basé sur l’excellent article de Mig5 :

http://www.mig5.net/content/howto-highly-available-zimbra-cluster-using-heartbeat-and-drbd

L’installation ce Zimbra sous DRBD demande une manipulation un peu tordue car Zimbra vérifie que la machine sur laquelle il s’installe est bien MX du domaine (en gros il interroge le DNS du domaine et check son /etc/hostname mais drbd vérifie que le /etc/hosts et le /etc/hostname de la machine sont bien identiques sinon il crie au loup.

Pour simplifier la manipulation, la technique est la suivante :

  • installation de zimbra dans /opt (on monte notre petite partition en /opt)

Sur zimbrabloc-1 on change le /etc/hostname par collab.guiguiabloc.fr

On reboot, on installe Zimbra (téléchargeable ICI ) (si vous avez une erreur comme quoi le MX ne pointe pas sur la bonne ip (normal puisque l’on pointe sur une ip failover, passez outre et répondre Non au changement de domaine)

Je ne m’étend pas sur l’installation, très simple, et il existe multitude de tutos sur le nain ternet.

  • on stoppe Zimbra, on remet le hostname comme il était (zimbrabloc-1)
  • on supprime les entrées dans /etc/rc* (c’est Heartbeat qui gèrera l’arrêt/relance de Zimbra)
  • on édite le /etc/hosts que l’on modifie ainsi :

Pour Zimbrabloc-1

127.0.0.1 collab.guiguiabloc.fr localhost
 
10.10.10.1 zimbrabloc-1 collab.guiguiabloc.fr
 
10.10.10.2 zimbrabloc-2

Pour Zimbrabloc-2

127.0.0.1 collab.guiguiabloc.fr localhost
 
10.10.10.1 zimbrabloc-1
 
10.10.10.2 zimbrabloc-2 collab.guiguiabloc.fr

On démonte /opt pour le monter en /mnt/trucmuche temporairement.

Côté serveurs, on se monte une « petite » partition en DRBD comme d’habitude, déjà expliqué dans ce billet.

Je vous passe la synchro et tout le bouzin de drbd, bref, vous devriez vous retrouver avec un /dev/drbd0 que l’on montera en /opt.

Ne reste qu’a copier l’integralité de votre /mnt/trucmuche dans votre nouveau /opt fraichement synchronisé.

(n’oubliez pas de virer l’entrée /etc/fstab…)

Vous installez heartbeat et vous renseignez vos /etc/ha.d/haresources pour basculer votre noeud :

zimbrabloc-1 IPaddrFO::10.0.0.1/32/eth0 drbddisk::r0 Filesystem::/dev/drbd0::/opt::ext3 zimbra MailTo::guiguibloc@guiguiabloc.fr::Bascule_Zimbra

NB: le script IPaddrFO est une modification du IPaddr dans lequel, outre la bascule de l’ipfailover d’une machine a une autre, je « pousse » via un script python, la mise à jour de l’ipfailover dans le manager d’OVH :

Le code a modifier :

case $2 in
start)        /home/system/zimbrabloc1-failoverupdate.py
ip_start $1;;

Le script Python :

#!/usr/bin/python
from SOAPpy import WSDL
soap = WSDL.Proxy('https://www.ovh.com/soapi/ovh.wsdl')
nic = 'guiguiabloc-ovh'
password = 'weshgroscestmoi'
try:
session = soap.login( nic, password )
print "login successfull"
except:
print "Error login"
try:
result = soap.dedicatedFailoverUpdate( session, 'ns12345.ovh.net', '10.0.0.1', '10.10.10.1' );
print "dedicatedFailoverUpdate successfull";
except:
print "Error dedicatedFailoverUpdate"
try:
result = soap.logout( session )
print "logout successfull"
except:
print "Error logout"

Je vous laisse rebooter, couper le zimbrabloc-1 et vérifier la bascule sur le zimbrabloc-2.

  • Serveur de synchronisation Funambol

Funambol est une entreprise américaine qui propose deux types de licences, Commercial et OpenSource.

Sa force est d’offrir des clients de synchronisation pour quasiment tout ce qui est amené à se synchroniser à quelque chose un jour.

On attendait depuis longtemps le connecteur Funambol pour Zimbra, c’est chose faite :

http://sourceforge.net/projects/zimbrafunambol/

L’installation du serveur Funambol est d’une simplicité déconcertante (on l’installera dans /opt, a coté de notre ZImbra).

Par défaut, il écoute sur le port 8080, ce qui n’entrera pas en conflit avec l’interface web de Zimbra

(Bien évidemment, on passera tout cela en https avant d’ouvrir au public).

L’url de synchro sera donc :

http://collab.guiguiabloc.fr:8080/funambol/ds

(Vous pouvez vérifier que le serveur Funambol fonctionne parfaitement en pointant votre navigateur sur cette adresse)

Funambol Data Synchronization Server v.7.1.0

Man=Funambol
Mod=DS Server
SwV=7.1.0
HwV=-
FwV=-
OEM=-
DevID=funambol
DevTyp=server
VerDTD=1.2
UTC=true
SupportLargeObjs=true
SupportNumberOfChanges=true
Ext=X-funambol-smartslow

L’installation et le paramétrage du connecteur Zimbra sont parfaitement documentés :

http://wiki.zimbra.com/index.php?title=Open_Source_Mobile_Calendar_and_Contact_Synchronization

Un excellent tutorial en français (chapeau a son auteur, Jean-François VIAL, et surtout merci 😀 )

http://www.modulaweb.fr/blog/2009/02/installation-de-funambol-couple-a-zimbra-sur-un-serveur-gnu-linux/

  • Installation et test du client de synchro

Les téléchargements disponibles pour les diverses plateformes se trouvent ici :

https://www.forge.funambol.org/download/

Mon nokia e65, tournant sous Symbian fait bien sur partie des plateformes disponibles (Symbian )

Ici le couple Username/Password correspond au compte de l’utilisateur dans Zimbra.

Le serveur location sera : http://collab.guiguiabloc.fr:8080/funambol/ds

Un petit clic sur « Sync All » et le calendrier se synchronise. Magique 🙂

Les paramétrages de synchro sont modifiables (dans 1 sens ou dans les 2 sens, désactivation de la synchro des contacts etc…)

Au final, nous avons mis en place un système collaboratif en haute disponibilité, accessible en Web synchronisable par Client lourd, par téléphone portable etc…

L’agenda partagé est un outil devenu indispensable dans les entreprises.

Offrir ce type de service, qui permet de tenir son calendrier a jour, de le consulter ou que l’on soit, par plusieurs moyens différents, tout en étant certain de la disponibilité du service, c’est quand même pas mal, non ?

A vous de vendre cela a votre DG/PDG/DRH qui vous regardera les yeux humides d’émotion de répondre à l’une de ses problématiques (et accessoirement vous gratifiera d’une tape sur l’épaule avec un « beau travail » en oubliant de vous offrir une augmentation…)

Amusez vous bien 🙂

Ce billet a été posté dans geekerie, linux et taggé , . Bookmark ce permalink.

11 commentaires sur “Mise en oeuvre d’un cluster Zimbra avec synchronisation multi-plateformes

  1. Excellent tutoriel, comme d’habitude.

    Deux petites coquilles se sont glissées dans ton billet: « installation de Zimbra est trivial(E) si l’on prépare en amont ses DNS. En effet, le serveur sur lequel vous installer(EZ) Zimbra doit être MX du domaine (l’installeur le vérifie). »

  2. Merci pour ton oeil avisé 😀 (et les compliments :-p)

  3. Pour t’éviter le déploiement du client Funambol sur les terminaux mobiles, tu aurais pu également mettre en oeuvre de façon triviale la solution opensource Z-Push issue de la suite Zafara.
    Cette solution émule l’interface Ms ActiveSync et est donc consommable par tous les terminaux compatibles (iphone, WM, Symbian, etc …)
    Fonctionne très bien (mis à part un souci de fuite mémoire nécessitant quelques relances proactives) connecté en IMAP sur nos infras cluster Qmail de production pour l’ensemble de la société.
    Seuls les mails sont synchronisables par Z-Push via IMAP ; si tu souhaites également tâches & contacts, mais que tu ne veux pas utiliser Zafara en backend, alors Funambol est alors la seule solution.

  4. Merci pour ton retour d’expérience 😀
    J’avais effectivement lu quelques articles sur Zafara mais avait moins de retour d’efficacité en Production sous grosse charge que Funambol.
    Par contre, effectivement, il s’agit d’une très bonne solution pour remplacer ActiveSync.
    Joli témoignage en tout cas 🙂

  5. Très très bon article !!
    J’ai un ami qui s’occupe de toute une plateforme de prod, et ton tuto devrait vraiment l’interesser (d’ailleurs il a du surement deja te lire ;-)). Concernant Funambol, j’ai du il y a quelques semaines le mettre en place dans une version particulière ( modifiée par des industriels ) et c’est vrai que cela m’a l’air pas mal du tout..
    Bonne continuation.

  6. Mille Merci,
    J’ai décourvert ton site via http://www.nanokrill.com.
    C’est tout simplement passionnant tes tutos pour un geek débutant comme moi.
    Mille merci pour tous ces tutos et tout ce temps passé pour nous.
    ThiB