Synchronisation temps réel et bidirectionnelle de dossiers distants

Le
Vincent Besse
Bonjour,

je cherche, comme le sujet l'indique, Í  mettre en place une synchro de
dossiers entre 2 VPS. C'est pas une sauvegarde mais bien une
réplication des dossiers, quand un fichier est modifié sur un des
serveurs cette modification doit se propager sur l'autre en (quasi)
temps-réel, et ce dans les deux sens.

Syncthing est alléchant, mais s'il existe des solutions sans interface
graphique j'aimerais autant.

Merci pour vos conseils avisés,
Vincent
  • Partager ce contenu :
Vos réponses Page 1 / 2
Trier par : date / pertinence
NoSpam
Le #26573313
Bonjour
Le 10/05/2021 Í  15:35, Vincent Besse a écrit :
Bonjour,
je cherche, comme le sujet l'indique, Í  mettre en place une synchro de
dossiers entre 2 VPS. C'est pas une sauvegarde mais bien une
réplication des dossiers, quand un fichier est modifié sur un des
serveurs cette modification doit se propager sur l'autre en (quasi)
temps-réel, et ce dans les deux sens.
Syncthing est alléchant, mais s'il existe des solutions sans interface
graphique j'aimerais autant.

Je vous laisse adapter les variables. Sur le serveur distant 'sudo
rsync' indique que l'utilisateur moi a les droits (visudo) d'executer
rsync en mode root sans mot de passe.
# Options
# -a preservve owner, rights, timestamp, ...
# -r recursive (needed for files-from
# -R relative paths
# -P partial and progress (not needed in production)
# -z compression during transfer
$rsync -azRPrv --rsync-path='sudo rsync' -e 'ssh -p22 -i
/home/moi/.ssh/id_ed25519'
    --delete --exclude-from=/etc/files.list.excluded --delete-excluded
    --files-from=/etc/files.list / $server:$remote_path
À mettre dans cron toutes les x minutes|heures|1/4h|...
--
Daniel
ca
Le #26573315
Bonjour,
idem, dans un seul sens ;)
(maitre -> esclave)
Yann
Le 10/05/2021 Í  15:35, Vincent Besse a écrit :
Bonjour,
je cherche, comme le sujet l'indique, Í  mettre en place une synchro de
dossiers entre 2 VPS. C'est pas une sauvegarde mais bien une
réplication des dossiers, quand un fichier est modifié sur un des
serveurs cette modification doit se propager sur l'autre en (quasi)
temps-réel, et ce dans les deux sens.
Syncthing est alléchant, mais s'il existe des solutions sans interface
graphique j'aimerais autant.
Merci pour vos conseils avisés,
Vincent
Sébastien Dinot
Le #26573320
BERTRAND Joël a écrit :
Sinon, en directionnel, il y a unison

J'utilise Unison depuis des années et j'en suis très satisfait modulo le
très gros problème que tu signales ensuite. Mais je pense qu'il ne
répond pas au besoin exprimé puisque non temps réel.
Mais quelque soit la solution envisagée, la synchronisation
bidirectionnelle pose un véritable problème : quid des fichiers modifiés
des 2 cÍ´tés ?
Dans le contexte dans lequel j'utilise Syncthing, le problème ne se pose
quasiment pas puisque mon épouse travaille sur l'un ou l'autre des PC,
mais pas les deux en même temps. Elle est elle-même le verrou
d'exclusion (sauf Í  imaginer une modification hors ligne du même fichier
faite sur les deux PC, mais lÍ ). :)
Mais dans le cas de 2 serveurs, que se passe-t-il si un même fichier est
modifié sur les deux ?
En fait, je réalise qu'il faut en savoir un peu plus sur le contexte
d'utilisation pour apporter la bonne réponse.
Sébastien
--
Sébastien Dinot,
http://www.palabritudes.net/
Ne goͻtez pas au logiciel libre, vous ne pourriez plus vous en passer !
Sébastien Dinot
Le #26573321
Bonjour,
Vincent Besse a écrit :
Syncthing est alléchant, mais s'il existe des solutions sans interface
graphique j'aimerais autant.

Je pense que Syncthing est vraiment la solution adaptée Í  ce besoin.
Quant Í  son IHM, il s'agit d'une simple interface web nécessaire Í  la
déclaration des volumes partagés et Í  l'enrÍ´lement. Il n'est pas
nécessaire de l'exposer via un serveur web pour l'utiliser. Un tunnel
SSH permet d'y avoir accès Í  distance.
Je me suis livré Í  un petit retour d'expérience sur cet outil il y a un
mois :
https://www.palabritudes.net/2021/04/04/syncthing-la-synchro-se-fait-oublier.html
Sébastien
--
Sébastien Dinot,
http://www.palabritudes.net/
Ne goͻtez pas au logiciel libre, vous ne pourriez plus vous en passer !
Vincent Besse
Le #26573324
On Mon, 10 May 2021 15:59:06 +0200
NoSpam
Bonjour

[...]
Je vous laisse adapter les variables. Sur le serveur distant 'sudo
rsync' indique que l'utilisateur moi a les droits (visudo) d'executer
rsync en mode root sans mot de passe.
# Options
# -a preservve owner, rights, timestamp, ...
# -r recursive (needed for files-from
# -R relative paths
# -P partial and progress (not needed in production)
# -z compression during transfer
$rsync -azRPrv --rsync-path='sudo rsync' -e 'ssh -p22 -i
/home/moi/.ssh/id_ed25519'
    --delete --exclude-from=/etc/files.list.excluded --delete-excluded
    --files-from=/etc/files.list / $server:$remote_path
À mettre dans cron toutes les x minutes|heures|1/4h|...
--
Daniel

Je veux bien accepter quelques secondes de latence et les éventuels
temps de transfert, mais je suis pas sͻr que lancer un rsync toutes les
minutes soit bien pertinent. Et est-ce qu'on peut vraiment faire du
bidirectionnel avec?
Merci,
Vincent
Vincent Besse
Le #26573325
On Mon, 10 May 2021 16:59:06 +0200
Sébastien Dinot
Dans le contexte dans lequel j'utilise Syncthing, le problème ne se pose
quasiment pas puisque mon épouse travaille sur l'un ou l'autre des PC,
mais pas les deux en même temps. Elle est elle-même le verrou
d'exclusion (sauf Í  imaginer une modification hors ligne du même fichier
faite sur les deux PC, mais lÍ ). :)
Mais dans le cas de 2 serveurs, que se passe-t-il si un même fichier est
modifié sur les deux ?
En fait, je réalise qu'il faut en savoir un peu plus sur le contexte
d'utilisation pour apporter la bonne réponse.

C'est "tout simplement" pour mettre en place une continuité de
services, essentiellement web mais pas que, sur deux serveurs, avec un
soupçon de DNS failover. En principe le deuxième serveur devrait être
très peu utilisé sauf évidemment carence du premier.
J'avais pas pensé Í  la possibilité d'un fichier modifié sur les deux en
même temps. J'ai encore un peu de réflexion Í  mener :-)
Merci,
Vincent
Erwan David
Le #26573326
Le 10/05/2021 Í  17:34, Vincent Besse a écrit :
Je veux bien accepter quelques secondes de latence et les éventuels
temps de transfert, mais je suis pas sͻr que lancer un rsync toutes les
minutes soit bien pertinent. Et est-ce qu'on peut vraiment faire du
bidirectionnel avec?
Merci,
Vincent


Pas avec rsync. Pour du bidirectionel, il faut voir avec quelque chose
comme unison
Vincent Besse
Le #26573327
On Mon, 10 May 2021 18:01:05 +0200
BERTRAND Joël
Vincent Besse a écrit :
On Mon, 10 May 2021 16:59:06 +0200
C'est "tout simplement" pour mettre en place une continuité de
services, essentiellement web mais pas que, sur deux serveurs, avec un
soupçon de DNS failover. En principe le deuxième serveur devrait être
très peu utilisé sauf évidemment carence du premier.
J'avais pas pensé Í  la possibilité d'un fichier modifié sur les deux en
même temps. J'ai encore un peu de réflexion Í  mener :-)

Dans ce cas, ma solution de raid1 over iSCSI est pertinente. Tes deux
serveurs sont en permanence synchronisés et des scripts (Í  base de ping)
décident lequel des deux doit être actif.
Le schéma que j'avais, c'était un truc du genre :
+--- serveur 1 -+-- raid5
| |
IP publique |iSCSI+hearbeat
| |
+--- serveur 2 -+-- raid5

Ca travaille au niveau block device? Il me faudrait auquel cas avoir
les données Í  synchroniser sur des partitions dédiées et je suis pas
forcément maÍ®tre de ça. Je vais quand même creuser un peu cette piste
et aussi DRDB...sait-on jamais.
Il faudrait que je redémarre ces machines pour extraire les scripts de
gestion. C'est dans le domaine du possible, mais pas très rapidement...
Si je démarre des T1000, je sans que ma femme va rÍ¢ler, ça fait un
boucan de tous les diables ;-)

Je cherche Í  synchroniser des données, pas Í  désynchroniser un
couple :-)
Vincent
Daniel Caillibaud
Le #26573329
Le 10/05/21 Í  17:40, ""
Bonjour,
il y a un mode synchrone sur DRBD, Í  travers des tunnels ssh ce serait
envisageable?

Attention aux perfs, le mode synchrone peut les détériorer de manière très sensible.
Par ailleurs, je sais pas trop ce qu'il se passe si un des deux serveurs tombent, ou s'ils ne
se voient plus pendant un moment.
J'avais Í  une époque fait un script avec inotify, le serveur réagissait Í  chaque modif d'un
fichier pour l'envoyer Í  l'autre, mais c'était finalement trop compliqué et j'ai abandonné
l'idée de synchro en temps réel (le but était un infra plus résistante et elle se retrouvait
finalement plutÍ´t plus fragile).
Pour le besoin d'un serveur bis qui peut reprendre rapidement en cas de défaillance du premier,
drdb async semble une bonne solution, mais il y a pas mal d'autres trucs Í  gérer (quand
basculer, comment, que faire quand le premier revient, comment éviter le yoyo, etc.).
La HA (haute dispo) reste complexe Í  mettre en place, faut bien mesurer l'investissement
(surtout en temps), les conséquences (fragilité induite par la complexité ajoutée vs
résistance aux pannes), les probas qu'un bug dans la HA provoque une coupure de service (ou des
datas incohérentes) vs la proba d'un crash hardware, etc.
Sur les 5 dernières années 100% des pannes que j'ai eues (3 de mémoires) étaient des pannes
réseau, o͹ on a finalement décidé d'attendre que l'hébergeur règle le pb plutÍ´t que de basculer
(avec Í  chaque fois une coupure, de 10min Í  qq heures).
Et pour les micro pannes réseau (pendant qq secondes|minutes deux serveurs ne se voient plus,
mais ils restent tous les deux joignables, au moins pour une partie des clients) il vaut mieux
ne rien faire (l͠ o͹ une HA pourrait lancer une bascule, avec toujours un risque de perte de
synchro).
--
Daniel
La sagesse, c'est d'avoir des rêves suffisamment grands pour
ne pas les perdre de vue lorsqu'on les poursuit.
Oscar Wilde
NoSpam
Le #26573330
Le 10/05/2021 Í  17:34, Vincent Besse a écrit :
On Mon, 10 May 2021 15:59:06 +0200
NoSpam
Bonjour

[...]
Je vous laisse adapter les variables. Sur le serveur distant 'sudo
rsync' indique que l'utilisateur moi a les droits (visudo) d'executer
rsync en mode root sans mot de passe.
# Options
# -a preservve owner, rights, timestamp, ...
# -r recursive (needed for files-from
# -R relative paths
# -P partial and progress (not needed in production)
# -z compression during transfer
$rsync -azRPrv --rsync-path='sudo rsync' -e 'ssh -p22 -i
/home/moi/.ssh/id_ed25519'
    --delete --exclude-from=/etc/files.list.excluded --delete-excluded
    --files-from=/etc/files.list / $server:$remote_path
À mettre dans cron toutes les x minutes|heures|1/4h|...
--
Daniel

Je veux bien accepter quelques secondes de latence et les éventuels
temps de transfert, mais je suis pas sͻr que lancer un rsync toutes les
minutes soit bien pertinent.

Cela dépend des données engendrées entre les synchro.
Et est-ce qu'on peut vraiment faire du
bidirectionnel avec?

Non, j'avais cru comprendre que c'était pour un backup au cas ou.
Nous utilisons ce principe sur des serveurs dans 2 DC différents via un
VPN. La bascule se fait via une IP failover qu'il suffit de rediriger au
moment nécessaire.
--
Daniel
Poster une réponse
Anonyme