Идеята е следната:
Имам 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 да измислят нещо автоматизирано за тази цел, но до тогава ще използвам тази схема 🙂
Това е..