CDN

CDN на коленке: Часть 3. Синхронизируем узлы


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

Csync2 входит в состав большинства современных дистрибутивов. Например в Debian/Ubuntu установку можно выполнить так:

[email protected]:~# apt-get install csync2

После установки необходимо создать сертификат для шифрования трафика синхронизации:

[email protected]:~# openssl genrsa \
-out /etc/csync2_ssl_key.pem 2048
[email protected]:~# openssl req -new \
-key /etc/csync2_ssl_key.pem \
-out /etc/csync2_ssl_cert.csr
[email protected]:~# openssl x509 -req -days 3650 \
-in /etc/csync2_ssl_cert.csr \
-signkey /etc/csync2_ssl_key.pem \
-out /etc/csync2_ssl_cert.pem

Так же понадобится pre-shared-key который используется для авторизации узлов внутри группы синхронизации:

[email protected]:~# csync2 -k /etc/csync2.key

Созданные файлы (кроме csr) нужно разнести по всем узлам внутри группы синхронизации, как и конфигурационный файл /etc/csync2.cfg:

group cdn {
host cdn1.rascal.su;
host cdn2.rascal.su;
key /etc/csync2.key;
include /etc/;
action {
pattern /etc//nginx.conf;
pattern /etc//sites-enabled/*;
pattern /etc//sites-available/*;
exec "/etc/init.d/ reload";
logfile "/var/log/csync2_action.log";
do-local;
}
backup-directory /var/backups/csync2;
backup-generations 3;
auto none;
}

Выполняем начальную синхронизацию:

[email protected]:~# csync2 -xv

Если изменения планируется производить только на одном узле, то нужно добавить в crontab на этом сервере сроку вида:

*/5 * * * *       /usr/sbin/csync2 -x

Если изменения планируется производить на всех серверах, то подобную строку в crontab необходимо добавлять на всех серверах.