Синхронизиране на два ISPConfig сървъра чрез lsyncd
Идеята е следната:
Имам 2 сървъра на които върви ISPConfig и искам единия да е огледален на другия. За целта ISPConfig ми позволява да включа като опция единия да е “mirror” на другия, но това не ми помага като цяло.
За целта направих следната комбинация:
1. Направих MySQL master-master репликация за да мога да имам базите от единия на другия през цялото време.
2. Инсталирах lsyncd – супер лек демон който ми синхронизира /var/www и /var/vmail от главния на втория сървър.
За целта използвах и следния конфиг за lsyncd:
settings { logfile = "/var/log/lsyncd/lsyncd.log", statusFile = "/var/log/lsyncd/lsyncd-status.log", statusInterval = 20 } sync { default.rsync, source="/var/www/", target="192.168.1.2:/var/www/", rsync = { compress = true, acls = true, verbose = true, owner = true, group = true, perms = true, rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no" } } sync { default.rsync, source="/var/vmail/", target="192.168.1.2:/var/vmail/", rsync = { compress = true, acls = true, verbose = true, owner = true, group = true, perms = true, rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no" } }
Като предварително бях направил SSH ключове към 192.168.1.2.
Идеята на lsyncd като цяло е копирането само на нови фаилове от мастър-а към слейва, като прави постоянни проверки за обновления през няколко секунди, и като открие такива фаилове ги прехвърля чрез rsync.
Така реално имам огледално копие на главния ISPConfig сървър + базите му и датата. Нещото което трябва ръчно да се прехвърля обаче са nginx/apache конфигурационните фаилове + php*-тата.
Надявам се пичовете от ISPConfig да измислят нещо автоматизирано за тази цел, но до тогава ще използвам тази схема 🙂
Това е..