cPanel cluster howto
Привет,
Днешният ми пост е наречен 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 може да се прочетат тук.
Ами в общи линии – това е 🙂 Не съм пейстнал как се прави конфиг-а за всички необходими директории, за да не стане поста много дълаг, но принципа е ясен.