Vyhledávání na webu

Jak synchronizovat dva webové servery/weby Apache pomocí Rsync


Na webu je k dispozici mnoho výukových programů pro zrcadlení nebo zálohování vašich webových souborů různými metodami, zde vytvářím tento článek pro mou budoucí referenci a zde budu používat velmi jednoduchý a všestranný příkaz Linuxu pro vytvoření zálohy vašeho webu. Tento tutoriál vám pomůže synchronizovat data mezi vašimi dvěma webovými servery pomocí „Rsync“.

Účelem vytvoření zrcadla vašeho webového serveru pomocí Rsync je, že pokud váš hlavní webový server selže, váš záložní server může převzít kontrolu a zkrátit prostoje vašeho webu. Tento způsob vytvoření zálohy webového serveru je velmi dobrý a efektivní pro malé a střední webové firmy.

Výhody synchronizace webových serverů

Hlavní výhody vytvoření zálohy webového serveru pomocí rsync jsou následující:

  1. Rsync synchronizuje pouze ty bajty a bloky dat, které se změnily.
  2. Rsync má schopnost zkontrolovat a odstranit ty soubory a adresáře na záložním serveru, které byly odstraněny z hlavního webového serveru.
  3. Stará se o oprávnění, vlastnictví a speciální atributy při vzdáleném kopírování dat.
  4. Podporuje také protokol SSH pro přenos dat šifrovaným způsobem, takže budete mít jistotu, že všechna data jsou v bezpečí.
  5. Rsync používá metodu komprese a dekomprese při přenosu dat, která spotřebovává menší šířku pásma.

Jak synchronizovat dva webové servery Apache

Pokračujme nastavením rsync pro vytvoření zrcadla vašeho webového serveru. Zde budu používat dva servery.

Hlavní server
  1. IP adresa: 192.168.0.100
  2. Název hostitele: webový server.example.com
Záložní server
  1. IP adresa: 192.168.0.101
  2. Název hostitele: backup.example.com

Krok 1: Nainstalujte nástroj Rsync

Zde v tomto případě budou data webového serveru webserver.example.com zrcadlena na backup.example.com. A abychom tak mohli učinit, musíme nejprve nainstalovat Rsync na oba servery pomocí následujícího příkazu.

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

Krok 2: Vytvořte uživatele pro spuštění Rsync

Můžeme nastavit rsync s uživatelem root, ale z bezpečnostních důvodů můžete vytvořit neprivilegovaného uživatele na hlavním webovém serveru, tj. webserver.example.com pro spuštění rsync.

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

Zde jsem vytvořil uživatele „tecmint“ a přiřadil uživateli heslo.

Krok 3: Otestujte nastavení Rsync

Je čas otestovat nastavení rsync na záložním serveru (tj. backup.example.com) a zadat následující příkaz.

[root@backup www]# rsync -avzhe ssh [email :/var/www/ /var/www
Ukázkový výstup
[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

Můžete vidět, že váš rsync nyní funguje naprosto dobře a synchronizuje data. K přenosu jsem použil „/var/www“; umístění složky můžete změnit podle svých potřeb.

Krok 4: Automatizujte synchronizaci pomocí SSH Passwordless Login

Nyní jsme s nastavením rsync hotovi a nyní je čas nastavit cron pro rsync. Vzhledem k tomu, že budeme používat rsync s protokolem SSH, bude ssh žádat o ověření a pokud neposkytneme heslo ke cronu, nebude fungovat. Aby cron fungoval hladce, musíme pro rsync nastavit bezheslové ssh přihlášení.

Zde v tomto příkladu to dělám jako root, abych zachoval vlastnictví souborů, můžete to udělat i pro alternativní uživatele.

Nejprve vygenerujeme veřejný a soukromý klíč s následujícími příkazy na serveru záloh (tj. backup.example.com).

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

Když zadáte tento příkaz, nezadávejte přístupové heslo a klikněte na Enter pro Vyprázdnit přístupové heslo, takže rsync cron nebude potřebovat žádné heslo pro synchronizaci dat.

Ukázkový výstup
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 +         |
|    . .          |
+-----------------+

Nyní byl vygenerován náš Veřejný a Soukromý klíč a budeme jej muset sdílet s hlavním serverem, aby hlavní webový server rozpoznal tento zálohovací stroj a umožnil mu přihlášení bez požadavku na heslo při synchronizaci dat.

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

Nyní se zkuste přihlásit do počítače pomocí „ssh '[email ‘“ a přihlásit .ssh/authorized_keys.

[root@backup html]# [email 

Nyní jsme se sdílením klíčů hotovi. Chcete-li se dozvědět více podrobností o SSH password less login, můžete si přečíst náš článek o něm.

  1. Přihlaste se pomocí SSH bez hesla v 5 snadných krocích

Krok 5: Naplánujte automatickou synchronizaci Cron

Nastavíme k tomu cron. Chcete-li nastavit cron, otevřete soubor crontab pomocí následujícího příkazu.

[root@backup ~]# crontab –e

Otevře se soubor /etc/crontab, který můžete upravit pomocí výchozího editoru. Zde V tomto příkladu píšu cron, který jej spouští každých 5 minut a synchronizuje data.

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

Výše uvedený příkaz cron a rsync jednoduše synchronizuje „/var/www/“ z hlavního webového serveru na záložní server v každém 5 minut. Konfiguraci času a umístění složky můžete změnit podle svých potřeb. Chcete-li být kreativnější a přizpůsobit si pomocí příkazů Rsync a Cron, můžete se podívat na naše podrobnější články na adrese:

  1. 10 Rsync příkazů pro synchronizaci souborů/složek v Linuxu
  2. 11 Příklady plánování Cron v Linuxu