Настройка push-сервера
Настройка push-сервера состоит из двух основных задач: настройка rsync
доступа (для нормального, тянущего
зеркалирования) и настройка триггерного механизма ssh
(для проталкивания
тянущего зеркалирования).
(Подробности о том, что такое push-сервер, читайте в разъяснениях push-зеркалирования.)
Настройка rsync
Установите rsync версии 2.1.1 или выше. Если ваш сайт работает на
Debian, просто установите последний пакет
rsync.
Создайте файл rsyncd.conf и внесите в него что-то подобное этому:
uid = nobody gid = nogroup max connections = 25 socket options = SO_KEEPALIVE [debian] path = /srv/debian/mirror comment = The Debian Archive (~250 GB) auth users = authorized_account1,authorized_account2,authorized_accountN read only = true secrets file = /etc/rsyncd/debian.secrets
Добавьте запись для каждого сайта, который вы проталкиваете, в файл
/etc/rsyncd/debian.secrets:
авторизованная_учётная_запись1:пароль авторизованная_учётная_запись2:другой_пароль авторизованная_учётная_записьN:Nный_пароль
Теперь вы даёте нижележащим зеркалам доступ к архиву на вашей машине.
Возможно, вы захотите, чтобы демон rsync запускался из inetd. Чтобы сделать это,
вы должны добавить сервис rsync в файл /etc/services (если он ещё
не там), как показано ниже:
rsync 873/tcp
Добавьте следующую строку в файл /etc/inetd.conf, чтобы разрешить
демон из inetd:
rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon(Не забудьте послать inetd сигнал HUP, чтобы сказать ему перечитать конфигурационный файл после модификации.)
Настройка механизма триггера ssh
Создайте новый ключ ssh для учётной записи, которую вы используете для зеркалирования Debian. Будьте осторожны и не перезапишите ваш оригинальный ключ ssh, для чего воспользуйтесь ключом командной строки -f, например:
ssh-keygen -f ~/.ssh/identity.mysite
Убедитесь что новый публичный ключ (~/.ssh/identity.mysite.pub) содержит в начале IPADDRESS с IP-адресом вышестоящего зеркала:
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="~/bin/ftpsync",from="IPADDRESS" &"
Вам нужно настроить сценарий, который будет связываться с нижележащими зеркалами.
Создайте файл с именем signal, содержащий следующее:
#!/bin/sh # This script is called to signal the remote host that it is time to # mirror the archive. echo Signalling $1 ssh -o"BatchMode yes" -o"user $2" "$1" -i $HOME/.ssh/identity.mysite sleep 1
Этот сценарий будет соединяться с удалённым хостом, используя специальный ключ ssh,
который вы создали выше, предлагая его добавить в ~/.ssh/authorized_keys
каждому оператору нижележащих зеркал (заменяет ftpsync
на любую другую команду
для начала зеркалирования).
Сам по себе сценарий удалённо не делает ничего — будет запущена
единственная команда, зависящая от настроек ключа.
Фактически, чтобы связать зеркала, вам нужно выполнить ./signal
<сайт> <имя_пользователя> после завершения синхронизации
с помощью rsync. Соответственно, как только будет закончено зеркалирование
с вышележащим сайтом, вы стартуете проталкивание нижележащим от вас сайтам.
Также можно разместить эти команды в конце вашего ftpsync.conf
или создать новый сценарий и запускать его из anonftpsync.
Например:
#!/bin/sh # This script is called by websync to signal the downstream mirrors. ./signal some.other.site archvsync ./signal and.another.site othersiteaccount
Если у вас появились с этим какие-то проблемы, свяжитесь с нами.
