Recherche de site Web

Comment synchroniser deux serveurs Web/sites Web Apache à l'aide de Rsync


Il existe de nombreux didacticiels disponibles sur le Web pour mettre en miroir ou effectuer une sauvegarde de vos fichiers Web avec différentes méthodes. Je crée ici cet article pour ma future référence et j'utiliserai ici une commande très simple et polyvalente de Linux. pour créer une sauvegarde de votre site Web. Ce tutoriel vous aidera à synchroniser les données entre vos deux serveurs Web avec « Rsync ».

Le but de la création d'un miroir de votre serveur Web avec Rsync est que si votre serveur Web principal tombe en panne, votre serveur de sauvegarde peut prendre le relais pour réduire les temps d'arrêt de votre site Web. Cette façon de créer une sauvegarde de serveur Web est très bonne et efficace pour les petites et moyennes entreprises Web.

Avantages de la synchronisation des serveurs Web

Les principaux avantages de la création d'une sauvegarde de serveur Web avec rsync sont les suivants :

  1. Rsync synchronise uniquement les octets et blocs de données qui ont changé.
  2. Rsync a la capacité de vérifier et de supprimer les fichiers et répertoires du serveur de sauvegarde qui ont été supprimés du serveur Web principal.
  3. Il prend en charge les autorisations, les propriétés et les attributs spéciaux lors de la copie des données à distance.
  4. Il prend également en charge le protocole SSH pour transférer des données de manière cryptée afin que vous soyez assuré que toutes les données sont en sécurité.
  5. Rsync utilise une méthode de compression et de décompression lors du transfert de données qui consomme moins de bande passante.

Comment synchroniser deux serveurs Web Apache

Passons à la configuration de rsync pour créer un miroir de votre serveur Web. Ici, j'utiliserai deux serveurs.

Serveur principal
  1. Adresse IP : 192.168.0.100
  2. Nom d'hôte : webserver.example.com
Serveur de sauvegarde
  1. Adresse IP : 192.168.0.101
  2. Nom d'hôte : backup.example.com

Étape 1 : Installer l'outil Rsync

Ici, dans ce cas, les données du serveur Web de webserver.example.com seront reflétées sur backup.example.com. Et pour ce faire, nous devons d'abord installer Rsync sur les deux serveurs à l'aide de la commande suivante.

[root@tecmint]# yum install rsync        [On Red Hat based systems]
[root@tecmint]# apt-get install rsync    [On Debian based systems]

Étape 2 : Créez un utilisateur pour exécuter Rsync

Nous pouvons configurer rsync avec l'utilisateur root, mais pour des raisons de sécurité, vous pouvez créer un utilisateur non privilégié sur le serveur Web principal, c'est-à-dire webserver.example.com pour exécuter rsync.

[root@tecmint]# useradd tecmint
[root@tecmint]# passwd tecmint

Ici, j'ai créé un utilisateur « tecmint » et attribué un mot de passe à l'utilisateur.

Étape 3 : tester la configuration de Rsync

Il est temps de tester votre configuration rsync sur votre serveur de sauvegarde (c'est-à-dire backup.example.com) et pour ce faire, veuillez taper la commande suivante.

[root@backup www]# rsync -avzhe ssh [email :/var/www/ /var/www
Exemple de sortie
[email 's password:

receiving incremental file list
sent 128 bytes  received 32.67K bytes  5.96K bytes/sec
total size is 12.78M  speedup is 389.70

Vous pouvez voir que votre rsync fonctionne désormais parfaitement et synchronise les données. J'ai utilisé « /var/www » pour transférer ; vous pouvez modifier l'emplacement du dossier en fonction de vos besoins.

Étape 4 : Automatisez la synchronisation avec la connexion sans mot de passe SSH

Maintenant, nous en avons terminé avec les configurations rsync et il est maintenant temps de configurer un cron pour rsync. Comme nous allons utiliser rsync avec le protocole SSH, ssh demandera une authentification et si nous ne fournissons pas de mot de passe pour cron, cela ne fonctionnera pas. Afin que Cron fonctionne correctement, nous devons configurer des connexions SSH sans mot de passe pour rsync.

Ici, dans cet exemple, je le fais en tant que root pour préserver également les propriétés des fichiers, vous pouvez également le faire pour d'autres utilisateurs.

Tout d'abord, nous allons générer une clé publique et privée avec les commandes suivantes sur le serveur de sauvegardes (c'est-à-dire backup.example.com).

[root@backup]# ssh-keygen -t rsa -b 2048

Lorsque vous entrez cette commande, veuillez ne pas fournir de phrase secrète et cliquez sur Entrée pour Phrase secrète vide afin que rsync cron n'ait pas besoin de mot de passe pour synchroniser les données.

Exemple de sortie
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
9a:33:a9:5d:f4:e1:41:26:57:d0:9a:68:5b:37:9c:23 [email 
The key's randomart image is:
+--[ RSA 2048]----+
|          .o.    |
|           ..    |
|        ..++ .   |
|        o=E *    |
|       .Sooo o   |
|       =.o o     |
|      * . o      |
|     o +         |
|    . .          |
+-----------------+

Maintenant, nos clés Public et Privée ont été générées et nous devrons la partager avec le serveur principal afin que le serveur Web principal reconnaisse cette machine de sauvegarde et lui permette de se connecter sans demander de mot de passe lors de la synchronisation des données.

[root@backup html]# ssh-copy-id -i /root/.ssh/id_rsa.pub [email 

Essayez maintenant de vous connecter à la machine avec « ssh ‘[email ‘ et enregistrez-vous .ssh/authorized_keys.

[root@backup html]# [email 

Maintenant, nous en avons fini avec le partage des clés. Pour en savoir plus sur la Connexion SSH sans mot de passe, vous pouvez lire notre article à ce sujet.

  1. Connexion sans mot de passe SSH en 5 étapes faciles

Étape 5 : Planifier Cron pour automatiser la synchronisation

Configurons un cron pour cela. Pour configurer un cron, veuillez ouvrir le fichier crontab avec la commande suivante.

[root@backup ~]# crontab –e

Il ouvrira le fichier /etc/crontab pour le modifier avec votre éditeur par défaut. Ici, dans cet exemple, j'écris un cron pour l'exécuter toutes les 5 minutes afin de synchroniser les données.

*/5        *        *        *        *   rsync -avzhe ssh [email :/var/www/ /var/www/

Les commandes cron et rsync ci-dessus synchronisent simplement « /var/www/ » du serveur Web principal vers un serveur de sauvegarde dans chaque 5 minutes. Vous pouvez modifier la configuration de l'heure et de l'emplacement du dossier en fonction de vos besoins. Pour être plus créatif et personnaliser avec les commandes Rsync et Cron, vous pouvez consulter nos articles plus détaillés sur :

  1. 10 commandes Rsync pour synchroniser des fichiers/dossiers sous Linux
  2. 11 exemples de planification Cron sous Linux