7

Настройка csync2

Установка

Установка должна быть произведена на всех нодах кластера:

Из репозиториев 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

http://www.parallelcomputing.ru/archives/774

7 Comments

  1. Подскажите в чем может быть проблема, на обеих нодах говорит, что нет прав
    ERROR from peer local2.server.ru: Permission denied!

  2. Может проблема и есть в правах? попробуйте установить права на синхронизируемые фалы.
    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 {} \;

  3. не помогло! поставил и все равно не работает

    вот код
    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.

  4. Пробуйте по инструкции настроить:
    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…

  5. imanager, да что необходимо одинаковые, это бы хорошо, но наделся настроить на текущих!
    порты проверял — открытые! на обоих
    путь к файлам пришлось настроить одинаковый, теперь у обоих /var/www
    ключи проверял тоже одинаковые! при подробном запуске он выдает код
    Peer x509 certificate is: 308202793...7BD87! вроде бы одинаковый! попробую еще посмотреть параметры — спасибо за ссылку и проверить, может несовместимые

  6. Все сделал, теперь работает, но возникает периодически проблема, перестает синхронизироваться и вообще бд недоступна, выдает такое сообщение
    Database backend is exceedingly busy => Terminating (requesting retry).
    бд примерно 105 мб

  7. пишут, надо прописать лимит 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;
    }

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *