Нередко могут возникать ситуации, требующие атомарной синхронизации используемых файловых данных. В качестве утрированного примера представить, что имеется большая директория «/var/www» и необходимо перенести её содержимое на другой сервер в целостном виде без долгой сервисов.
Многие администраторы в таких случаях применяют циклический rsync, в результате работы которого ОС накапливают дисковый кеш, в результате чего последующие итерации rsync выполняются всё быстрее и быстрее. После того, как время досинхронизации станет достаточно малым, чтобы downtime таких масштабов был допустим, работу сервисов (использующих «/var/www») останавливают, дожидаются дополнительной итерации rsync, после чего запускают сервисы уже на другом узле.
Однако данный метод обладает достаточно ограниченной применимостью. Дискового кеша или других ресурсов может оказаться недостаточным, чтобы время итерации rsync сократилось до приемлемых величин.
Предполагается, что rsync администратор способен настроить самостоятельно, поэтому подробности его настройки в данном тексте не рассматриваются.
clsync произведёт полную синхронизацию, после чего будет отлавливать изменения на файловой системе внутри «/var/www» и производить досинхронизации только по нужным файлам/директориям. Досинхронизации прекратятся как только будет нéчего синхронизировать (за время последней досинхронизации ничего не изменилось) или завершится 20-ая итерации синхронизации (чтобы процесс не длился вечно).
После окончания синхронизаций clsync запустит скрипт «/root/stop-here-start-there.sh». Предполагается, что в данном скрипте будет описан сценарий остановки сервисов на старом узле и их запуска на новом узле. Таким образом downtime будет минимизирован.
Установить clsync можно следующим образом:
# Debian
apt-get install clsync
# Gentoo
layman -a bircoph
emerge --sync
emerge =app-admin/clsync-0.3
# FreeBSD
git clone https://github.com/xaionaro/clsync
cd clsync/freebsd/usr/ports/sysutils/clsync && make install
Первая «R» внутри «[ R ]» означает, что контейнер находится в синхронном состоянии на соседнем узле, а вторая «[ R ]» — что узел находится в синхронном состоянии на сервере резервного копирования.
Сами квадратные скобки «[» и «]» означают, что репликация осуществуется с _данного узла_.
Сами квадратные скобки «[» и «]» означают, что репликация осуществляется с _данного узла_.
Если посмотреть на «lxc-list» со стороны соседнего узла, то можно увидеть:
g[17:01:01] [root@seth ~]# lxc-list
...
...
@@ -1035,4 +1035,4 @@ Percona Server -> wsrep hooks -> galera plugin -> система коммуни
++ Пара слов об ipw
Если вы произвели изменение конфига ipw, то достаточно набрать "ipw fix", чтобы его применить.
\ No newline at end of file
Если вы произвели изменение конфига ipw, то достаточно набрать "ipw fix", чтобы его применить.
Достаточно типичной задачей в системной администрировании является поддержание определённых файлов в синхронном состоянии на большом количестве узлов.
В рамках рассмотренных ниже примеров синхронизация будет производится по схеме 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-узла):
uftp - это утилита позволяющая организовывать передачу файлов посредством multicast, что может быть удобным при передаче больших объёмов информации на очень большое количество узлов.