cPanel cluster howto

Sync-256Привет,

Днешният ми пост е наречен cPanel cluster howto – или как да си направим клъстер от 2 сървъра използващи платеният контролен панел – cPanel.

В моя случай ситуацията е малко по особенна и използвам bgp сесия да вдигам 1 мрежа на 2 сървъра, но иначе може да се използва примерно един HAProxy сървър който да слуша отпред (на който да са вдигнати реалните айпи адреси) и 2-та сървъра с cpanel.

За да стане синхронизацията аз използвам безплатният софтуер – lsyncd както и отделни скриптове с rsync.

Цялата тази схема я правя защото пичовете от cPanel не са измислили вариянт клиент-а им да си направи cluster само използвайки техния софтуер.

Необходимите директории и файлове които трябва да прехвърляме помежду 2та ни сървъра са следните :

 


/usr/local/apache/conf/
/var/named/
/home/
/usr/local/cpanel/
/var/lib/mysql/
/var/cpanel/
/usr/share/ssl/
/var/ssl/
/usr/local/cpanel/3rdparty/mailman/
/var/log/bandwidth/
/usr/local/frontpage/
/var/spool/cron/
/etc/secondarymx
/etc/domainalias
/etc/valiases
/etc/vfilters
/etc/exim*
/etc/proftpd*
/etc/pure-ftpd*
/etc/passwd*
/etc/group*
/etc/*domain*
/etc/*named*
/etc/wwwacct.conf
/etc/cpupdate.conf
/etc/quota.conf
/etc/shadow*
/etc/*rndc*
/etc/ips*
/etc/ipaddrpool*
/etc/ssl
/etc/hosts

За да работи lsyncd е необходимо предварително да сме си създали SSH ключове между 2та сървъра и препоръчително да сме разрешили във всеки един от тях АЙПИ адреса на другия в firewall-a.
Ето конфига който използвам за lsyncd:
settings {
insist = true,
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd-status.log",
statusInterval = 1,
maxDelays = 1
}

-- Slave server configuration

sync {
default.rsync,
delete = running,
source="/home/",
target="192.168.1.2:/home/",
excludeFrom="/etc/lsyncd.exclude",
rsync = {
compress = true,
acls = true,
verbose = true,
owner = true,
group = true,
perms = true,
rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no"
}
}


Същия съм сложил и в другия сървър, като съм сменил само айпи адреса.
Тъй като lsyncd позволява да се копира само директории, а за синхронизацията на сървърите е нужно да копираме и файлове, аз си направих rsync скрипт който се пуска през няколко минути на кронтаб.
#!/bin/bash

rsync -az -e "ssh -p 22" --progress /etc/quota.conf 192.168.1.2:/etc/quota.conf
rsync -az -e "ssh -p 22" --progress /etc/shadow 192.168.1.2:/etc/shadow
/usr/local/cpanel/scripts/ftpupdate


Не съм изброил всички файлове, но се предполага че са добавени в скрипта. Същото се отнася и за директориите в lsyncd.conf-a =)

Така настроени сървърите, lsync-a ще прехвърля нов файл от единия сървър в другия около 15 секунди след като е качен. Няма да изтрива файл който го няма в сорс директорията, но го има в дестинейшън дир-а ( ще ги изтрива само когато са изтрити от единия от 2та сървъра по време на работа )
Повече за опциите които могат да се използват в конфиг файла на lsync може да се прочетат тук.

Ами в общи линии – това е 🙂 Не съм пейстнал как се прави конфиг-а за всички необходими директории, за да не стане поста много дълаг, но принципа е ясен.