Синхронизация кластера с помощью Csync2
Утилита csync2 предоставляет хорошие возможности: - Высокая скорость работы. - Низкое потребление ресурсов (CPU, дисковые операции). Два этих фактора позволяют запускать процесс синхронизации максимально часто, поэтому данные на серверах становятся идентичными практически в “реальном времени”. - Простота настройки для обмена данными между любым количеством серверов. - Возможность синхронизации удаления файлов. - Защищенный обмен данными между хостами (SSL). - Подробная документация по использованию и конфигурированию csync2 доступна на официальном сайте разработчика Мы же рассмотрим пример конкретной конфигурации для двух веб-серверов в кластере.
В некоторых дистрибутивах Linux (например, в Ubuntu) csync2 уже присутствует в репозиториях и доступен для установки из пакетов. Для CentOS необходимо рассмотреть иные варианты установки (сборка из исходников, установка из доступных rpm).
Установка Centos
Устанавливаем необходимые доступные пакеты (библиотеки rsync используются в csync2, из xinetd будет запускаться серверная часть csync2):
Устанавливаем libtasn1 - библиотеку для работы с X.509 (требуется для csync2):wget http://ftp.freshrpms.net/redhat/testing/EL5/cluster/x86_64/libtasn1-1.1-1.el5/libtasn1-1.1-1.el5.x86_64.rpm
wget http://ftp.freshrpms.net/redhat/testing/EL5/cluster/x86_64/libtasn1-1.1-1.el5/libtasn1-devel-1.1-1.el5.x86_64.rpm
wget http://ftp.freshrpms.net/redhat/testing/EL5/cluster/x86_64/libtasn1-1.1-1.el5/libtasn1-tools-1.1-1.el5.x86_64.rpm
rpm -ihv libtasn1-1.1-1.el5.x86_64.rpm libtasn1-devel-1.1-1.el5.x86_64.rpm libtasn1-tools-1.1-1.el5.x86_64.rpm
Устанавливаем sqlite (2-ой версии) - именно эта версия используется в csync2:
wget http://ftp.freshrpms.net/redhat/testing/EL5/cluster/x86_64/sqlite2-2.8.17-1.el5/sqlite2-2.8.17-1.el5.x86_64.rpm
wget http://ftp.freshrpms.net/redhat/testing/EL5/cluster/x86_64/sqlite2-2.8.17-1.el5/sqlite2-devel-2.8.17-1.el5.x86_64.rpm
rpm -ihv sqlite2-2.8.17-1.el5.x86_64.rpm sqlite2-devel-2.8.17-1.el5.x86_64.rpm
wget http://ftp.freshrpms.net/redhat/testing/EL5/cluster/x86_64/csync2-1.34-4.el5/csync2-1.34-4.el5.x86_64.rpm
rpm -ihv csync2-1.34-4.el5.x86_64.rpm
Сертификаты
После установки уже доступны сгенерированные SSL-сертификаты, однако, если их нужно сгенерировать заново, сделать это можно так:
openssl genrsa -out /etc/csync2/csync2_ssl_key.pem 1024
openssl req -new -key /etc/csync2/csync2_ssl_key.pem -out /etc/csync2/csync2_ssl_cert.csr
openssl x509 -req -days 600 -in /etc/csync2/csync2_ssl_cert.csr -signkey /etc/csync2/csync2_ssl_key.pem -out /etc/csync2/csync2_ssl_cert.pem
Ключи
На одном из хостов необходимо сгенерировать файл ключей, который затем будет необходимо разместить на всех серверах, которые будут участвовать в процессе синхронизации:
Файл csync2.cluster.key на всех машинах должен быть одинаковым и должен быть размещен в /etc/csync2/.Конфигуратор
Пример конфигурационного файла /etc/csync2/csync2.cfg
Обратим особое внимание на директиву host
.
В конфигурационном файле csync2 может быть задано несколько групп синхронизации.
csync2 автоматически игнорирует те группы, в которых не задано локальное имя машины (которое можно посмотреть, например, с помощью команды hostname).
Поэтому имена машин, данные которых синхронизируются, не должны изменяться.
Используйте файл /etc/hosts
для указания постоянных IP для конкретных имен. Чтобы задать фиксированное имя для каждого сервера укажите его в каком-либо файле:
Работа csync2 на каждом хосте состоит из двух частей - серверной и клиентской. Для запуска серверной части закомментируйте в файле
/etc/xinetd.d/csync2
строку disable = yes
, перезапустите сервис xinetd и разрешите его запуск при загрузке системы:
Клиентская часть - запуск csync2 с ключом “-x”.Определите (в зависимости от объема данных) необходимую частоту обновлений и пропишите запуск csync2, например, через cron. Строка в /etc/crontab: означает запуск csync2 каждые 5 минут.
Опубликовано: 13.12.2024