Поиск по сайту:

Как синхронизировать два веб-сервера/веб-сайта Apache с помощью Rsync


В Интернете доступно очень много руководств по зеркалированию или резервному копированию ваших веб-файлов различными методами. Здесь я создаю эту статью для дальнейшего использования, а здесь я буду использовать очень простую и универсальную команду Linux. для создания резервной копии вашего веб-сайта. Это руководство поможет вам синхронизировать данные между двумя веб-серверами с помощью «Rsync».

Цель создания зеркала вашего Веб-сервера с помощью Rsync заключается в том, что в случае сбоя вашего основного веб-сервера его может взять на себя резервный сервер, чтобы сократить время простоя вашего веб-сайта. Этот способ создания резервной копии веб-сервера очень хорош и эффективен для малого и среднего веб-бизнеса.

Преимущества синхронизации веб-серверов

Основные преимущества создания резервной копии веб-сервера с помощью rsync заключаются в следующем:

  1. Rsync синхронизирует только те байты и блоки данных, которые изменились.
  2. Rsync имеет возможность проверять и удалять те файлы и каталоги на резервном сервере, которые были удалены с основного веб-сервера.
  3. Он заботится о разрешениях, владельцах и специальных атрибутах при удаленном копировании данных.
  4. Он также поддерживает протокол SSH для передачи данных в зашифрованном виде, поэтому вы будете уверены, что все данные в безопасности.
  5. Rsync использует метод сжатия и распаковки при передаче данных, который потребляет меньшую пропускную способность.

Как синхронизировать два веб-сервера Apache

Давайте продолжим настройку rsync для создания зеркала вашего веб-сервера. Здесь я буду использовать два сервера.

Главный сервер
  1. IP-адрес: 192.168.0.100
  2. Имя хоста: webserver.example.com.
Резервный сервер
  1. IP-адрес: 192.168.0.101
  2. Имя хоста: backup.example.com.

Шаг 1. Установите инструмент Rsync

В этом случае данные веб-сервера webserver.example.com будут зеркально отображены на backup.example.com. И для этого сначала нам нужно установить Rsync на обоих серверах с помощью следующей команды.

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

Шаг 2. Создайте пользователя для запуска Rsync.

Мы можем настроить rsync с пользователем root, но по соображениям безопасности вы можете создать непривилегированного пользователя на главном веб-сервере, например webserver.example.com, для запуска rsync.

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

Здесь я создал пользователя «tecmint» и назначил ему пароль.

Шаг 3. Проверьте настройку Rsync

Пришло время проверить настройку rsync на сервере резервного копирования (например, backup.example.com). Для этого введите следующую команду.

[root@backup www]# rsync -avzhe ssh [email :/var/www/ /var/www
Пример вывода
[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

Вы можете видеть, что ваш rsync теперь работает абсолютно нормально и синхронизирует данные. Для передачи я использовал «/var/www»; Вы можете изменить расположение папки в соответствии с вашими потребностями.

Шаг 4. Автоматизируйте синхронизацию с помощью SSH-входа без пароля

Теперь мы закончили с настройками rsync, и теперь пришло время настроить cron для rsync. Поскольку мы собираемся использовать rsync с протоколом SSH, ssh будет запрашивать аутентификацию, и если мы не предоставим пароль для cron, это не будет работать. Для бесперебойной работы cron нам необходимо настроить входы по SSH без пароля для rsync.

В этом примере я делаю это от имени root, чтобы сохранить владельцев файлами. Вы также можете сделать это и для альтернативных пользователей.

Сначала мы сгенерируем открытый и закрытый ключ с помощью следующих команд на сервере резервного копирования (например, backup.example.com).

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

При вводе этой команды не указывайте парольную фразу и нажмите Enter для Пустая парольная фраза, чтобы rsync cron не требовал пароля для синхронизации данных.

Пример вывода
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 +         |
|    . .          |
+-----------------+

Теперь наши Открытый и Частный ключи сгенерированы, и нам придется поделиться ими с основным сервером, чтобы главный веб-сервер распознал эту резервную машину и позволил ей войти в систему. без запроса пароля при синхронизации данных.

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

Теперь попробуйте войти в систему с помощью «ssh '[email » и зарегистрируйте .ssh/authorized_keys.

[root@backup html]# [email 

Теперь мы закончили с обменом ключами. Чтобы узнать больше о SSH-пароле без входа в систему, вы можете прочитать нашу статью об этом.

  1. Вход по SSH без пароля за 5 простых шагов

Шаг 5. Запланируйте Cron для автоматизации синхронизации

Давайте настроим для этого cron. Чтобы настроить cron, откройте файл crontab с помощью следующей команды.

[root@backup ~]# crontab –e

Откроется файл /etc/crontab для редактирования в редакторе по умолчанию. Здесь. В этом примере я пишу cron, который будет запускать его каждые 5 минут для синхронизации данных.

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

Приведенная выше команда cron и rsync просто синхронизирует «/var/www/» с основного веб-сервера на резервный сервер в каждом 5 минут. Вы можете изменить конфигурацию времени и местоположения папки в соответствии с вашими потребностями. Чтобы проявить больше творчества и настроить команды Rsync и Cron, вы можете ознакомиться с нашими более подробными статьями по адресу:

  1. 10 команд Rsync для синхронизации файлов и папок в Linux
  2. 11 примеров планирования Cron в Linux