Как синхронизировать два веб-сервера/веб-сайта Apache с помощью Rsync
В Интернете доступно очень много руководств по зеркалированию или резервному копированию ваших веб-файлов различными методами. Здесь я создаю эту статью для дальнейшего использования, а здесь я буду использовать очень простую и универсальную команду Linux. для создания резервной копии вашего веб-сайта. Это руководство поможет вам синхронизировать данные между двумя веб-серверами с помощью «Rsync».
Цель создания зеркала вашего Веб-сервера с помощью Rsync заключается в том, что в случае сбоя вашего основного веб-сервера его может взять на себя резервный сервер, чтобы сократить время простоя вашего веб-сайта. Этот способ создания резервной копии веб-сервера очень хорош и эффективен для малого и среднего веб-бизнеса.
Преимущества синхронизации веб-серверов
Основные преимущества создания резервной копии веб-сервера с помощью rsync заключаются в следующем:
- Rsync синхронизирует только те байты и блоки данных, которые изменились.
- Rsync имеет возможность проверять и удалять те файлы и каталоги на резервном сервере, которые были удалены с основного веб-сервера.
- Он заботится о разрешениях, владельцах и специальных атрибутах при удаленном копировании данных.
- Он также поддерживает протокол SSH для передачи данных в зашифрованном виде, поэтому вы будете уверены, что все данные в безопасности.
- Rsync использует метод сжатия и распаковки при передаче данных, который потребляет меньшую пропускную способность.
Как синхронизировать два веб-сервера Apache
Давайте продолжим настройку rsync для создания зеркала вашего веб-сервера. Здесь я буду использовать два сервера.
Главный сервер
- IP-адрес: 192.168.0.100
- Имя хоста: webserver.example.com.
Резервный сервер
- IP-адрес: 192.168.0.101
- Имя хоста: 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-пароле без входа в систему, вы можете прочитать нашу статью об этом.
- Вход по 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, вы можете ознакомиться с нашими более подробными статьями по адресу:
- 10 команд Rsync для синхронизации файлов и папок в Linux
- 11 примеров планирования Cron в Linux