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 необходимо добавлять на всех серверах.