4 votes

La connexion rsync se ferme juste après une heure

Je lance une commande dans cron qui effectue une rsync entre deux centres de données. Le taux de connexion entre les centres de données est d'environ 1Mbps. J'ai remarqué que la rsync échoue systématiquement autour de 2,7 Go à 2,9 Go de données transférées, ce qui pourrait représenter environ une heure ou plus sur ladite connexion. Je sais qu'auparavant, notre pare-feu est configuré pour fermer les connexions inactives ouvertes depuis plus d'une heure.

Mais est-ce qu'un transfert rsync serait vraiment considéré comme inactif ? Que puis-je faire pour résoudre ce problème ?

Erreur :

rsync: connexion fermée de manière inattendue (2987596424 octets reçus jusqu'à présent) [récepteur]

erreur rsync : erreur dans le flux de données du protocole rsync (code 12) à io.c(605) [récepteur=3.0.9]

rsync: connexion fermée de manière inattendue (523 octets reçus jusqu'à présent) [générateur]

rsync error: error in rsync protocol data stream (code 12) at io.c(605) [générateur=3.0.9]

J'ai déjà ceci dans mon ~/.ssh/config (mais peut-être que ces valeurs doivent être augmentées ?) :

Host *
  ServerAliveInterval 60
  ServerAliveCountMax 15

4voto

F. Hauri Points 969

Connexion réseau en veille pendant le transfert rsync :

Oui, rsync pourrait rester silencieux pendant la lecture du disque et quand il n'y a pas de paquets à envoyer...

Vous avez dit. notre pare-feu est configuré pour fermer les connexions inactives ouvertes depuis plus d'une heure mais rien n'a été mentionné à propos de la durée d'inactivité continue.

Le processus rsync des deux extrémités, lit des fichiers entiers pour rechercher les différences entre les paquets, basées sur des sommes de contrôle précédemment calculées.

Tant qu'il n'y a pas de différence entre les fichiers des deux extrémités, il peut ne pas y avoir d'échange entre les deux extrémités tant que des différences ne sont pas trouvées.

Il y a un petit graphique représentant une seule exécution de rsync entre mon bureau et sa sauvegarde :

Traçage du trafic réseau rsync

Où nous pouvons voir quelques secondes écoulées sans données:

TEMPS                  BLOCS           OCTETS
                        EN  SORTIE    EN    SORTIE
...
28 juil 2013 15:00:07   449   41   23443 1526403
28 juil 2013 15:00:08     0    0       0       0
28 juil 2013 15:00:09     0    0       0       0
28 juil 2013 15:00:10   143  182   21348 1123986
28 juil 2013 15:00:11   112  142    6966  523326
28 juil 2013 15:00:12    31   30    1942    1890
28 juil 2013 15:00:13    30   28    1853   88038
28 juil 2013 15:00:14     0    0       0       0
28 juil 2013 15:00:15    57   66    3954   38301
...

Solution de contournement :

Comme solution de contournement, vous pouvez utiliser le partage ssh basé sur les sockets :

Exécutez d'abord un simple ssh pour établir un socket et une connexion pendante

ssh -M -o ControlPath=$HOME/.ssh/socket_test destHost ping -n localhost

Puis dans une autre fenêtre :

rsync -e 'ssh -e none -S $HOME/.ssh/socket_test' /src/file destHost:/dst/file

De cette manière, une seule connexion sera utilisée pour les deux sessions ssh. Le ping assurera (beaucoup) de trafic continu, puis rsync pourra fonctionner tranquillement, utilisant la même connexion réseau.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X