inotify-to-many-nodes 3.74 KB
++ Введение



Достаточно типичной задачей в системной администрировании является поддержание определённых файлов в синхронном состоянии на большом количестве узлов.



В рамках рассмотренных ниже примеров синхронизация будет производится по схеме master-slave для файлов из директории /opt/global (на master-узле) в директорию /opt/production (на slave-узлах).



++ Установка clsync



Установить clsync можно следующим образом:



   # Debian

   apt-get install clsync

   

   # Gentoo

   layman -a bircoph

   emerge --sync

   emerge clsync

   

   # FreeBSD

   git clone https://github.com/xaionaro/clsync

   cd clsync/freebsd/usr/ports/sysutils/clsync && make install clean

   

   # Other

   pushd /tmp

   git clone https://github.com/xaionaro/clsync

   cd clsync

   autoreconf -fi

   ./configure

   make install



++ pdcp



pdcp - это утилита позволяющая производить копирование файла на множество узлов посредством ssh.



Установка (на master-узле):



   # Debian:

   apt-get install pdsh

   # Gentoo:

   emerge pdsh

   # FreeBSD

   cd /usr/ports/sysutils/pdsh && make install clean



Подготовка (обычно этот этап не требуется, так как такие кластера делаются методом клонирования системы, однако для наглядности пример команд с master-узла):



   ssh-keygen -t ecdsa -b 521

   # Копирование ключей на все узлы

   for HOST in $(seq 16 31); do

       IP=192.168.0."$host"

       echo "$IP	n${HOST}.example.org n${HOST}" >> /etc/hosts

       echo "$HOST" >> /etc/machines

       ssh-copy-id "$IP"

   done



Запуск на master-узле:



   clsync -M simple -S $(which pdcp) -W /opt/global -b -Y syslog -- -a %INCLUDE-LIST% %INCLUDE-LIST%



Готово, можно попробовать:



   date >> /opt/global/test.log



++ uftp



uftp - это утилита позволяющая организовывать передачу файлов посредством multicast, что может быть удобным при передаче больших объёмов информации на очень большое количество узлов.



Установка зависимостей (на всех узлах)



   # Debian:

   apt-get install libssl-dev



Установка (на всех узлах):



   wget 'http://sourceforge.net/projects/uftp-multicast/files/source-tar/uftp-4.3.tar'

   tar -xvf uftp-4.3.tar

   cd uftp

   make install



Подготовка (на всех узлах):



   mkdir -p /opt/global /opt/production

   # Linux

   echo net.ipv4.igmp_max_memberships=256 >> /etc/sysctl.conf

   sysctl -f



Запуск на slave-узлах:



   uftpd -M 248.225.233.1 -D /opt/production

   # если у вас настроено использование pdsh, то тогда:

   #     pdsh -a echo uftpd -M 248.225.233.1 -D /opt/production \> /etc/rc.local  # или в другое место, в зависимости от вашей системы

   #     pdsh -a uftpd -M 248.225.233.1 -D /opt/production



Запуск на master-узле:



   clsync --mode=direct --sync-handler=uftp --watch-dir=/opt/global --background=1 --output=syslog -- -M 248.225.233.1 %INCLUDE-LIST%



Готово, можно попробовать:



   date >> /opt/global/test.log