Установка
Установка должна быть произведена на всех нодах кластера:
Из репозиториев debian\ubuntu
apt-get install csync2 sqlite rsync –y
сгенерировать сертификат вручную: openssl genrsa -out /etc/csync2_ssl_key.pem 1024
openssl req -new -key /etc/csync2_ssl_key.pem -out /etc/csync2_ssl_cert.csr
openssl x509 -req -days 600 -in /etc/csync2_ssl_cert.csr -signkey /etc/csync2_ssl_key.pem -out /etc/csync2_ssl_cert.pem
После чего нужно запустить генерацию ключа csync2: csync2 -k /etc/csync2.cluster.key
Выполнение этой команды занимает довольно длительное время, после чего появляется файл /etc/csync2.cluster.key
Теперь необходимо скопировать его на все ноды вашего кластера, чтобы они оказались в едином облаке синхронизации. Ключей можно создать несколько, чтобы, к примеру, сервера баз данных не могли связываться с серверами Application, но на мой взгляд это совсем не обязательно, если вы не строите кластер для банка.
Создаем одинаковые конфигурационные файлы — /etc/csync2/csync2.cfg — на обоих серверах:
group cluster { host www1.local www2.local; key /etc/csync2/csync2.cluster.key; include /home/bitrix/www; exclude /home/bitrix/www/bitrix/cache; exclude /home/bitrix/www/bitrix/managed_cache; exclude /home/bitrix/www/bitrix/php_interface/dbconn.php; auto younger; }
Теперь построим локальную базу всех файлов проекта, с которой работает csync2.
Если данные на серверах идентичны, можно использовать команду:
# csync2 -cIr / |
Мы выполняем именно ее, так как второй сервер клонирован из первого.
Если есть какие-либо различия (например, данные на второй сервер копировали с первого по сети, и при этом в это же время на первом сервере могли быть изменены какие-либо данные), лучше использовать:
# csync2 -cr / |
Эта команда будет работать дольше, и при первом запуске синхронизации будут проверены на актуальность все данные (что тоже для первого раза будет работать достаточно долго, несколько минут).
Запустите команду:
#/usr/sbin/csync2 –xv
и дождитесь окончания первой синхронизации. И только после этого можете добавлять запись в крон!
Для двусторонней синхронизации в кроне запускать синхронизацию нужно на обоих севрерах.
Можно определить (в зависимости от объема данных) необходимую частоту обновлений и прописать запуск csync2, например, через cron. Строка в /etc/crontab:
*/5 * * * * root /usr/sbin/csync2 -x >/dev/null 2>&1 |
На Debian стоит inetd а не xinetd! Поэтому команда его перезапуска такая:
/etc/init.d/openbsd-inetd restart
Не забываем на обоих серверах открыть 30865 порт!
# iptables -A INPUT -p tcp -d 10.1.1.2 -s 10.1.1.1 —dport 30865 -j ACCEPT
# iptables -A INPUT -p tcp -d 10.1.1.2 -s 10.1.1.2 —dport 30865 -j ACCEPT# iptables -A INPUT -p tcp —dport 30865 -j DROP
/dir/ means exclude the root folder /dir /dir/* means get the root folder /dir but not the contents dir/ means exclude any folder anywhere where the name contains dir/ Examples excluded: /dir/, /usr/share/mydir/, /var/spool/dir/ /dir means exclude any folder anywhere where the name contains /dir Examples excluded: /dir/, /usr/share/directory/, /var/spool/dir/ /var/spool/lpd//cf means skip files that start with cf within any folder within /var/spool/lpd
По мативам:
http://www.1c-bitrix.ru/blog/demidov/start-the-web-cluster-in-the-cloud-scalaxy.php
http://www.1c-bitrix.ru/download/files/manuals/ru/web-cluster_guide.pdf
Подскажите в чем может быть проблема, на обеих нодах говорит, что нет прав
ERROR from peer local2.server.ru: Permission denied!
Может проблема и есть в правах? попробуйте установить права на синхронизируемые фалы.
chown www-data:www-data -hR /var/www/$sitedir
find /var/www/$sitedir/ -type f -exec chmod 666 {} \;
find /var/www/$sitedir/ -type d -exec chmod 777 {} \;
не помогло! поставил и все равно не работает
вот код
Match (+): /var/www/muob.ru/data/www/muob.ru/test on /var/www/muob.ru/data/www/muob.ru/test/2
Deleting /var/www/muob.ru/data/www/muob.ru/test/2 on 152461-20001.vm.clodoserver.ru ...
While syncing file /var/www/muob.ru/data/www/muob.ru/test/2:
ERROR from peer 152461-20001.vm.clodoserver.ru: Permission denied!
File stays in dirty state. Try again later...
Match (+): /var/www/muob.ru/data/www/muob.ru/test on /var/www/muob.ru/data/www/muob.ru/test/.section.php
Deleting /var/www/muob.ru/data/www/muob.ru/test/.section.php on 152461-20001.vm.clodoserver.ru ...
While syncing file /var/www/muob.ru/data/www/muob.ru/test/.section.php:
ERROR from peer 152461-20001.vm.clodoserver.ru: Permission denied!
File stays in dirty state. Try again later...
Match (+): /var/www/muob.ru/data/www/muob.ru/test on /var/www/muob.ru/data/www/muob.ru/test
Deleting /var/www/muob.ru/data/www/muob.ru/test on 152461-20001.vm.clodoserver.ru ...
While syncing file /var/www/muob.ru/data/www/muob.ru/test:
ERROR from peer 152461-20001.vm.clodoserver.ru: Permission denied!
File stays in dirty state. Try again later...
SQL: SELECT command, logfile FROM action GROUP BY command, logfile
SQL Query finished.
Finished with 3 errors.
Пробуйте по инструкции настроить:
http://docs.homelinux.org/doku.php?id=csync2_cluster_synchronization_tool
Причин много может быть.. посмотрите, открыты ли необходимые порты на системах, точнее порт: 30865
Еще судя по ветке:
http://dev.1c-bitrix.ru/community/forums/forum32/topic47219/
у вас разные системы и ревизии csync могут быть не совместимы.
Еще, по-моему, лучше привести обе ноды к похожим конфигурациям и на одинаковых платформах.
Так же внимательнее прочтите как создавать ключи — и убедитесь что они работают правильно.
Очень внимательно прочтите путь в кофиге, и совпадает ли он с реальными путями к файлам. Так например в битрикс конфигурации файлы сайтов храняться в «/home/bitrix/»…, а на Debian в /var/www…
imanager, да что необходимо одинаковые, это бы хорошо, но наделся настроить на текущих!
порты проверял — открытые! на обоих
путь к файлам пришлось настроить одинаковый, теперь у обоих /var/www
ключи проверял тоже одинаковые! при подробном запуске он выдает код
Peer x509 certificate is: 308202793...7BD87
! вроде бы одинаковый! попробую еще посмотреть параметры — спасибо за ссылку и проверить, может несовместимыеВсе сделал, теперь работает, но возникает периодически проблема, перестает синхронизироваться и вообще бд недоступна, выдает такое сообщение
Database backend is exceedingly busy => Terminating (requesting retry).
бд примерно 105 мб
пишут, надо прописать лимит lock-timeout 60; в конфиге csync2.cfg, но просто добавление вызывает ошибку
# please see the REAMDE file how to configure csync2
group cluster
{
host server0.ru server1.ru;
key /etc/csync2.cluster.key;
include /var/www;
auto younger;
lock-timeout 60;
}