Maison  >  Article  >  Opération et maintenance  >  Introduction à la méthode de synchronisation temps réel de deux serveurs sous Linux

Introduction à la méthode de synchronisation temps réel de deux serveurs sous Linux

巴扎黑
巴扎黑original
2017-08-22 13:13:584439parcourir

Supposez les exigences suivantes :

Supposez deux serveurs :

192.168.0.1 Le serveur source a le répertoire /opt/test/

192.168.0.2 Le serveur cible a le répertoire /opt/bak/test/

Le but de l'implémentation est de garder un certain répertoire de fichiers des deux serveurs synchronisé en temps réel

Méthode d'implémentation : obtenue grâce à la combinaison de rsync +inotify-tools

Préparation :

Tout d'abord, ajoutez une relation de confiance aux deux machines. La méthode spécifique a été présentée dans l'article précédent

Afficher les détails : Ajouter une relation de confiance. sous Linux sans connexion par mot de passe

Besoin d'installer un logiciel :

1. Logiciel de synchronisation rsync

Doit être installé à la fois sur le serveur source et sur le serveur cible

Serveur source : C'est un client rsync, non requis Configuration

Serveur cible : C'est un serveur rsync Vous devez configurer le contenu dans /etc/rsyncd.conf

2. Outil inotify-tools

Cet outil est destiné à la surveillance des fichiers en temps réel. L'outil nécessite la prise en charge du noyau du système d'exploitation Linux. La prise en charge du noyau nécessite au moins la version 2.6.13

Pour vérifier si le système d'exploitation prend en charge. dessus, effectuez ce qui suit :

uname -r Afficher la version

Retour :

    2.6.32-358.6.1.el6.x86_64

ce qui signifie que la version 2.6.32 est supérieure à 2.6.13 et est prise en charge.

Exécution :

    ll /proc/sys/fs/inotify
    total 0
    -rw-r--r-- 1 root root 0 Oct 18 12:18 max_queued_events
    -rw-r--r-- 1 root root 0 Oct 18 12:18 max_user_instances
    -rw-r--r-- 1 root root 0 Oct 18 12:18 max_user_watches

S'il y a trois sorties, cela signifie qu'inotify est pris en charge par défaut et vous pouvez installer l'outil inotify-tools

Si ce n'est pas le cas. pris en charge, vous devez utiliser une nouvelle version de Linux. Si la version du système d'exploitation

répond aux exigences, elle peut être installée.

Après avoir installé inotify-tools, les deux fichiers suivants seront générés dans le répertoire d'installation correspondant :

    ll /usr/local/bin/
    total 88
    -rwxr-xr-x 1 root root 44327 Oct 10 15:32 inotifywait
    -rwxr-xr-x 1 root root 41417 Oct 10 15:32 inotifywatch

Cela signifie que l'installation est réussie.

Remarque : Inotify doit être installé sur le serveur source, et inotify n'a pas besoin d'être installé sur le serveur cible.

3. Scripts associés :

Créez un nouveau script sur le serveur source :

inotify_bak.sh

    #!/bin/bash
    src=/opt/test/
    /usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,delete,create,attrib $src |  while read file
    do
          /usr/bin/rsync -arzuq $src 192.168.0.1::www/
          echo "  ${file} was rsynced" >>/opt/soft/log/rsync.log 2>&1
    done

Accordez l'autorisation d'exécution. : chmod +x inotify_bak.sh

Ensuite, exécutez : nohup inotify_bak.sh et mettez-le en arrière-plan pour l'exécution

4 À propos du démarrage

Serveur cible : démarrez d'abord le service d'arrière-plan rsync : /usr/bin/rsync --daemon

Serveur source : Exécutez inotify_bak.sh &

Test :

Créez de nouveaux répertoires et fichiers dans le répertoire du serveur source, le script inotify_bak.sh le détectera et le synchronisera avec le répertoire pertinent du serveur cible

Vous pouvez consulter le fichier journal : /opt/soft/log/rsync.log Le La commande est la suivante : observez la situation de synchronisation en temps réel.

    tail -f  /opt/soft/log/rsync.log

Résolution d'erreur :

/usr/local/bin/inotifywait : erreur lors du chargement des bibliothèques partagées : libinotifytools.so.0 : impossible d'ouvrir le fichier objet partagé : aucun fichier ou répertoire de ce type

C'est parce que le fichier de la bibliothèque est introuvable, créez simplement un lien symbolique

ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn