1. Introduction :Qu'est ce que le cloud ?

Le cloud ou informatique dans les nuages peut être vu comme la dématérialisation des systèmes informatiques notamment sur Internet (mais pas forcément, Un cloud peut être cloisonné dans un réseau local par exemple).

C'est un terme qui regroupe beaucoup de choses, rendant ses aspects flous comme les nuages formant le brouillard. Sortir de ce brouillard concernant le cloud est le but de ce tutoriel.

Le cloud est donc un ensemble de services qui vous sont proposés allant d'un espace de stockage/synchronisation partagé ou non, en passant par l'hébergement de vos mails, contacts, carnet d'adresse, de votre application métier, des serveurs virtuels avec redondance, répartition de charge, et augmentation de puissance (provisoire ou non) pour supporter une montée en charge. Toutes les ressources sont virtualisées.

Vos services fonctionnent en général sur une ferme de serveur dont les capacités sont généralement modifiables (en terme de puissance, d'espace de stockage, de bande passante). Ces serveurs peuvent être répartis ou répliqués dans plusieurs data-center, c'est même indispensable pour les services de haute disponibilité.

1-1. Les différents types de cloud

Les services cloud se présentent en plusieurs couches dont voici les principales :

  • IaaS : Infrastruture as a service (infrastructure en tant que service) : Ce service est celui de plus bas niveau, il consiste en la mise à disposition par exemple de machines virtuelles, c'est la partie « matérielle » (les différentes machine, l'infrastructure réseau et de répartition de charge) sous responsabilité du fournisseur de service.
  • PaaS : plateform as a service (plateforme en tant que service) : Ce type de service fournit le système d'exploitation avec ou non la possibilité d'installer des logiciels. Les logiciels peuvent aussi être pré-installés.
  • SaaS : Software as a service (logiciel en tant que service) : A ce niveau se sont les applications qui sont proposés : exemple les plus connus : office365 (pour la partie modification en ligne de documents, ou le logiciel installé sur votre poste), Google Docs.

D'autres couches peuvent être fournis telles que le Desktop as a Service (bureau virtuel en tant que service), le Storage as a Service (stockage en tant que service), la première étant haut niveau (SaaaS), la seconde bas niveau (IaaS) .

Avantages :

  • gestion externalisée du matériel et de sa maintenance, facilité de montée en charge ;
  • Accessibilité depuis n'importe ou ;
  • synchronisation en temps réel ou différé en cas de rupture de liaison (exemple services Dropbox, Google Drive).

Inconvénients :

  • captivité par rapport au produit utilisé et à Internet, en cas de coupure de liaison, aucune activité possible si tous les services sont en lignes, changement de founisseur de service pouvant être compliqué ;
  • coûts cachés d'utilisation si facturation à la bande passante, à l'espace utilisé, etc ;
  • exposition plus importante aux risques de piratage si tout est accessible depuis Internet.

1-2. Cloud public/privé/hybride

Le cloud privé consiste en un cloud qui vous est dédié,

Dans le cloud public, vous utilisez des services mutualisés dans des fermes de serveurs. Les donnés vous sont privatives.

Le cloud hybride quand à lui, correspond à l'utilisation mixte de cloud public et privé. Il peut s'agir par exemple de répartition de service entre plusieurs cloud, de redondance entre vos locaux et un datacenter

2. Les services cloud les plus connus :

  • Dropbox : service de synchronisation et partage de fichiers, gratuit jusqu'à 2 Go, payant au delà, avec une interface d'administration pour les usages multi-comptes professionnels
  • Google G-Suiite : Il s'agit des services gmail, Google drive, Google agenda (et les autres services Google comme youtube,, map, etc.). Tous les services sont regroupé dans un compte avec 15 Go d'espace gratuit, payant au-delà.Il y a également une interface d'administration pour les usages professionnels..
  • Apple icloud : service de synchronisation Apple, synchronise les contacts, agendas, mots de passe entre les ipads, iphones, et ordinateurs macs. Les dernières versions (depuis Mac OS X 10.12) permettent également la synchronisation du dossier documents et du bureau. Le service est gratuit jusqu'à 5 Go.
  • Microsoft Onedrive : synchronise les comptes utilisateurs entre postes Windows 10 et les documents pour les systèmes antérieurs à Windows 10. Sous Windows 10, il est possible d'ouvrir une session sur un ordinateur tiers de retrouver son environnement de travail, La partie mails, calendriers est géré par office 365. Un compte office 365 peut ou non intégrer une licence office 365 (il s'agit d'office 2016 en mode location avec un espace de stockage Onedrive).
  • amazon AWS : Amazon propose une multitude de services de cloud computing, le plus connu étant S3 (Amazon Simple Storage Service). Dropbox utilisait auparavant S3. Ces types de services s'adressent à des utilisateurs avancés (PaaS, IaaS).
  • Microsoft azure : c'est le concurrent d'Amazon qui tout comme lui s'adresse à des utilisateurs avancés et proposent le même type de services (PaaS, IaaS). Le service propose en plus de l'interface web « Azure (remote) PowerShell » qui permet d'effectuer les opérations en ligne de commande et de façon scriptée.
  • Wetransfer : plutôt dédié un partage de fichier temporaire , envoi un lien par mail pour téléchargement de fichier, le lien reste valide quelques jours seulement. La version payante Wetransfer plus permet de garder en ligne jusqu'à 100 Go et de les retransferer.Ce service est utilisé pour transférer des fichiers trop volumineux pour être envoyé par mail, il ne sert pas à effectuer du stockage à long terme, mais je considère qu'il s'agit d'un service cloud.
  • VMWare vCloud Suite : est un package intégrant l'hyperviseur Vsphere (nouveau nom pour ESX) ainsi que des services dédiés au cloud. Il peut gérer un cloud privé ou un cloud hybride. Il peut servir de socle à un datacenter virtualisé.

3. Étude de création de notre propre cloud

Les services cloud mis en place proposeront ceci :

  • synchronisation/partage de documents ;
  • synchronisation de contacts, calendriers ;
  • un serveur mail

Ces services seront fournis soit par un seul produit, soit par une agrégation de produits. Le système devra être réparti et redondant.

Ne sera pas abordé ici l'utilisation du cloud pour stocker une application métier bien que ce soit tout à fait possible.

Nous pourrions ajouter sous forme de sites Web (avec bases de données) :

Des CMS (Content Management System ou système de gestion de contenu tel que WordPress, Joomla ;

Des CRM/ERP (Consumer Ralationship Management - système de gestion de clients/Entreprise Ressource Planning tels que SugarCRM, Oddo (anciennement OpenERP)

Des boutiques en lignes comme Prestashop

Des systèmes de GED (Gestion Electronique de Documents) comme SeedDMS

4. Les briques minimales nécessaires

Pour réaliser notre cloud, il nous faudra :

  • Un système de fichiers (filesystem) réparti.
  • Des bases de données répliquées
  • Un système de centralisation de la gestion des accès (login/mots de passe), compatibles avec tous les services utilisés, et répliqué.

A ce stade, nous aurons notre plateforme IaaS/PaaS sur laquelle nous pourrons ajouter les logiciels permettant d'avoir notre plateforme SaaS.

5. Systèmes de fichiers distribués

Un système de fichiers distribué est un système ou le client accède à un espace de stockage virtuellement unique, les données étant répandues sur plusieurs machines de façon transparente pour le client. C'est le moteur du système de fichier qui a la charge de répartir les données et de les dispatcher au client

Les systèmes de fichier distribués les plus répandus sont :

  • AFS (Andrew File System)
  • Ceph
  • Coda
  • GlusterFS
  • Hadoop Distributed File System (HDFS)
  • Lustre
  • MooseFS
  • NFS - Network File System

Tous n'ont pas été testé dans le cadre de ce tutoriel. Il en ressort plusieurs approches. Certaines approches éclatent les fichiers en blocs (chunks) étant répartis sur plusieurs machines, une ou plusieurs machines gérant les méta-données permettant de reconstituer les fichiers depuis ces blocs, d'autres stockant les fichiers sous forme de fichiers « normaux », et utilisant des méta-données. Certains nécessitent d'avoir une ou plusieurs machines dédiés aux méta-données, d'autres permettant d'intégrer les méta-donnés sur les machines stockant les données, ou éventuellement sur des machines autonomes.

Ceci a un impact sur le minimum de machines requis pour créer le système de fichiers distribués, sur la souplesse de retrait/ajout de machine, et sur la maintenance.

Je me suis orienté sur deux systèmes de fichiers différents :

  • GlusterFS
  • OCFS2 couplé à DRBD.
  • Voir test GFS

OCFS2 (Oracle Cluster File System) n'est pas à système de fichiers distribué, mais un système de fichier partagé entre plusieurs machines, qui nous permettra de gérer l'accès concurrentiel et de répartir la charge sur deux machines dans notre cas. C'est une approche intéressante pour un petit cloud.

5-1. Tests de glusterfs

GlusterFS est un système de fichiers distribué relativement souple. Il vient se greffer sur le filesystem local. Il permet de facilement « concaténer » plusieurs volumes locaux de plusieurs machines en un seul volume. La redondance est possible avec les modes répliqués (distribués ou non).

Voici une présentation des différents modes :

Mode répliqué :

Ce mode de fonctionnement réplique les fichiers sur les différents nœuds du volume. Il s'agit là uniquement de l'aspect redondance, les fichiers ne sont pas répartis sur les différentes machines, ils sont répliqués.

Image non disponible

Mode distribué :

Dans ce mode, les fichiers sont répartis entre les différentes machines du volume. Il n'y a pas de redondance. Vous devez donc vous assurer de la sauvegarde des données sur les différents nœuds.

Image non disponible

Mode distribué-répliqué :

Ce mode cumule la répartition et la redondance. Chaque nœud du volume distribué est redondé sur une autre machine. Il vous faut donc au minimum X machines multiplié par deux pour un volume consistent, X représentant le nombre de nœuds répartis.

Autres modes possibles (non testés):

Volumes strippés : Les fichiers sont éclatés en plusieurs morceaux, ceux-ci étant répartis sur les machines membres du volume. Ce mode pourrait être comparé à du RAID 0 via le réseau.

Image non disponible

Volumes strippés distribués : Les fichiers sont éclatés en plusieurs morceaux comme pour les volumes strippés, mais sont répliqués sur plusieurs machines. Ce mode peut être comparé à du RAID 0+1 (encapsulation de RAID 0 dans un RAID 1) via le réseau.

Image non disponible

Volumes dispersés : Les fichiers sont morcelés sur plusieurs machines avec des fragments supplémentaires permettant le reconstruction de fichiers suite à perte de fragments présent sur une machine en panne. Ce fonctionnement est comparable à du RAID 5 via le réseau

Volumes dispersés distribués : Il s'agit de volumes distribués répliqués utilisant des sous-volumes dispersés plutôt que répliqués.

Gluster utilise la nomenclature suivante :

  • pool de machines: machines qui sont appairés pour gérer un ou plusieurs volumes en commun
  • brique : Une brique est un point de stockage sur une machine d'un pool. Plusieurs briques font un volume

5-1-1. Installation de glusterfs

Pour installer GlusterFS il nous suffit d'installer les paquets glusterfs-server et attr :

 
Sélectionnez
apt-get install glusterfs-server attr

Le paquet attr est indispensable, glusterfs utilisant les attributs étendus. Le filesystem utilisé doit aussi les gérer.

Les tests effectuées l'ont été dans des machines virtuelles sous Debian 8. Les machines seront nommés srv1, srv2, etc. Les fichiers hosts respectifs contiendront la liste des machines utilisées.

Termes utilisés par gluster :

  • pool : Ensemble de machines interconnectés
  • brique: morceau du volume, pouvant représenter un morceau répliqué, ou distribué.

5-1-1-1. Montage d'un volume gluster

Pour monter un volume gluster, vous aurez besoin du paquet glusterfs-client. Si vous souhaitez monter un volume gluster sur une machine faisant office de serveur gluster, vous n'en aurez pas besoin, le paquet glusterfs-client étant installé en même temps que glusterfs-server.

cela se fait ensuite comme pour tous les autres types de volume :

 
Sélectionnez
# mount -t glusterfs [nom d'hôte ou adreese IP]:/[nom du volume] [point de montage]

Ou dans le /etc/fstab sur srv1 par exemple :

 
Sélectionnez
srv1:/VOL /mnt glusterfs defaults,_netdev 0 0

Il est possible de monter un volume gluster via NFS. Cela n'est pas recommandé, suite à l'utilisation de NFSv3, ou la sécurité reste rudimentaire.

5-1-2. Installation mode répliqué

Une fois les machines srv1 et srv2 préparées (glusterfs installé, dossier ou point de montage pour gluster opérationnel), nous commençons par effectuer le jumelage glusterfs.

Jumelage de srv2 à srv1 depuis srv1 :

 
Sélectionnez
root@srv1:~#gluster peer probe srv2
peer probe :  success

La commande suivante permet de voir les machines membres du pool :

 
Sélectionnez
root@srv1:~#gluster pool list

qui donnera un résultat comme ceci :

 
Sélectionnez
UUID                                Hostname    State
c7e9273c-1c9b-4350-b5a2-b0fcbe436c8f    192.168.8.2    Connected 
5d219f3d-3b34-409e-a745-7f77bae78578    localhost    Connected

La même commande exécutée sur la seconde machine donnera le même résultat, les deux lignes seront juste interverties.

Pour créer le volume répliqué, nous appliquerons la commande suivante :

 
Sélectionnez
root@srv1:~# gluster create volume VOL replica 2 srv1:/data_srv1 srv2:/data_srv1 force
volume create: VOL;  success: please start volume to access data

Détail des paramètres passés à la commande gluster create volume :

  • VOL:nom du volume créé 
  • replica:nombre de machines necessaires au volume répliqué (2 minimum) 
  • srv1:/data_srv1:srv1 correspond au nom de la machine, /data_srv1 correspond au point de montage/dossier contenant les données du volume. Le nom de la machine et le chemin sont séparé par le caractère : 
  • srv2:/data_srv2: srv1 correspond au nom de la machine, /data_srv1 correspond au point de montage/dossier contenant les données du volume.Le nom de la machine et le chemin sont séparé par le caractère :
  • force: gluster exige ce paramètre en cas ou le point de montage utilisé pour le volume est dans la partition principale (ce que gluster ne recommande pas).

Une fois le volume créé, il nous faut l'activer :

 
Sélectionnez
root@srv1:~# gluster volume start VOL
volume start: VOL; success.

Nous pouvons voir l'état du volume avec la commande suivante :

 
Sélectionnez
root@srv1:~# Gluster volume info 
Volume Name: VOL
Type: Replicate
Volume ID: e24fe9b4-6166-4726-b6fc-c04e8a388211
Status: Started
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: srv1:/data
Brick2: srv2:/data

Pour que la réplication fonctionne, il ne faut pas accéder au contenu directement depuis les dossiers /data_srv1 ou /data_srv2 dans notre exemple, mais depuis un point de montage glusterfs

5-1-2-1. ajout d'une machine supplémentaire au pool :

Dans notre exemple, le serveur supplémentaire sera nommé srv3.

Une fois le serveur préparé et gluster installé, nous ajoutons son nom dans les fichiers /etc/hosts de srv1 et srv2.

Il nous faut ensuite ajouter srv3 au pool :

 
Sélectionnez
root@srv1:~#gluster peer probe srv3

Nous ajoutons ensuite la nouvelle machine :

 
Sélectionnez
gluster volume add-brick VOL replica 3 srv3:/data_srv3 force

Il faut passer le bon nombre de machine à l'option replica

Si nous appelons la commande gluster volume info, nous pouvons constater que le nombre de briques est passé de 1 x 2 = 2 à 1 x 2 = 3.

5-1-2-1-1. Mise à jour de srv3 

Une fois la brique intégrée, aucune donnée n'est automatiquement répliquée dessus. A ce stade, si nous ajoutons un nouveau fichier au volume, une copie sera bien présente dans srv3, mais les anciens fichiers ne le seront pas. Pour pallier ceci, il faut lancer la commande suivante :

 
Sélectionnez
gluster volume heal VOL full

5-1-2-2. Retrait d'une brique

Dans notre cas, nous allons retirer srv2 avec la commande suivante :

 
Sélectionnez
gluster volume remove-brick VOL replica 2 srv2:/data_srv2 force

Il y aura un message de demande de confirmation.

Replica doit être égal au nombre final de briques après opération.

Info : Dans notre cas de volume répliqué, il est possible diminuer le nombre de volumes jusqu'à un seul. Le volume dans ce cas passera en mode Distribué.

La sortie de la brique du volume ne supprime pas les données de celle-ci mais il n'y a plus aucun lien entre celles-ci et le volume. Il ne sera pas possible de réintégrer la brique telle quelle.

Si vous souhaitez retirer la machine du pool :

 
Sélectionnez
gluster peer detach srv2

5-1-3. test mise en panne, simulation perte de srv1

L'arrêt de srv1 ne provoque aucune erreur. Comme nous avons appairé srv2 à srv1, nous pouvons voir l'état de la connexion (et donc sa perte) avec la commande :

 
Sélectionnez
root@srv1:~# gluster peer status
Number of Peers: 1

Hostname: srv1
Uuid: c0c487b3-1135-41c7-b160-b8a061c10e9d
State: Peer in Cluster (Disconnected)

Si vous souhaitez garder l'adresse IP de la machine perdue, la reconnexion est plus complexe.

5-1-3-1. Remplacement avec une nouvelle adresse IP

Nous appairons le nouveau serveur :

 
Sélectionnez
root@srv2:~#gluster peer probe srv1

Nous remplaçons ensuite la brique :

 
Sélectionnez
root@srv2:~# gluster volume replace-brick VOL srv1:/data_srv1 [nouvelle ip/hote]/data  commit force

Pour que les machines se synchronisent, il faut ensuite lancer la commande :

 
Sélectionnez
gluster volume heal VOL full

5-1-3-2. Remplacement en gardant la même adresse IP

Il faut d'abord retirer la brique défectueuse :

 
Sélectionnez
root@srv2:~# gluster volume remove-brick VOL srv1:/data_srv1 force
Removing brick(s) can result in data loss. Do you want to continue ? (y/n) y
volume remove brick commit force:success

Puis :

 
Sélectionnez
root@srv2:~# gluster peer detach srv1
peer detach: success

A ce stade, le volume ne possedant plus qu'une seule brique passe en mode distribué.

Une fois le nouveau serveur préparé, nous le réappairons :

 
Sélectionnez
root@srv2:~# gluster peer probe srv1

Nous ajoutons la nouvelle brique :

 
Sélectionnez
root@srv2:~# gluster volume add-brick VOL replica2 srv1:/data_srv1 force

Nous resynchronisons le volume :

 
Sélectionnez
gluster volume heal VOL full
Launching heal operation to perform full self heal on volume VOL has been successful
Use heal info commands to check status

Comme indiqué, nous pouvons voir le résultat avec la commande :

 
Sélectionnez
gluster volume heal info

5-1-4. Installation mode distribué

Certaines notions sont identiques ou de simples variantes du mode répliqué. Il est important pour le suite d'avoir lu le chapitre précédent.

Nous préparons une machine srv1 qui contiendra le fichier fichier1.txt dans /data_srv1.

Nous y créons un volume avec une brique unique.

 
Sélectionnez
gluster volume create VOL srv1:/data_srv1 force
volume create: VOL:  success: please start volume to access data

Nous pouvons voir l'état du volume avec la commande gluster volume info :

 
Sélectionnez
root@srv1:~# gluster volume info

Volume Name: VOL
Type: Distribute
Volume ID: 3f0a379a-921a-4c63-a5cc-7a62c3c39d19
Status: Created
Number of Bricks: 1
Transport-type: tcp
Bricks:
Brick1: srv1:/data_srv1

Nous pouvons constater que le volume est en mode distribué (distribute)

Démarrons ensuite le volume :

 
Sélectionnez
root@srv1:~# gluster volume start  VOL

Nous préparons ensuite un serveur srv2 avec le fichier /data_srv2/fichier2. Il nous faut appairer la nouvelle machine :

 
Sélectionnez
root@srv1:~# gluster peer probe srv2

Puis ajouter la nouvelle brique :

 
Sélectionnez
root@srv1:~# gluster volume add-brick VOL srv2:/data_srv2
volume add-brick: success

Nous pouvons voir le nouvel état du volume :

 
Sélectionnez
root@srv1:~# gluster volume info

Volume Name: VOL
Type: Distribute
Volume ID: 3f0a379a-921a-4c63-a5cc-7a62c3c39d19
Status: Started
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: srv1:/data_srv1
Brick2: srv2:/data_srv2

Si nous montons le volume, nous pourrons voir les deux fichiers fichier1.txt et fichier2.txt. L'arrêt d'une des deux machines fera disparaître les fichiers présents dans le nœud coupé. Le premier accès sera lent, gluster cherchant la machine manquante. Le volume continue de fonctionner, il reste possible d'ajouter des fichiers. Le redémarrage de la machine manquante fera instantanément réapparaître les fichiers inaccessibles.

Créez quelques fichiers pour tester le comportement. J'ai créé plusieurs fichiers nommés fichier3.txt, fichier4.txt etc. Tous restant dans /data-srv1.

Gluster gère cela lui-même et du point de vue extérieur, cela n'a pas d'importance pour l'accès. Lisez cette partie de la documentation pour plus d'informations.

Il est possible de changer la répartition avec la commande rebalance :

 
Sélectionnez
gluster volume rebalance VOL start

Selon le volume de données à traiter, la répartition peut prendre du temps. Il est possible de voir l'état de celle-ci via la commande :

 
Sélectionnez
gluster volume rebalance VOL status

J'ai pu constater que certains fichiers apparaissent en doublon dans les dossiers contenant les briques, ceux-ci restant uniques dans le point de montage glusterfs. Je présume que gluster est suffisamment intelligent pour les conserver tant qu'il y a de la place.

Si vous insérez un fichier dans un dossier faisant partie d'un volume gluster sans passer par le point de montage gluster, celui-ci n'apparaitra pas dans le volume et ne sera ni répliqué, ni distribué.

5-1-5. Test du mode distribué-répliqué

Pour ce mode, je vais repartir sur la configuration précédente : 2 machines en mode distribué que je vais passer en mode distribué-répliqué.

Je vais rajouter deux machines supplémentaires au deux machines déjà présentes de façon à ce que chacune soient répliquées.

Une fois les deux serveurs supplémentaires préparés, une fois les machines appairées, je les intègre au volume :

 
Sélectionnez
gluster peer probe srv3
gluster peer probe srv4
 
Sélectionnez
gluster volume add-brick VOL replica 2 srv3:/data_srv3 srv4:/data_srv4 force

Nous obtenons le résultat suivant :

 
Sélectionnez
Volume Name: VOL
Type: Distributed-Replicate
Volume ID: 8f4d1305-7f28-41eb-bc76-85132c009c51
Status: Started
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: srv1:/data_srv1
Brick2: srv3:/data_srv3
Brick3: srv2:/data_srv2
Brick4: srv4:/data_srv4

L'ajout d'un fichier dans le point de montage du volume glusterfs,point de montage depuis srv1 et donc création du fichier depuis srv1 va générer l'ajout de celui-ci dans /data_srv2 et /data_srv4. Nous avons donc bien la réplication ainsi que la distribution répartie.

Seuls les nouveaux fichiers ou fichiers modifiés après l'ajout des briques bénéficieront de la réplication.

Pour que les tous les fichiers soient répliqués, il suffit d'exécuter la commande rebalance comme vu précédemment.

 
Sélectionnez
gluster volume rebalance VOL start

Je vais me retrouver avec la répartition suivante :

srv1 :fichier1.txt, fichier2.txt

srv2 : fichier2.txt, fichier3.txt

srv3: fichier2.txt

srv4:fichier2.txt, fichier3.txt

5-1-5-1. Simulation de perte de srv2

La manipulation la plus simple est de préparer une nouvelle machine, de lui affecter une nouvelle adresse IP, de l'appairer et d'utiliser replace-brick comme vu précédemment.

Si vous souhaitez garder la même IP, il va falloir effectuer plusieurs opérations.

La difficulté ici est qu'un nouveau serveur n'aura pas le même UUID. Il y aura donc des manipulations supplémentaires à effectuer une fois le serveur préparé.

Il va nous falloir récupérer l'ancien UUID de srv2 :

 
Sélectionnez
root@srv1:~# grep -r uuid= /var/lib/glusterd/peers/* >fichier.txt

Uniquement valable si votre dossier ne contient qu'un seul fichier /var/lib/glusterd/peers/. Si ce n'est pas le cas, il faut identifier celui-ci et exécuter

grep uuid= /var/lib/glusterd/peers/[nom du fichier contenant hostname=srv1] >fichier,txt

Nous transférerons ensuite cet UUID sur le nouvel srv2. Nous insérons ensuite cet UUID dans /var/lib/glusterd/glustered :

 
Sélectionnez
cat fichier.txt >>/var/lib/glusterd/glusterd.info

Nous éditons le fichier afin de fixer l'UUID, puis redémarrons le service :

 
Sélectionnez
/etc/init.d/glusterfs-server restart

Nous appairons ensuite le serveur :

 
Sélectionnez
root@srv2:~# gluster peer probe srv1

Nous redémarrons le service

en appelant la commande gluster pool list, vous verrez les deux machines connectées.

Il faut ensuite synchroniser les volumes.

Depuis srv2, la commande gluster volume status vous retournera :

 
Sélectionnez
No volumes present

Nous synchronisons les volumes avec la commande ;

 
Sélectionnez
root@srv1:~#gluster volume sync srv2 all
sync volume may data inaccessible while the sync is in progress. Do you want to continue ? (y/n)
volume sync success.

A ce stade, les données ne sont pas encore synchronisés.

Mises à jour des méta-données :

Il va nous falloir mettre à jour les méta-données sur le nouveau serveur depuis un serveur actif.

 
Sélectionnez
root@srv1:~# getfattr -n trusted.glusterfs.volume-id /data_srv1

getfattr:suppression des « / »en tête des chemins absolus
# file: data_srv2/
trusted.glusterfs.volume-id=0s8VVsv3xRTa6G41mE+5E1dA==

Il va falloir appliquer le volume id sur srv2 avec la commande :

 
Sélectionnez
setfattr -n trusted.glusterfs.volume-id -v '0s8VVsv3xRTa6G41mE+5E1dA==' /data_srv2

Nous redémarrons ensuite le service.

depuis srv1, nous exécutons :

 
Sélectionnez
gluster volume heal VOL full

5-1-6. Sauvegarder/restaurer

Il me paraît indispensable d'avoir une sauvegarde offline même en cas de système répliqué.

Théoriquement, pour sauvegarder votre volume gluster, vous pouvez :

  • Effectuer une sauvegarde globale depuis un point de montage ;
  • sauvegarder les différentes briques à part de façon à ce que les différentes sauvegardes partielles permettent de reconstituer une sauvegarde globale.

Il me semble plus pertinent d'avoir une sauvegarde globale. Dans le cas contraire, lors de la restauration des données dans un système distribué, l'algorithme ne va pas forcément replacer les fichiers dans la/les même(s) brique(s).

5-1-7. Sécurité

Les serveurs faisant parti d'un pool gluster se reconnaissent via leur UUID. Pour qu'un serveur fasse partie d'un pool, il doit être intégré par un serveur du pool (c'est la commande gluster peer probe que nous avons déjà vu).

Par défaut, n'importe quel client peut se connecter à un volume gluster. Il est possible de restreindre l'accès à certaines IP via la commande :

 
Sélectionnez
gluster volume set VOL auth.allow [adresse IP 1],[adresse IP 2]

Par défaut, le dialogue s'effectue en clair. Il est possible d'établir un dialogue SSL/TLS (documentation ici), celui-ci gérant l'authentification et le cryptage, mais pas l'autorisation. La sécurisation peut bien sûr se faire via un tunnel VPN, authentification et le cryptage étant alors délégué au tunnel VPN.

Comme il n'y a pas de login/password, il ne faut pas exposer directement un point de montage gluster aux utilisateurs. Ce point de montage peut-être partagé par exemple en SMB, c'est le serveur SMB qui s'occupera alors des autorisations d'accès.

5-2. drbd/ocfs2

Nous allons ici cumuler l'utilisation de drbd avec ocfs

5-2-1. drbd

5-2-1-1. Qu'est ce que drbd ?

drbd : Distributed Replicated Block Device permet la réplication de périphériques bloc entre serveurs via le réseau. Il peut être assimilé à du RAID 1 over IP. Il n'y pas de gestion de sécurité. La liaison entre les machines doit donc être sûre.

Image non disponible

5-2-2. Installation de drbd

L'installation se fait simplement par :

 
Sélectionnez
apt-get install drbd-utils

Il va falloir effectuer la configuration du nœud primaire et du nœud secondaire, nous devrons préparer un fichier de configuration en conséquence.

drbd va utiliser une partition en tant que périphérique bloc sur chaque noeud.

Voici un fichier de configuration utilisant les nœuds 192.168.8.1 et 192.168.8.2, sur chacun d'eux, nous utiliserons la partition /dev/sdb1. Ce fichier sera à adapter à votre cas.

fichier /etc/drbd.d/r0,res :

 
Sélectionnez
resource r0 {
  syncer {
   rate 100M ;
 }
 on srv1 {
  device /dev/drbd0 ;
  disk /dev/sdb1 ;
  address 192.168.8.1:7789 :
  meta-disk internal ;
  }
  
  on srv2 {
  device /dev/drbd0 ;
  disk /dev/sdb1 ;
  address 192.168.8.2:7789 :
  meta-disk internal ;
  }
}

Ce fichier devra être recopié sur le second nœud.

Le fichier est relativement simple à comprendre. Nous créons un volume drbd /dev/drbd0 sur chaque nœud.

Nous créons ensiute le volume sur le nœud primaire :

 
Sélectionnez
# drbdadm create-md r0

intialising activiy log
NOT initialializing bitrmap
Writing meta data …
New dbrd meta data block successfully created.

Nous activons ensuite celui-ci :

 
Sélectionnez
# drbdadm up r0

Nous pouvons observer le résultat avec la commande drbd-overview :

 
Sélectionnez
# drbd-overview
0:r0/0 WFConnexion Secondary/Unknown Inconsistent/DUnknown

Nous effectuons ces commandes sur les deux nœuds.

retour de drbd-overview sur second noeud :

 
Sélectionnez
0:r0/0 Connected Secondary/Primary Inconsistent/ Inconsistent

Nous voyons que la connexion est effectuée mais que le « RAID » est inconsistent.

Nous lançons ensuite la synchronisation uniquement depuis le poste maitre (192.168.8.1que nous nommerons srv1) :

 
Sélectionnez
drbdadm -- --overwrite-data-of-peer primary r0

Nous pouvons voir l'évolution de la synchronisation depuis le fichier /proc/drbd :

 
Sélectionnez
version: 8.4.3 (api:1/proto:86-101)
srcversion: 6681A7B41C129CD2CE0624F 
 0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----
    ns:417288 nr:0 dw:0 dr:418200 al:0 bm:25 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:7970004
    [>...................] sync'ed:  5.1% (7780/8188)Mfinish: 0:05:05 speed: 26,080 (26,080) K/sec

Une fois la synchronisation terminée, nous allons passer le second nœud en primaire. Pour cela , nous ajoutons les lignes suivantes dans le bloc ressources du fichier de configuration r0 :

 
Sélectionnez
resource r0 {
  syncer {
   rate 100M ;
 }
 on srv1 {
  device /dev/drbd0 ;
  disk /dev/sdb1 ;
  address 192.168.8.1:7789 :
  meta-disk internal ;
  }
  
  on srv2 {
  device /dev/drbd0 ;
  disk /dev/sdb1 ;
  address 192.168.8.2:7789 :
  meta-disk internal ;
  }
 net {
    allow-two-primaries;
    after-sb-0pri discard-zero-changes;
    after-sb-1pri discard-secondary;
    after-sb-2pri disconnect;
 }
 startup {
    become-primary-on both;
 }
}

Nous recopions le fichier sur le second nœud et redémarrons le service drbd sur les deux machines.

Nous pouvons vérifier l 'état sur les 2 hôtes avec :

 
Sélectionnez
# cat /proc/drbd

version: 8.4.3 (api:1/proto:86-101)
srcversion: 1A9F77B1CA5FF92235C2213 
 0: cs:Connected ro:Primary/Primary ds:UpToDate/Diskless C r-----
    ns:912 nr:0 dw:0 dr:1824 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:8387292

Il n'est pas possible de monter un filesystem dans un volume drbd en mode secondaire.

5-2-2-1. tests

Une fois la synchronisation effectuée, nous créons ensuite un filesytem sur /dev/drbd0 :

 
Sélectionnez
mkfs.ext4 /dev/drbd0

Quelque soit la machine, le filesystem sera présent sur l'autre, le volume drbd étant répliqué.

Nous y créons un fichier de test fchier1.txt après montage du volume drbd dans un point de montage.

Nous montons ensuite /dev/drbd0 sur la seconde machine (srv2), nous voyons bien le fichier fichier1.txt.

Nous ajoutons un fichier fichier2,txt depuis srv2, celui-ci n'apparaît pas sur srv1.

Nous démontons et remontons /le volume sur srv1, Après remontage, nous voyons bien le second fichier.

Explications :

drbd travaille au niveau bloc, pas au niveau FS, nous pouvons l'utiliser en tant que sauvegarde, mais pas pour un double montage. Il reste possible de monter le FS alternativement. Le monter simultanément risque de provoquer une inconsistance au niveau FS.

Pour pallier ceci, nous allons utiliser OCFS2, que nous allons voir dans le prochain chapitre.

5-2-3. OCFS2

5-2-3-1. Qu'est ce qu'OCFS2 ?

Ocfs2 (Oracle Cluster File System) est un système de fichiers sous licence GPL qui permet l'accès concurrent à des fichiers. Ceci nous permettra de résoudre le problème vu dans le chapitre précédent.

5-2-3-2. Installation et paramétrage d'OCFS2

Apt-get install ocfs2-tools

mkfs -t ocfs2 -N 2 -L MYCLOUD /dev/drbd0

création fichier /etc/ocfs2/cluster.conf

node:

ip_port = 7777

ip_address = 192.168.8.1

number = 0

name = srv1

cluster = MYCLOUD

 

node:

ip_port = 7777

ip_address = 192.168.8.2

number = 1

name = srv2

cluster = MYCLOUD

 

cluster:

node_count = 2

name = MYCLOUD

reconfiguration :

dpkg-reconfigure ocfs2-tools

Selection de MYCLOUD pour le démarrage

Image non disponible
Image non disponible

Après reboot, il suffit de monter le volume.

Pour ne pas rebooter il faut redémarrer les services o2cb et ocfs2

mount -t ocfs2 /dev/drbd0 /data

dans fstab :

/dev/drbd0 /data ocfs2 _netdev 0 0

Même opération sur le second poste après coipie du fichier /etc/ocfs2/cluster.conf

Les tests depuis les deux postes sont fonctionnels. Le fichier fichier1,txt créé depuis srv1 est visible sur srv2, et le fichier fichier2,txt créé depuis srv2 est visible dans le dossier /data de srv1.

Simulation de panne, coupure srv1 :

Après arrêt de srv1, après 2 ou 3 secondes apparaît l'erreur suivante dans la console de srv2 :

drbd r0: PingAck did not arrive in time.

et la commande cat /proc/drbd retourne :

version: 8.4.3 (api:1/proto:86-101)

srcversion: 1A9F77B1CA5FF92235C2213

0: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r-----

ns:111 nr:63 dw:232 dr:68351 al:4 bm:1 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:32

Le prochain accès à /data va bloquer un moment, mais le volume restera disponible après un petit moment de patience. L'arrêt ne perturbe pas le volume /data, sauf si la seconde machine est redémarrée, l'arrêt est très long et au reboot, le volume n'est pas remontée une tentative de montage par la commande mount -a va afficher l'erreur :

mount.ocfs2 : I/O Error onc channel while opening device /dev/drbd0

En regardant le contenu du fichier /proc/drbd, je peux voir que le poste est en mode secondary, et ne reconnaît pas le second volume :

version: 8.4.3 (api:1/proto:86-101)

srcversion: 1A9F77B1CA5FF92235C2213

0: cs:WFConnection ro:Secondary/Unknown ds:UpToDate/DUnknown C r-----

ns:0 nr:0 dw:0 dr:912 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:16384

Je passe le serveur en mode primaire pour drbd :

drbdadm primary r0

version: 8.4.3 (api:1/proto:86-101)

srcversion: 1A9F77B1CA5FF92235C2213

0: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r-----

ns:0 nr:0 dw:0 dr:1824 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:16384

Le FS est ensuite montable via :

mount -a

Nous avons donc une méthode pour redémarrer en mode dégradé

Une fois srv1 de base réinstallé, je rajoutes les paquets drbd-utils et ocfs2-tools

apt-get install drbd-utils ocfs2-tools

Depuis srv2, je recopie ensuite les fichiers de configuration

scp /etc/drbd,d/r0.res :/etc/drbd.d/

scp /etc/ocfs2/cluster.conf :/etc/oc2fs/

sur srv1 je lance les commandes :

drbdadm create-md r0

drbdadm up r0

La resynchrnoisation se déclenche immédiatement :

version: 8.4.3 (api:1/proto:86-101)

srcversion: 1A9F77B1CA5FF92235C2213

0: cs:SyncTarget ro:Secondary/Primary ds:Inconsistent/UpToDate C r-----

ns:0 nr:377408 dw:377408 dr:0 al:0 bm:23 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:8009888

[>....................] sync'ed: 4.6% (7820/8188)Mfinish: 0:05:18 speed: 25,160 (25,160) want: 44,920 K/sec

Nous pouvons voir que la machine est en secondaire.

A ce stade, le volume ocfs2 reste non montable.

Je profite du temps de resynchronisation pour effectuer le dpkg-reconfigure, et ajouter l'entrée dans le fstab. Je reboot à la fin de la synchro, cela fonctionne. Vous pouvez vérifier quez la création d'un nouveau fichier est bien reporté sur le second poste.

Ajout troisième poste juste pour la réplication en sauvegarde :

Image non disponible

Excplication stacked drbd à faire

config à changer

dans r0

ajout protocol C ;

ajout nouveau drbd :

resource r0-U {

protocol A;

stacked-on-top-of r0 {

device /dev/drbd10;

address 192.168.8.4 :7788;

}

on srv3 {

device /dev/drbd10;

disk /dev/sdb1;

address 192.168.1.3:7788;

meta-disk internal;

}

}

pour ajouter une seconde ip :

dans fichier /etc/network/interface

iface eth1:0 inet static

démontage du voluem sur les 2 nœuds

drbdadm --stacked create-md r0-U

Found some data

==> This might destroy existing data ! <==

Do you want to Proceed ?

[need to type 'yes' to confirm]

retourne

intialising activiy log

NOT initialializing bitrmap

Writing meta data …

New dbrd meta data block successfully created.

drbdadm --stacked up r0-U

régler après reboot des deux machines :

retour de la commande après succès :

version: 8.4.3 (api:1/proto:86-101)

srcversion: 1A9F77B1CA5FF92235C2213

0: cs:Connected ro:Primary/Primary ds:UpToDate/UpToDate C r-----

ns:60 nr:11292 dw:11272 dr:180 al:1 bm:3 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

10: cs:WFConnection ro:Secondary/Unknown ds:Inconsistent/DUnknown A r----s

ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:523160

drbdadm --stacked primary r0-U

Erreur :

10: State change failed: (-2) Need access to UpToDate data

Command 'drbdsetup-84 primary 10' terminated with exit code 17

Drdbd refuse de promouvoir un volume non consistent en primaire, ce qui est logique.

Installation srv3

copie du fichier de configuration

sur srv3 :

drbdadm create-md r0-U

drbdadm up r0-U

Nous voyons les deux machines en secondary et en inconsistent :

version: 8.4.3 (api:1/proto:86-101)

srcversion: 1A9F77B1CA5FF92235C2213

0: cs:Connected ro:Primary/Primary ds:UpToDate/UpToDate C r-----

ns:64 nr:11292 dw:11276 dr:180 al:1 bm:3 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

10: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent A r-----

ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:523160

Depuis srv3, nous déclarons celui-ci comme incohérent :

drbdadm invalidate r0-U

Cela déclenche une synchronisation immédiate.

version: 8.4.3 (api:1/proto:86-101)

srcversion: 1A9F77B1CA5FF92235C2213

0: cs:Connected ro:Primary/Primary ds:UpToDate/UpToDate C r-----

ns:120 nr:11292 dw:11332 dr:101004 al:1 bm:3 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

10: cs:SyncSource ro:Secondary/Secondary ds:UpToDate/Inconsistent A r-----

ns:100468 nr:0 dw:0 dr:100824 al:0 bm:6 lo:0 pe:1 ua:1 ap:0 ep:1 wo:f oos:422808

[==>.................] sync'ed: 19.6% (422808/523160)K

finish: 0:01:03 speed: 6,688 (6,688) K/sec

Une fois la synchronisation terminée, la commande drbdadm --stacked primary r0-U fonctionne.

Nous remontons ensuite le volume ocfs2 mais avec drbd10 au lieu de drbd0.

Tests de panne

perte du backup srv3

Commme vu précedemment, nous allons avoir un warning de perte de connexion et celle-ci est visible depuis cat /proc/drbd

version: 8.4.3 (api:1/proto:86-101)

srcversion: 1A9F77B1CA5FF92235C2213

0: cs:Connected ro:Primary/Primary ds:UpToDate/UpToDate C r-----

ns:436 nr:11465 dw:11822 dr:525238 al:3 bm:3 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

10: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown A r-----

ns:523324 nr:0 dw:188 dr:525058 al:2 bm:32 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:4

remontage srv3

apt-get install drbd-utils

copie de la configuration

sur srv3 :

drbdadm create-md r0-U

drbdadm up r0-U

Après cette seconde commande, la synchronisation se fait.

Perte de srv2 :

ce cas de figure a déjà été vu

Perte de srv1 :

/data reste toujours dispo depuis srv2.

Remontage serveur

drbdadm create-md r0

drbdadm up r0

la synchronisation de r0 se déclenche immédiatement

Une fois celle-ci effectuée, srv1 apparaît en secondary :

version: 8.4.3 (api:1/proto:86-101)

srcversion: 1A9F77B1CA5FF92235C2213

0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----

ns:0 nr:523224 dw:523224 dr:0 al:0 bm:32 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

Le redémarrage du service drbd nous remet le voume en situation initiale : Primary/Primary

drbdadm --stacked create-md r0

drbdadm --stacked up r0

ne pas oublier de rajouter l'adresse .4

La synchronisation de drbd10 se redéclenche immédiatement.

Une fois celle-ci terminée, drbd10 se retrouve en secondary sur les deux nœuds :

version: 8.4.3 (api:1/proto:86-101)

srcversion: 1A9F77B1CA5FF92235C2213

0: cs:Connected ro:Primary/Primary ds:UpToDate/UpToDate C r-----

ns:523424 nr:523394 dw:1046818 dr:552 al:127 bm:32 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

10: cs:Connected ro:Secondary/Secondary ds:UpToDate/UpToDate A r-----

ns:0 nr:523160 dw:523160 dr:0 al:0 bm:32 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

Il nous reste à promouvoir srv1 en Primary

drbdadm --stacked primary r0-U

remontage de la couche ocfs2

perte de srv1 et srv2 :

montage de srv1

recup configuration

remontage r0 :

drbdadm create-md r0

drbdadm up r0

version: 8.4.3 (api:1/proto:86-101)

srcversion: 1A9F77B1CA5FF92235C2213

0: cs:WFConnection ro:Secondary/Unknown ds:Inconsistent/DUnknown C r----s

ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:523212

Le volume étant inconsistent, drbdadm primary r0 n'est pas possible

drbdadm --stacked create-md r0-U

open(/dev/drbd0) failed: read-only file system

Command 'drbdmeta 10 v08 /dev/srbd0 internal create-md' terminated with exit code 20

drbdadm invalidate r0

0: State change failed: (-15) Need a connection to start verify or resync

operation effectuée depuis srv3

drbdadm invalidate-remote r0

'r0' not defined in your config (for thos host)

drbdadm -- --overwrite-data-of-peer primary r0

version: 8.4.3 (api:1/proto:86-101)

srcversion: 1A9F77B1CA5FF92235C2213

0: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r----s

ns:0 nr:0 dw:0 dr:912 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:523212

drbdadm --stacked create-md r0-U

drbdadm --stacked up r0-U

drbd.d/r0.res:31 : In resourse r0-U, on srv1 srv2 :

IP : 192.168.8.4 not found in this host

Il faut remettre l'adr ip

après redeclenchement de la dernière commande, la synchro s'effectue pour r0.

version: 8.4.3 (api:1/proto:86-101)

srcversion: 1A9F77B1CA5FF92235C2213

0: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r----s

ns:0 nr:0 dw:271676 dr:1268 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:523212

10: cs:SyncTarget ro:Secondary/Secondary ds:Inconsistent/UpToDate A r-----

ns:0 nr:271480 dw:271480 dr:0 al:0 bm:16 lo:0 pe:75 ua:0 ap:0 ep:1 wo:f oos:251680

[=========>..........] sync'ed: 52.4% (251680/523160)K

finish: 0:00:24 speed: 10,252 (7,144) want: 11,000 K/sec

Passage en primaire pour drbd :

drbdadm --stacked primary r0-U

montage des outils ocfs2. Une fois ceux-ci paramétré, il est possible de monter le volume drbd10. Le système est de nouveau opérationnel sur srv1, il nous reste à remonter srv2

remontage de srv2

install de base

apt-get install drbd-utils

copie configuration depuis srv1 :

scp /etc/drbd.d/r0.res :/etc/drbd.d

drbdadm create-md r0

drbdadm up r0

Après la synchronisation, redémarrage du service pour repasser en Primary

réinstallation des outils ocfs2

Tant que srv1 n'est pas synchronisé, le volume reste indisponible.

Utilisation provisoire de srv3 en serveur principal.

Svg fichier r0.res

changement srv1 en srv3 dans la config et son ip

configuration de l'adr .4 sur la machine

6. Install syncything

recup sur https://syncthing.net/ depuis github écrit en go

par défaut interface d'écoute sur 127.0.0.1:8384

modifié dans fichier .config.xml depuis la racine du compte ou tourne le soft

Image non disponible

Avertissement mot de passe :

Image non disponible

Configuration :

Image non disponible

Activer ou non l'https sur la gui

désactivation de la découverte globale et la translation NAT

changement mot de passe :

Image non disponible

Cliquer eznsuite surinterface graphique

Image non disponible

Puis renseigner le champs user et password :

Image non disponible

Suppression du dossier par défaut :

un clic pour afficher le détail des options :

Image non disponible

Clic pour développer, puis appui sur gérer :

Image non disponible
Image non disponible

Nous supprimerons le partage en cliquant sur supprimer en bas à gauche.

Les options :

Nom du partage : Le nom que vous définissez

ID du partage : ne pas toucher

chemin du partage : dossier contenant celui-ci

synchronisé avec : Liste des postes avec qui ils sont synchronisé (vide pour le moment

options avancées :

intervalle d'analyse : impacte la fréquence de synchronisation et donc la bande passante utilisée

type de partage : lecture seule ou lecture écriture

méthode de préservation des fichiers :

pas de préservation

style poubelle :

Les fichiers sont déplacés dans le sous-répertoire .stversions quand ils sont remplacés ou supprimés par Syncthing. Leurs chemins d'accès relatifs y sont recréés si besoin. Il faut indiquer ensuite le nombre de jours de concervation 0 (valeur par défaut) signifie indéfiniment, cela peut donc saturer le disque

suivi simplié de version : Les fichiers sont déplacés dans le sous-répertoire .stversions quand ils sont remplacés ou supprimés par Syncthing. Leurs chemins d'accès relatifs y sont recréés si besoin. On indique ensuite le nombre d'anciennes versions à gharder (5 par défaut)

versions echelonnées : Les seuils de durée suivants définissent le nombre maximum de versions pour chaque fichier : pendant la première heure une version peut être conservée toutes les 30 secondes. Jusqu'à un jour, jusqu'à une version par heure - des versions de la première heure sont alors progressivement effacées pour n'en garder qu'une par heure. Jusqu'à 30 jours, jusqu'à une version par jour - des versions horaires du premier jour sont alors progressivement effacées pour n'en garder qu'une par jour. Au-delà, jusqu'à la limite d'âge, jusqu'à une version est conservée par semaine - des versions journalières du premier mois sont alors progressivement effacées pour n'en garder qu'une par semaine. Il faut ensuite indiquer l'anciennenté maximale (365 jours par défaut). Il est possible d'indiquer un nom de dossier différent pour le versionage.

Gestion externe : géré par une commande externe à syncthing, commande à renseigner.

7. Installation NIS

NIS (Network Information Service) est aussi connu sous le nom de yellow Pages. Il permet de distribuer les différents fichiers de configuration tels que /etc/host, etc/password sur différentes machines via le réseau.

fixation du hostname en cloudsrv1

apt-get install nis

il vous sera demandé le domaine NIS, nous utiliserons cloudsrv

Après une longue attente sur :

.. binding a to YP Server

Il y aura une erreur, normal la configuration n'est pas effectuée.

Nous arrêtons le serveur NIS :

/etc/init.d/nis stop

Avant toute chose, pour sécuriser le service, nous créons un fichier /var/yp/securenets, dans lequel nous n'autorisons que notre serveur :

host 127.0.0.1

Nous modifions ensuite le fichier /etc/default/nis et remplaçons la ligne

NISSERVER=false

par

NISSERVER=master

Nous ajoutons le nom DNS dans le fichier host :

Nous démarrons ensuite le serveur

/etc/init.d/nis start

Nous initialisons ensuite la base de données :

/usr/lib/yp/ypinit -m

Vous devez ensuite entrer la liste des serveurs, terminée par ctrl-D. Nous n'avons que le serveur local actuellement.

Nous modifions ensuite le fichier /etc/nssswitch.con et ajoutons nis en fin des lignes :

passwd: compat nis

group: compat nis

shadow: compat nis

hosts: files dns nis

Pour lister les utilisateurs NIS :

ypcat passwd

ajout serveur secondaire (esclave) :

ajout adr ip serveur secondaire dans /var/yp/securenets sur le serveur principal

ajout entrée serveur principal dans /etc/host serveur secondaire

installation nis sur nouveau poste

modification fichier /etc/default/nis

modification ligne :

NISSERVER=false

par NISSERVER=slave

redémararge server :

/etc/init,d/nis restart

synchronisation :

/usr/lib/yp/ypinit -s cloudsrv1

NIS n'est pas réputé pour être très sécurisé. Il est envisageable de l'utiliser à travers un réseau sécurisé en VLAN en interne ou via un tunnel VPN entre plusieurs sites.

8. ldap

LDAP (Lightweight Directory Access Protocol) est un service d'annuaire faisant référence. Celui-ci permet à la plupart des serveurs (au sens logiciel) d'avoir une base de données centralisée incluant les utilisateurs, éventuellement leur coordonnées, des machines, des ressources, etc. Les Active Directory de Windows Server s'appuient sur LDAP, la plupart des serveurs SMB, serveurs mails, serveurs d'impression, copieurs, peuvent s'authentifier à travers LDAP. Il est possible de s'authentifier sous Linux via LDAP également (ce que nous allons voir).

Parler des schémas

Il est possible d'importer et d'exporter des données depuis un répertoire LDAP via des fichiers .ldif (LDAP Data Interchange Format).

LDAP est à mon avis difficile à prendre en main. C'est par contre la solution pour centraliser une authentification depuis plusieurs briques logicielles différentes. Il est également possible d'avoir un serveur de réplication, ce qui est dans le cadre de ce tutoriel indispensable pour assurer la redondance.

8-1. Installation :

apt-get install slapd

Il vous sera demandé un mot de passe administrateur.

Nous configurons ensuite le service :

dpkg-reconfigure slapd

Le premirer écran vous demande si vous voulez « ometre la configuration », il faut donc répondre « non » pour effectuer celle-ci :

Image non disponible

Nous allons ensuite entrer le « nom de domaine » LDAP. Dansd l'exemple je vais utiliser developpez.com. Il me faudra donc entrer developpez.com.

Image non disponible

Le second écran demande le nom de l'organisation, je rentre « developpez »

Image non disponible

On vous demandera ensuite le mot de passe administrateur, ce qui est normal car nous créons une nouvelle base. L'écran suivant demande le format de base de données à utiliser, nous laissons le choix proposé : MDB.

Image non disponible

L'écran suivant demande si il faut supprimer la base en cas de désinstallation de LDAP, et si il faut déplacer l'ancienne base. Comme celle-ci est vide, nous pouvons répondre « non ».

Il sera ensuite demandé si il faut autoriser le protocole LDAPv2, ne l'autorisez-pas, son utilisation n'étant pas recommandé.

Pour éviter de devoir utiliser des lignes de commandes intégrant des fichiers .ldif pour l'ajout d'utilisateurs, nous allons utiliser LAM (LDAP Account Manager) qui permet de piloter la base LDAP depuis un navigateur Web..

Pour installer LAM : apt-get install ldap-account-manager

Vous pourrez ensuite accéder à l'interface de LAM via http://[adresse ip]/lam. Vous aurez l'écran suivant :

Image non disponible

Passons à la configuration. Nous cliquons sur « LAM configuration » en haut à gauche :

Image non disponible
Image non disponible

Il va nous falloir aller dans « edit general settings » :

Image non disponible

Le mot de passe par défaut est « lam », la première chose à faire est de le changer :

Image non disponible

Ceci va changer le mot de passe de l'édition de profil.Nous allons ensuite régléer le profil lam par défaut pour se connecter à notre base ldap.

Nous retournons ensuite dans le menu LAM Configuration et collectionnons « Edit server profiles » :

Image non disponible

Il nous faut entrer LAM, nous accédons ensuite aux réglage du profil, par défaut sur le serveur ldap locahost.

Image non disponible

Il va nous falloir effectuer les réglages suivants :

Tree suffix: remplacer dc=yourdomain,dc=org par dc=developpez,dc=com, le domaine que nous avions choisi.

Language Setting : choix du français

List of valid Users : remplacer cn=Manager,dc=my-domain,dc=com par cn=admin,dc=developpez,dc=com

Puis le mot de passe

admin est l'utilisateur administrateur par défaut sur un serveur ldap.

Avant de valider, il va falloir effectuer des modifications dans l'onglet type de compte :

Image non disponible

Il faut modifier les champs dc= des suffixes LDAP, pour les utilisateurs, les groupes, les machines, et les domaines Samba. Nous n'utiliserons que les suffixes utilisateurs (ou=People) et groupe (ou=group), mais fixons correctement les entrées machines et Samba, en cas d'utilisation ultérieure.

Une fois tous ces éléments entrés, vous pourrez vous connecter :

Image non disponible

Lors de la première connexion, vous verrez l'écran suivant :

Image non disponible

Si les éléments sont corrects, cliquez sur Créer. Vous aurez le message « Modifications effectuées avec succès ».

Il va nous falloir créer un groupe, c'est un pré-requis pour pouvoir créer des utilisateurs :

Image non disponible
Image non disponible

Je crée un groupe nommé « users ».

Image non disponible

Nous voyons que l'opération est réussie, mais ne voyons pas le groupe. Un clic sur Groupes rafraîchira la page et nous verrons le groupe.

Image non disponible

Nous créons ensuite un utilisateur « test ».

Image non disponible

Beaucoup de champ sont à notre disposition, nous n'utiliserons que le champ nom (champ obligatoire)

Nous allons permettre plus de tard une authentification Unix depuis ce compte, il va falloir cliquer sur le bouton Unix à gauche. Vous verrez que le champ répertoire utilisateur est positionné sur /home/$user le chemin normal des comptes utilisateurs sans une arborescence Unix, $user étant bien entendu remplacé par le nom de l'utilisateur. Si vous ne souhaitez pas qu'un utilisateur puisse lancer un shell, il faudra positionner le champ shell de connexion sur false.

Il vous faudra ensuite cliquer sur le bouton définir le mot de passe pour positionner celui-ci.

Image non disponible

Et ensuite, dernière étape, enregistrer le compte en cliquant sur le bouton Sauvegarder.

En cliquant sur Vue arborescente en haut, vous aurez comme le nom l'identique, une vue arborescente, mais vous pourrez également importer et exporter des fichiers .ldif, et exporter également aux formats csv et vcard.

Authentification Linux depuis la base LDAP

PAM (Pluggable Authentication Modules) est l'API utilisé sous Linux permet de déléguer l'authentification à plusieurs services différents (LDAP, nis, bases de données au format Bekerley, etc.). Cette API nous permettra d'effectuer une authentification transparente avec un utilisateur d notre annuaire LDAP. Nous nous authentifirons avec un compte LDAP avec la simple commande login. nssswitch (Name Service Switch) va travailler en collaboration avec le service PAM pour se substituer ou modifier les fichiers de configuration password, shadow, hosts, aliases.

Nous aurons besoin pour cela du paquet libnss-ldapd et ses dépendances.

apt-get install libnss-ldapd

Le premier écran demandera l'adresse du serveur ldap, nous remplaçons l'URL ldapi:// par ldap;//127.0.0.1

Image non disponible

Sur le prochain écran, il faudra entrer le dn: utilisé , dans notre exemple : dc=developpez,dc=com

Image non disponible

Le paquet vous demande les services à activer, il faudra au minimum cocher password et shadow.

 
Image non disponible

Une fois la configuration effectuée, vous pourrez vous loguer depuis la console avec le compte « test ».

Une fois logué, vous vous trouverez à la racine. Le dossier utilisateur n'a pas été créé. lam ne créé pas automatiquement celui-ci. Dans le cadre de notre tutoriel, cela est très bien. Si vous souhaitez gérer cela, consulter la documentation de lam.

Si vous changez le mot de passe avec la commande passwd, celui mettra bien à jour le compte ldap :

: passwd

(current) LDAP Password :

Nouveau mot de passe :

Retapez le nouveau mot de passe :

Passwd : le mot de passe a été mis à jour avec succès

:

Nous pouvons observer qu'il n'y a pas de compte test dans /etc/passwd.

Si vous utilisez la commande adduser, vous pourrez constater que le compte est créée en local et non dans la base LDAP. Pour ajouter un utilisateur LDAP, il faut utiliser la commande lpadadd avec en paramètre un fichier ldif, d'ou l'interet d'utiliser lam.

9. replication mysql

activation log

modification /etc/mysql/my.cnf

activer :

server-id = 1 (chaque serveur devra avoir un id différent)

log-bin = décommentage

j'en profite pour modifier la ligne :

bind-addess = 127.0.0.1

par :

bind-addess = 0.0.0.0

warning : c'est soit 127,0,0,1 soit toutes les adresses, la sécurisation doit être effectuée via le firewall.

reboot mysql

cela génère une erreur :

Image non disponible

Après recherche sur internet, l'ajout de binlog_format = MIXED

reboot mysql

fonctionnement rétabli

préparation nouveau serveur.

mysql -u root -p

Enter password :

Welcome to the MYSQL monitor. Commands end with ; or \g.

Your MySQL connection id is 94

Server version: 5.5.59-0+deb8u1-log (Debian)

Copyright ( c ) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registerd trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

myslq >

GRANT REPLICATION SLAVE ON *.* TO ‘srv1_to_srv2'@'192.168.8.2' IDENTIFIED BY 'motdepasse';

Query OK, 0 rows affected (0.00 sec)

FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)

FLUSH TABLES WITH READ LOCK;

Query OK, 0 rows affected (0.00 sec)

mysql> SHOW MASTER STATUS;

+------------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000002 | 68145 | | |

+------------------+----------+--------------+------------------+

1 row in set (0.00 sec)

mysql> exit

Bye

note : garder les infos pour plus tard

mysqldump -all-databases -u root -p >export.sql

Enter password:

- Warning: Skipping the data of table mysql.event. Specify the -events option explicitly.

Transfert fihcier sur le srv

import sur srv2 :

mysql -u root -p <export,sql

Enter password:

levée du verrou sur srv1 :

mysql > UNLOCK TABLES ;

Query OK, 0 rows affected (0.00 sec)

sur srv2, je modifie

bind-address et server-id

redémarrage mysql sur srv2

activation réplication :

mysql> STOP slave;

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> CHANGE MASTER TO MASTER_HOST='192.168.8.1',

-> MASTER_USER='srv1_to_srv2',

-> MASTER_PASSWORD='root',

-> MASTER_LOG_FILE='mysql-bin.000002',

-> MASTER_LOG_POS=68145;

Query OK, 0 rows affected (0.10 sec)

mysql> START slave;

Query OK, 0 rows affected (0.00 sec)

mysql> SHOW SLAVE STATUS \g

+----------------------------------+-------------+--------------+-------------+---------------+------------------+---------------------+-------------------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+-------------------------------+---------------+---------------+----------------+----------------+-----------------------------+------------------+

| Slave_IO_State | Master_Host | Master_User | Master_Port | Connect_Retry | Master_Log_File | Read_Master_Log_Pos | Relay_Log_File | Relay_Log_Pos | Relay_Master_Log_File | Slave_IO_Running | Slave_SQL_Running | Replicate_Do_DB | Replicate_Ignore_DB | Replicate_Do_Table | Replicate_Ignore_Table | Replicate_Wild_Do_Table | Replicate_Wild_Ignore_Table | Last_Errno | Last_Error | Skip_Counter | Exec_Master_Log_Pos | Relay_Log_Space | Until_Condition | Until_Log_File | Until_Log_Pos | Master_SSL_Allowed | Master_SSL_CA_File | Master_SSL_CA_Path | Master_SSL_Cert | Master_SSL_Cipher | Master_SSL_Key | Seconds_Behind_Master | Master_SSL_Verify_Server_Cert | Last_IO_Errno | Last_IO_Error | Last_SQL_Errno | Last_SQL_Error | Replicate_Ignore_Server_Ids | Master_Server_Id |

+----------------------------------+-------------+--------------+-------------+---------------+------------------+---------------------+-------------------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+-------------------------------+---------------+---------------+----------------+----------------+-----------------------------+------------------+

| Waiting for master to send event | 192.168.8.1 | srv1_to_srv2 | 3306 | 60 | mysql-bin.000003 | 19312 | mysqld-relay-bin.000003 | 19458 | mysql-bin.000003 | Yes | Yes | | | | | | | 0 | | 0 | 19312 | 36625 | None | | 0 | No | | | | | | 0 | No | 0 | | 0 | | | 1 |

+----------------------------------+-------------+--------------+-------------+---------------+------------------+---------------------+-------------------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+-------------------------------+---------------+---------------+----------------+----------------+-----------------------------+------------------+

1 row in set (0.00 sec)

réplication master-master

activation log sur srv2

application même méthode :

mysql> GRANT REPLICATION SLAVE ON *.* TO 'srv2_to_srv1'@'192.168.8.1' IDENTIFIED BY 'root';

Query OK, 0 rows affected (0.00 sec)

mysql> SHOW MASTER STATUS;

+------------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000001 | 265 | | |

+------------------+----------+--------------+------------------+

1 row in set (0.00 sec)

mysql> quit

sur srv1 :

mysql> STOP slave;

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> CHANGE MASTER TO

-> MASTER_HOST='192.168.8.2',

-> MASTER_USER='srv2_to_srv1',

-> MASTER_PASSWORD='root',

-> MASTER_LOG_FILE='mysql-bin.000001',

-> MASTER_LOG_POS=265;

Query OK, 0 rows affected (0.06 sec)

mysql> START slave;

Query OK, 0 rows affected (0.00 sec)

copie des fichiers de nextcloud depuis srv1 vers srv2 via scp

warning penser à changer les droits en www-data

installation des paquets necessaires à savoir php5-curl, memcached, php5-memcached

ecran de connexion :

Image non disponible

Suite au clic :

Image non disponible

Ceci va rajouter une entrée dans le tableau trusted_domains de config/config.php de srv1.

Il nous faut donc recopier ce fihchier modifié dans srv2

ensuite :

Internal Server Error

The server encountered an internal error and was unable to complete your request.

Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report.

More details can be found in the server log.

retour d'expérience nextcloud :

http://linuxfr.org/users/partagetonsavoir/journaux/retour-d-experience-nextcloud

10. owncloud

OwnCloud est écrit en php, il donc installable sur n'importe quel serveur supportant PHP.

Il Fournit :

  • un service de stockage de fichiers accessible depuis un navigateur
  • une application de synchronisation de données pour Windows, Mac OS, Linux, et pour les et pour les smartphones IOS et Android,
  • un partage de document par envoi de lien (avec ou sans mot de passe)
  • une gestion de calendrier depuis l'interface web et compatible avec le protocole CalDAV pour le partage avec les logiciels de messagerie ou de gestion de calendriers,
  • une gestion de contacts compatible CardDAV.

10-1. installation :

Owncloud requiert minimum php 5.6 et nécessite php-curl et php-intl. Pour la base de donnés, vous aurez le choix entre sqlite, mySQL/MariaDB, et PostgreSQL

il suffit de décompresser l'archive zip et de placer les fichiers dans /var/www (ou de configurer un fichier virtualhost comme vous le souhaitez).

Les fichiers devront avoir les droits www-data.

Warning : attention au fichier ,htaccess non visible, il y a également un fichier .user .ini

Au premier démarrage vous aurez l'écran suivant :

Image non disponible

Owncloud requiert les paquets php5-curl et php5-intl

apt-get install php5-curl php5-intl

redémarrage du service

/etc/init.d/apache2 restart

Vous aurez ensuite l'écran suivant :

Image non disponible

Le site vous demandera :

un nom d'utilisateur administrateur

un mot de passe

le chemin de stockage des données (par sécurité, ne pas laisser dans un sous-dossier du site, si vous le faites Owncloud vous préviendra). Dans notre cas le stockage se fera dans /data/oc. (/data étant le point de montage du système OCFS2). Le dossier oc devra appartenir à www-data.

les informations de connexion à la base de données

nom d'utilisateur

mot de passe

nom de la base

nom d'hôte /adresse IP

La base devra être créé avant.

Si vous utilisez phpmyadmin, je vous conseilles de changer l'URL pour cacher le service et de bien évidemment pas utiliser de compte root et restreindre les droits au minimal :

Une fois la préparation terminée, vous aurez l'écran de connexion ou vous devrez entrer le login préalablement choisi :

10-2. 1ère connexion

Image non disponible

Vous aurez ensuite le premier écran de connexion (il faudra fermer la fenêtre d'accueil) :

Image non disponible

Vous serez ensuite dans l'interface principale :

Image non disponible

Les fichiers des utilisateurs sont stockés dans data/[nom d'utilisateur]/files et data/[nom d'utilisateur]/files_versions pour les anciennes versions.

La configuration se trouve dans le fichier config/config.php. Vous pourrez, en cas de changement de serveur par exemple, y changer les réglages tels que l'adresse du serveur, le dossier de stockage des données, le nom et les éléments de connexion de la base de données

10-3. Utilisation de l'interface web

Voici l'écran de l'interface :

Image non disponible

Vous pouvez uploader un fichier (le terme affiché est téléverser), créer un dossier en appuyant sur le plus.

Sur la partie gauche, vous avez accès aux raccourcis :

  • favoris
  • documents récents
  • documents partagés avec vous
  • documents partagés avec d'autres

Pour mettre un document/dossier en favori, il faut sélectionner celui-ci, et cocher l'étoile (en 1).

Cliquer sur un dossier va vous permettre de rentrer dedans, cliquer sur un fichier va le télécharger.

Vous voyez votre chemin d'accès en 2, un clic sur le pictogramme « maison » vous ramènera à la racine.

L'icône en 3 va ouvrir un écran de détail, vous permettant d'ajouter un commentaire, partager avec d'autres utilisateurs :

Image non disponible

Vous verrez alors la notation partagé. Vous pouvez autoriser l'utilisateur de modifier le document, le repartager ou non, ou supprimer le partage. Vous pourrez également voir et gérer les partages depuis le client logiciel.

Vous aurez également accès aux différentes versions d'un document. Vous pourrez soit les télécharger, soit les restaurer.

A chaque mise à jour, les versions sont ajustées comme ceci :

Les 10 premières secondes, conservation d'une version toutes les 2 secondes

la 1ère minute, conservation d'une version toutes les 10 secondes

La 1ère heure, conservation d'une version toutes les minutes

Les 1ère 24 heures, conservation d'une version toutes les heures

Les 30 premiers jours, conservation d'une version par jour

Au delà de 30 jours, conservation d'une version par semaine

Si l'espace occupé dépasse les 50 %, le nombre de version est diminué jusqu'à descendre en dessous de cette occupation.

Un fichier supprimé restera accessible depuis la corbeille accessible en bas à gauche.

10-4. administration

L'accès à l'interface d'administration s'effectue par l'icône dentée en haut à droite :

Image non disponible

Vous aurez les options suivantes :

  • Paramètres
  • utilisateurs
  • aide
  • se déconnecter

L'onglet paramètres vous donnera accès à :

Personnel/Réglage stockage externe (désactivé par déafuat) : donnant accès à la gestion d'espaces de stockage local, Dropbbox, google Drive, SMB, S3, etc.

image cran de la documentation :

Image non disponible

Personnel/Sécurité : ajout de domaines approuvés (accès à Owncloud depuis URL différentes,), les sessions ouvertes, la génération de code d'accès pour applications externes

Administration/Applications : permet de voir les applications activées et de les désactiver, en cliquant sur l'le bouton « Show disabled apps », ; il est possible de les lister et aussi de les désinstaller.

Info : Après l'installation, seules les applications par défaut sont visibles, nous verrons plus tard comment ajouter celles qui ne sont pas présentes.

Administration/Généraux : Vous verrez tout d'abord ici des avertissements sur la sécurité et la configuration. J'ai un avertissement sur le verouillage translationnel (lien : https://doc.owncloud.org/server/10.0/admin_manual/configuration/files/files_locking_transactional.html), une recommandation sur l'utilisation de cron pour les tâches planifiées (configurable en bas de page), sur l'utilisation de http au lieu d'https, et sur la non présence de cache mémoire (memcached recommandé lien : https://doc.owncloud.org/server/10.0/admin_manual/configuration/server/oc_server_tuning.html)

Ces avertissements ne sont pas bloquants

Administration/stockage externe : le stockage externe est désactivé par défaut et activable ici, (voir Personnel/stockage externe).

Administration/chiffrement : désactivé parr défaut. Par défaut les fichiers ne sont pas chiffrés.

Pour plus d'infos consultez la documentation (lien doc : https://doc.owncloud.org/server/10.0/admin_manual/configuration/files/encryption_configuration.html)

Administration/Partage : Vous trouverez ici les autorisations de partages ou repartages pour vos utilisateurs. Vous trouverez aussi les réglages concernant la fédération de serveurs owncloud. (partage d'annuaire d'utilisateurs entre plusieurs serveurs owncloud)

Par défaut, il n'y a pas d'accès à l'agenda ou calendrier, nous verrons cela dans les chapitres suivants.

10-5. Gestion des utilisateurs

Pour accéder à la gestion des utilisateurs, il faut cliquer sur « utilisateurs » en dessous de Paramètres. Vous aurez alors accès à la gestion de ceux-ci :

Image non disponible

Pour créer un utilisateur, il suffit d'entrer son login et son mot de passe. Vous pouvez créer des groupes, ceux-ci permettant de régler par exemple les droits de partage entre utilisateurs. Vous pouvez aussi mettre un quota disque à ceux-ci. Attention à ne pas mettre un utilisateur dans le groupe « admin » si il ne doit pas l'être.

En cliquant sur l'icone roue dentelée en bas à gauche, vous aurez des options supplémentaires, tels que l'affichage de l'adresse mail, le dossier de données, ou la provenance de l'utilisateur (base interne, connexion externe telle que LDAP).

Suppression :

La suppression d'un compte se fait sans demande de confirmation et supprime immédiatement ses fichiers.

10-5-1. Authentification via LDAP

Si vous avez créé un serveur LDAP, vous pourrez l'utiliser pour authentifier vos utilisateurs sur ownCloud. Il vous faudra ajouter l'applet LDAP Integration dans la catégorie Integration.

Une fois l'applet installée, il faudra la configurer dans le menu Paramètres.

Dans le premier écran « Serveur », il faudra entrer :

L'adresse du serveur : ldap://127.0.0.1, puis cocher « Détecter le port » (cela ne fonctionnera pas si vous avez changé le port par défaut)

le nom d'utilisateur : dans notre cas cn=admin,dc=developpez,dc=com

le mot de passe

le DN de base : dans notre cas dc=developpez,dc=com

Une fois les éléments entrés, cliquez sur « Tester le DN de base », si vos informations sont correctes, vous aurez « configuration OK » :

Image non disponible

Cliquez ensuite sur poursuivre, puis basculez sur l'onglet attributs de login.

Selectionnez ensuite Autres attributs : cn :

Image non disponible

Info : Ne maîtrisant pas LDAP, les réglages ne sont peut-être pas optimaux, mais sont fonctionnels.

Nous allons ensuite dans les réglages avancés :

Image non disponible

Dans les paramètres du répertoire (2), je saisis en suite cn dans le champ nom d'affichage de l'utilisateur. Si ce réglage n'est pas positionné, le nom d'utilisateur qui apparaîtra sera l'uuid de celui-ci (champ LDAP entryUUID).

Dans les Attributs spéciaux (3), je saisis également cn dans le champ règle de nommage du répertoire utilisateur, pour que le dossier contenant les fichiers de l'utilisateur ner soit pas l'uuid.

En cas de suppression du compte dans ownCloud, ceci n'impactera pas le compte LDAP, ce qui est logique, car d'autres services peuvent être utilisés par ce compte LDAP.

En cas de suppression du compte LDAP, l'utilisateur ne pourra plus s'identifier, mais son compte reste présent dans la liste des utilisateurs ownCloud ainsi que ses données. Il suffit de recréer le compte dna sl'annuaire LDAP avec le même nom pour récupérer l'accès.

Conclusion :

Il est beaucoup plus simple de gérer l'authentification directement depuis dans a base ownCloud, mais cela vous obligera à maintenir plusieurs bases d'authentification en cas d'autres services tels qu'un serveur mail.

10-6. Sauvegarde :

Pour sauvegarder ownCloud, il vous faut sauvegarder le dossier des données (dossier data) ainsi que la base de données.

10-7. Connexion client Windows :

Image non disponible

La connexion au serveur se fait en HTTP/HTTPS :

Image non disponible

Nous avons la demande d'authentification :

Image non disponible

Une fois les identifiants saisies, vous aurez les réglages par défaut :

Image non disponible

La première partie permet le choix de récupération de ce qu'il y a déjà sur le serveur, la seconde concerne les dossiers à synchroniser, ou de préciser ce que vous souhaitez synchroniser. Ce sera par défaut le dossier ownCloud stocké dans votre profil utilisateur, vous pouvez changer celui-ci.

Une fois la connexion effectuée, vous aurez un icône dans la barre des tâches, ouvrant le tableau de bord Owncloud. Vous serez par défaut sur l'onglet activités, montrant les derniers fichiers synchronisés.

Image non disponible

L'icône paramètres donne accès aux réglages tels que le démarrage automatique d'owncloud quand le système démarre, et aussi l'accès à une liste des fichiers exclus.

Info : par défaut, les fichiers cachés ne sont pas synchronisé, il faut entrer dans la liste des exclusion pour cocher leur synchronisation.

Image non disponible

L'icône réseau permet d'indiquer un proxy si ceci est nécessaire, et de limiter l'usage de la bande passante si vous le souhaitez.

L'icône utilisateur vous permet de changer les réglages de synchronisation, forcer la mise à jour de la synchronisation. Une autre option intéressante : la possibilité de synchroniser plusieurs comptes, dans ce cas, Owncloud va créer par défaut un autre dossier (owncloud2 dans mon cas, l'application va créer un dossier avec le nom incrémenté ). Vous aurez ensuite un nouvel icône concernant le nouvel utilisateur.

Image non disponible

Pour jouter un compte, il faut cliquer sur le bouton compte, puis ajouter un nouveau compte. Vous pouvez à partir de ce bouton vous déconnecter ou supprimer le compte.

Info : le dossier de synchronisation n'est pas supprimé.

10-7-1. Partage de documents :

Nous avons vu comment partager un document depuis l'interface Web. Il est également possible de le faire depuis l'explorateur de fichier.

Image non disponible
Image non disponible

L'onglet lien public permet de générer un lien accessible depuis une URL (avec ou sans mot de passe, et possibilité d'expiration), si l'administrateur vous le permet :

Image non disponible

Vous pourrez envoyer directement le lien par mail, le copier dans le presse papier, etc.

Le destinataire aura un lien tel que celui-ci :

Image non disponible

Warning :

Un test de partage de fichier rtf m'a provoqué l'affichage du contenu du fichier rtf comme un document texte, alors qu'un document avec extension inconnu va afficher un simple logo de document générique.

Versions des documents :

Il n'est pas possible d'accéder aux versions des documents de depuis le client, l'accès doit se faire depuis l'interface Web.

Suppression de documents :

La suppression d'un document déclenche sa suppression immédiate sur le serveur (enfin son déplacement vers la corbeille). Le document est restaurable depuis la corbeille Windows/Linux/Mac OS. Vous perdrez par contre le versioning.

10-8. Agenda partagé

Pour avoir accès à l'agenda, il faut commencer par activer l'applet. L'accès aux applets ce fait par le market (accès réservé aux administrateurs) :

Image non disponible

Vous aurez alors accès aux applets rangées par catégorie.

Image non disponible

L'applet calendrier se trouve dans « Productivity » :

Image non disponible

Il suffit de cliquer sur l'image de l'applet, puis sur le bouton installer.

Image non disponible

Une fois celle-ci installée, elle est disponible dans le menu en haut à gauche :

Image non disponible
Image non disponible
Image non disponible

Vous pourrez ajouter des participants en appuyant sur plus:

Image non disponible

Vous pouvez déplacer un rendez-vous par simple glisser-déplacer.

10-8-1. Installation dans Thunderbird :

Nous aurons besoin pour commencer du lien caldav généré par Owncloud. Nous le trouverons en cliquant sur les … à coté du nom de l'agenda :

Image non disponible

Dans mon cas : http://192.168.56.116/remote.php/dav/calendars/test/personal/

menu fichier->nouveau->agenda

Sélectionner ensuite agenda sur le réseau :

Image non disponible

Il faudra ensuite sélectionner caldav et entrer l'URL indiquée dans l'interface Web.

Image non disponible
Image non disponible

Après un nom d'agenda, Thunderbird vous demandera le login et le mot de passe :

Image non disponible


Votre agenda est ensuite disponible :

Image non disponible

Info :Pensez à faire attention à l'agenda ou est stocké l'événement, il y a toujours un agenda local. Mettez l'agenda en ligne par défaut. Vous pouvez désactiver l'agenda local si vous ne l'utilisez pas.

En cas de décopnnexion réseau, si le mode hors connexion a bien été coché lors de la création de l'aganda dans Thunderbird (par défaut), vous pourrez toujours modifier l'agenda. Le premier accès génèrera un lag.

10-8-2. calendrier avec outlook :

Il nous faut installer l'application caldav synchroniser disponible sur sourceforge :

https://sourceforge.net/projects/outlookcaldavsynchronizer/

requiert Visuel C 2010 redistributable et .net framework 4,5 qu'il va installer automatiquement si nécessaire.

Une fois l'installation terminée un onglet supplémentaire apparaitra dans Outllok :

Image non disponible
Image non disponible

Ceci va ouvrir la fenêtre de gestion des profils à partir de laquelle nous allons ajouter un profil :

Image non disponible

Nous cliquons sur le plus pour avoir l'écran suivant :

Image non disponible

Nous restons sur « généroque » et entrons ensuite les paramètres :

Image non disponible

Je sélectionne le dossier de synchronisation du calendrier et rentre les paramètres :

Image non disponible
Image non disponible
Image non disponible
Image non disponible

Vous pouvez régler le sens de la synchronisation (bi-directionel, outlook vers serveur, serveur vers Outlook) et la fréquence de celle-ci.

Note : contrairement à Thunderbird, la synchronisation se fait depuis l'agenda local (on peut sélectionner le dossier de synchronisation , il est donc possible de créer un agenda spécifique dans le fichier outlook par défaut ou dans un fichier outlook secondaire présent dans le profil.

10-8-3. Utilisation depuis Mac OS X ou IOS avec l'application calendrier (anciennement nommée ical)

L'application Calendrier synchronise les agendas sur la solution cloud d'Apple icloud via le protocole caldav. Il suffit donc de se connecter via caldav sur le serveur Owncloud.

Warning : L'URL de connexion pour calendrier est différente que pour les autres serveurs.

Adresse normale :

http://192.168.56.121/remote.php/dav/

Adresse pour IOS/OS X :

http://192.168.56.121/remote.php/dav/principals/users/test/

Pour créer, le compte, il faut aller soit dans fichier/comptes de l'application calendrier, soit dans préférences systèmes/comptes Internet.

Vous aurez alors l 'écran suivant, ou il faudra sélectionner « compte CalDAV » :

Image non disponible

Si vous passez par le menu pomme/préférences systèmes/comptes internet, il faudra selectionner « autre » sur le premier écran pour voir accès à caldav (ou carddav pour les contacts)

Il faudra ensuite selectionner manuel dans le champ « type de compte », entrer les identifiants et l'URL de connexion :

Image non disponible

Vous pourrez ensuite régler la fréquence de synchronisation, ainsi que les réglages d'affichage de l'agenda (heure début-fin de journée, etc.) :

Image non disponible

10-9. Partage de contacts :

Il faut tout d'abord tout comme pour l'agenda, activer l'application dans Owncloud :

Image non disponible

Tout comme pour l'agenda, un icône supplémentaire sera ajouté dans la barre de gauche (Image non disponible)

Tout comme pour le calendrier, nous récupérons le lien (carddav) :

Image non disponible

Dans mon exemple : http://192.168.56.116/remote.php/dav/addressbooks/users/test/contacts/

10-9-1. thunderbird :

Nous allons utiliser l'extension Thunderbird Cardbook que nous téléchargeons et installons depuis le menu outils -->modules supplémentaires. Après redémarrage, il faudra intégrer les carnet d'adresses de base à Cardbook.

Image non disponible
Image non disponible

Il faudra ensuite ouvri l'écran cardbook par menu outil->cardbook, puis cliquer sur le bouton droite de la souris  :

Image non disponible

Il faudra ensuite choisir « nouveau carnet d'adresse », selectionner « carnet d'adressee distant » puis renseigner l'URL et les logins/mot de passe via le protocole carddav.

Image non disponible

Info : Il vous faudra cliquer sur valider pour pouvoir cliquer sur suivant. Vous pourrez changer les réglages de synchronisation depuis l'icone Préférences, puis l'onglet synchronisation.

Image non disponible

Avec notamment le délai de synchronisation :

Image non disponible

10-9-1-1. Outlook :

Pour Outlook, nous avons déjà ce qu'il faut : outlookcaldavdsynchronizer., utilisé pour la synchronisation du calendrier. Il suffit de dupliquer le profil existant via l'icône depuis le gestionnaire de profil.

Image non disponible

Bien que son nom n'évoque que caldav, elle est bien compatible carddav.

Puis de changer le dossier Outlook pour sélectionner les contacts, et changer l'URL par le lien carddav

10-9-2. application Apple contacts pour OS X et IOS

Le principe est le même que pour calendrier, il faut ajouter un compte CardDAV en prenant le lien  :

http://192.168.56.121/remote.php/dav/addressbooks/users/test/contacts/

10-10. Panne serveur

En cas de perte totale du serveur, si celui-ci n'a pas de redondance et se retrouve vide, lors de la reconnnexion du poste du poste client, celui-ci vous affichera l'avertissement suivant :

Image non disponible

Le client owncloud détecte que le compte distant est vide et vous propose soit de conserver ceux-ci, soit de les effacer. Si vous choisissez « conserver », ceux-ci seront resynchronisés sur le serveur, si vous choisissez « supprimer », les fichiers locaux seront supprimés. Les dossiers locaux et distants seront alors synchrones.

Pour l'agenda Outlook, le clic sur l'icône Image non disponible « clear cache of selected profile » des profils CalDAV Synchronizer a permis de refaire une synchronisation.

10-11. Nextcloud

Nextcloud est un fork de Owncloud. Il est relativement facile de migrer d'owncloud vers Nextcloud, mais ceci n'a pas été testé dans ce tutoriel. Le processus d'installation est le même. Nextcloud a également un client pour les postes informatiques et smartphones. L'installation se fait de la même façon.

Les différences constatées :

Les applets fournies sont différentes mais les applets principales telles que la gestion de calendriers et contacts sont présents dans les deux produits.

Les options de configurations diffèrent mais sont globalement similaires. Une fois installées, l'accès aux applications agenda et carnet d'adresses se fait directement depuis des icônes dans la barre du haut, alors qu'avec Owncloud il faut cliquer sur le menu Image non disponible :

Image non disponible

Les paragraphes concernant la synchronisation de l'agenda et des contacts restent valables.

Personalisation :

Netxcloud permet la personnalisation de l'interface ainsi que la page de connection.

Exemple simple avec le logo DVP :

Image non disponible

Owncloud possède une extension « Owncloud X Enterprise Theme », mais payante. Celle-ci n'a pas été testée :

Image non disponible

Authentification via les comptes locaux :

Nextcloud comporte un plugin nomme « Unix User Backend » permettant l'authentification avec des comptes locaux. Une fois le plugin activé, si vous ajoutez un utilisateur via la commande adduser, celui-ci apparaîtra dans les utilisateurs Nextcloud. Par contre, l'ajout d'un utilisateur dans l'interface nextcloud n'est par répercutée dans les comptes utilisateurs du système. L'interface Nextcloud présente les comptes contenant dans sa base de données, et des autres sources d'authentification géré.