Настройка проталкивающего сервера

Настройка проталкивающего сервера состоит из двух основных задач: настройка rsync доступа (для нормального, тянущего зеркалирования) и настройка триггерного механизма ssh (для проталкивания тянущего зеркалирования).

(Подробности о том, что такое проталкивающий сервер, читайте в разъяснениях о проталкивающем зеркалировании.)

Настройка rsync

Установите rsync. Если ваш сайт под управлением Debian, то просто установите пакет rsync.

Создайте файл rsyncd.conf и внесите в него что-то подобное этому:

uid = nobody
gid = nogroup
max connections = 50
socket options = SO_KEEPALIVE

[debian]
  path = /srv/debian/mirror
  comment = The Debian Archive (https://www.debian.org/mirror/size)
  auth users = *
  read only = true
  secrets file = /etc/rsyncd/debian.secrets

Добавьте запись для каждого сайта, который вы проталкиваете, в файл /etc/rsyncd/debian.secrets:

site1.example.com:пароль
site2.example.com:ещё_пароль
site3.example.net:другой_пароль

Теперь вы даёте нижележащим зеркалам доступ к архиву на вашей машине. Если вы хотите предоставить доступ через rsync всем, то пропустите настройку auth users и secrets file в rsyncd.conf. В этом случае вам не нужны секретные файлы.

Возможно, вы захотите, чтобы служба rsync запускалась из inetd. Чтобы включить службу добавьте следующую строку в ваш файл /etc/inetd.conf:

rsync      stream      tcp         nowait      root /usr/bin/rsync rsyncd --daemon
(Не забудьте послать inetd сигнал HUP, чтобы сказать ему перечитать конфигурационный файл после модификации.)

Настройка механизма триггера ssh

С помощью ssh-keygen создайте новый ssh-ключ для учётной записи, которую вы используете для зеркалирования Debian. Если у вашей учётной записи уже имеется ключ, используемый для других целей, то можно создать ещё один и сохранить его в другом файле с помощью команды ssh-keygen -f ~/.ssh/identity.mysite

На серверах, которые выполняют синхронизацию с вашим сервером в качестве источника, в их файлы ~/.ssh/authorized_keys следует добавить следующую строку:
command="~/bin/ftpsync",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty <contents of your ~/.ssh/<key>.pub file>

Вам нужно настроить процесс зеркалирования так, чтобы он связывался с нижележащими серверами по завершению его синхронизации. Набор сценариев ftpsync содержит сценарий runmirrors, который выполняет все необходимые вам задачи. Просто измените ваш ftpsync.conf так, чтобы он содержал HUB=true, скопируйте runmirrors.conf.sample в runmirrors.conf, runmirrors.mirror.sample в runmirrors.mirror и измените файл настроек так, чтобы он подходил вашей системе. Затем добавьте все ваши нижележащие зеркала в файл runmirrors.mirror, а дуэт ftpsync/runmirror сделает за вас всю тяжёлую работу.

Это приведёт к тому, что ваша система попытается подключиться по ssh к вашим нижележащим зеркалам после того, как ваше зеркало будет обновлено, так они смогут начать своё обновление. Это предполагает, что вы передадите операторам ваших нижележащих зеркал ssh-ключ, который вы указали при настройке runmirrors, и что они добавят его к свой собственный файл ~/.ssh/authorized_keys, как это было описано выше.

Если у вас появились с этим какие-то проблемы, свяжитесь с нами.