inotify-to-many-nodes
3.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
++ Введение
Достаточно типичной задачей в системной администрировании является поддержание определённых файлов в синхронном состоянии на большом количестве узлов.
В рамках рассмотренных ниже примеров синхронизация будет производится по схеме 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