Поддержка зеркал FreeBSD

Jun Kuriyama

<kuriyama@FreeBSD.org>

Valentino Vaschetto

<logo@FreeBSD.org>

Daniel Lang

<dl@leo.org>

Ken Smith

<kensmith@FreeBSD.org>

Дмитрий Морозовский

Перевод на русский язык:  

Издание: 46680

Юридическое уведомление

2015-05-12 08:03:23 taras.

Аннотация

Рабочий вариант статьи, описывающей процесс создания и поддержки зеркала FreeBSD и адресованной администраторам зеркал.

[ По разделам / Одним файлом ]

Примечание:

На текущий момент заявки на подключение новых зеркал не принимаются.

1. Контактная информация

Координаторы системы зеркал доступны по электронной почте по адресу <mirror-admin@FreeBSD.org>. Помимо этого, существует Список рассылки, посвящённый зеркалированию FreeBSD.

2. Требования к зеркалам FreeBSD

2.1. Дисковое пространство

Одним из наиболее важных требований является дисковое пространство. В зависимости от набора релизов, архитектур и степени полноты зеркала вам может потребоваться огромный объем диска. Не лишним будет помнить, что официальное зеркало, скорее всего, должно быть полным. Веб-страницы всегда должны зеркалироваться полностью. Кроме того, учтите, что приводимые оценки объема относятся к состоянию на момент последнего редактирования данной статьи (11.2-RELEASE/12.0-RELEASE). Дальнейший процесс разработки и последующие релизы только увеличат требуемый объем. Кроме того, разумно будет зарезервировать некоторое (10-20%) дополнительное пространство спокойствия ради. Вот некоторые оценки объема:

Полное зеркало FTP: 1.4 TB

Комплект изменений CTM: 10 GB

Веб-страницы: 1 GB

Текущее использование диска зеркалом FTP можно посмотреть на ftp://ftp.FreeBSD.org/pub/FreeBSD/dir.sizes.

2.2. Требования к сетевой связности и пропускной способности

Разумеется, у вас должно быть подключение к интернет. Требуемая пропускная способность ваших каналов зависит от предполагаемого профиля использования вашего зеркала. Если вы собираетесь копировать некоторые части FreeBSD для локального использования на вашей машине или в интранете, требования могут быть много мягче, чем для публичного зеркала. Для официального зеркала необходимая пропускная способность увеличивается еще больше. Мы можем дать лишь очень грубые оценки:

Зеркало для локального доступа: фактически минимум не определен, но канал шириной менее 2 Mbps может сделать процесс обновления мучительно медленным.

Неофициальное публичное зеркало: 34 Mbps выглядит неплохо для начала.

Официальное зеркало: рекомендуется канал шириной более 100 Mbps; кроме того, ваша машина должна стоять как можно ближе к граничным маршрутизаторам вашей сети.

2.3. Системные требования, процессор и память

Эти требования в первую очередь определяются максимальным ожидаемым количеством клиентов (устанавливается администратором сервера). Также, на требуемые ресурсы влияет список сервисов, которые вы будете предоставлять. Зеркала FTP и/или HTTP не требуют особенно много ресурсов. Будьте на чеку, если планируете предоставлять rsync. Выбор rsync может иметь огромное влияние на требования к аппаратным ресурсам, поскольку rsync признан "прожорливым" по памяти. Вот некоторые советы по конфигурации аппаратной части сервера:

Для умеренно посещаемого сайта, предоставляющего rsync, можно использовать процессор с частотой 800MHz - 1 GHz и по крайней мере 512MB памяти. Скорее всего, данная конфигурация может считаться минимальной для официального зеркала.

Для регулярно посещаемого сайта вам потребуется больше памяти (хорошим стартом будет 2GB) и больше процессорной мощности, что может означать требование многопроцессорной (SMP) платформы.

Кроме того, вам потребуется быстрая дисковая подсистема, в первую очередь, для работы с репозиторием SVN (крайне рекомендуем RAID). Контроллер SCSI, оборудованный собственной памятью, также может ощутимо ускорить процесс, поскольку большая часть сервисов связана с большим количеством дисковых запросов небольшого размера.

2.4. Предоставляемые сервисы

Всякое зеркало должно предоставлять набор основных сервисов. Помимо требуемого минимального набора, существуют дополнительные сервисы, которые администратор сервера может пожелать предоставлять. Этот раздел описывает, какие сервисы вы можете предоставлять, и какие действия для этого потребуются от вас.

2.4.1. FTP (требуется для FTP зеркала)

Это один из наиболее базовых сервисов; его предоставление требуется для каждого зеркала, распространяющего файлы FreeBSD по FTP. Доступ по FTP должен быть анонимным, и не должны применяться какие-либо ограничения по соотношению объема передано/принято (что вообще является, на наш взгляд, странным подходом). Закачка (upload) файлов на сервер не требуется (и должна быть запрещена в разделе FreeBSD). Кроме того, архив файлов FreeBSD должен быть доступен с путем /pub/FreeBSD.

Для предоставления анонимного FTP доступа может быть использован целый ряд программ (перечислены в алфавитном порядке):

/usr/libexec/ftpd: базовый FTP-даемон FreeBSD. Не забудьте прочитать ftpd(8).

ftp/ncftpd: коммерческий пакет, свободен для использования в учебных целях.

ftp/oftpd: FTP-даемон, написанный в основном с точки зрения защищенности.

ftp/proftpd: Модульный и очень гибкий FTP-даемон.

ftp/pure-ftpd: Еще один FTP-даемон, разработанный с позиций защищенности.

ftp/twoftpd: См. предыдущий пункт.

ftp/vsftpd: <<очень защищенный>> (<<very secure>>) ftpd.

ftpd, proftpd и, возможно, ncftpd являются наиболее часто встречающимися FTP серверами. Прочие распространены среди существующих зеркал в существенно меньшей степени. Дополнительным поводом для рассмотрения может являться возможность гибко ограничивать количество одновременных соединений, что поможет вам удержать в нужных рамках потребление пропускной способности ваших каналов и машинные ресурсы.

2.4.2. Rsync (необязательный сервис для FTP зеркала)

Rsync часто используется для предоставления доступа к FTP-области FreeBSD, чтобы другие зеркала могли синхронизироваться по вашему. Протокол rsync во многом отличается от FTP, в частности, он гораздо гуманнее с точки зрения пропускной способности каналов, поскольку не требует передачи измененного файла целиком (передаются лишь различия). Взамен Rsync требует значительных объемов памяти. Размер каждого процесса зависит от размера синхронизируемого модуля (в основном от количества директорий и файлов). Rsync может использовать в качестве транспортного протокола rsh или ssh (по умолчанию); также, может использоваться внутренний протокол rsync (этот метод предпочтителен для публичных rsync-серверов). Поддерживается авторизация клиентов и различные ограничения. Для протокола rsync существует единственный пакет:

net/rsync

2.4.3. HTTP (требуется для веб-страниц, дополнителен для FTP зеркал)

Если вы хотите поддерживать зеркало веб-страниц FreeBSD, вам потребуется установить веб-сервер. Дополнительно, вы можете предоставлять HTTP доступ к FTP-набору файлов FreeBSD. Выбор веб-сервера остается на усмотрение администратора зеркала. Некоторые из наиболее популярных веб-серверов перечислены ниже.

www/apache13: Apache - самый широко распространённый в Интернете веб-сервер, активно используемый проектом FreeBSD. Вы можете также использовать веб-сервер Apache следующего поколения, доступный в коллекции портов как www/apache22.

www/thttpd: Для обслуживания большого количества запросов к статическим документам сервер thttpd может оказаться более эффективным, чем Apache. thttpd отлично оптимизирован по производительности при работе под FreeBSD.

www/boa: Boa - еще одна альтернатива thttpd и Apache. Этот сервер должен быть ощутимо более высокопроизводительным, чем Apache, для полностью статических страниц. На время написания данного документа, впрочем, он не так хорошо оптимизирован под FreeBSD, как thttpd.

www/nginx: Nginx - высокопроизводительный веб-сервер, отличающийся низкими требованиями к объему оперативной памяти и обладающий ключевыми функциональными возможностями для построения современной веб-инфраструктуры. Функциональные возможности включают следующее: HTTP-сервер, обратный прокси для HTTP, почтовый прокси сервер, кеширование, балансировка нагрузки, сжатие, ограничение количества запросов, мультиплексирование и повторное использование соединений, поддержка разгрузки SSL (SSL offload) и вещания медиапотоков (media streaming).

3. Как вести зеркало FreeBSD

Теперь вам известно, какая потребуется машина и как предоставлять сервисы, но не как получить их самому. :-) В этом разделе описывается процесс ведения зеркала и поддержания его в актуальном состоянии, в том числе какие инструменты использовать и какие сайты выбирать в качестве источников для синхронизации.

3.1. Зеркалирование FTP-области

Файлы, доступные по FTP, составляют большую часть зеркала. Они включают дистрибутивные наборы, необходимые для установки по сети, ветви (branches), в которых отражено текущее состояние исходных текстов, образы ISO для записи компакт-дисков с дистрибутивами для установки, образами <<живых>> файловых систем и пакетами, дерево портов, исходные дистрибутивы для сборки портов и кучу готовых пакетов. И, разумеется, все вышеописанное - для разных версий FreeBSD и различных архитектур.

Наиболее эффективным будет синхронизация FTP-области при помощи rsync. Для этого следует установить пакет net/rsync, который был описан в разделе Раздел 2.4.2, <>. Поскольку доступ по протоколу rsync не является обязательным, выбранный вами сайт может его не поддерживать. Возможно, вам придется немного поискать в сетевой окрестности зеркало, поддерживающее rsync.

Примечание:

Поскольку от количества клиентов rsync ощутимо зависит загрузка сервера, большинство администраторов вводят ограничения доступа. Для поддержания зеркала вам следует связаться с администратором сайта, с которым вы будете синхронизироваться, для уточнения локальных правил и, возможно, для внесения в них исключения для вас (поскольку вы также поддерживаете зеркало).

Строка для синхронизации FreeBSD по rsync выглядит примерно так:

% rsync -vaHz --delete rsync://ftp4.de.FreeBSD.org/FreeBSD/ /pub/FreeBSD/

Загляните в документацию по rsync, также доступную по адресу http://rsync.samba.org/ за дополнительной информацией по различным опциям rsync. Обратите внимание, что в случае синхронизации модуля целиком (а не отдельного каталога) необходимо явно указать результирующий каталог, потому что каталог с именем модуля (в данном случае "FreeBSD") не создается. Для поддержания актуальности вам потребуется создать скрипт для запуска подобной команды из cron(8).

3.2. Зеркалирование страниц WWW

Веб-сайт FreeBSD следует зеркалировать исключительно при помощи rsync.

Командная строка для синхронизации веб-сайта FreeBSD выглядит примерно так:

% rsync -vaHz --delete rsync://bit0.us-west.freebsd.org/FreeBSD-www-data/ /usr/local/www/

3.3. Как часто синхронизироваться?

Каждое зеркало должно регулярно обновляться. Вам потребуется какой-то набор скриптов, выполняемых посредством cron(8). Поскольку каждый администратор, как правило, пишет такие скрипты сам и на свой лад, мы не можем выдать конкретных указаний. Общие же советы выглядят так:

Создайте скрипт с командой, которая запустит нужное приложение для обновления зеркала. Рекомендуем использовать скрипт на языке обычного /bin/sh.

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

Попробуйте, как ваш скрипт работает. По завершении проверьте логи.

При помощи утилиты crontab(1) добавьте ваш скрипт в таблицу регулярных заданий crontab(5) соответствующего пользователя. Это должен быть пользователь, отличный от пользователя FTP-даемона, чтобы файлы в FTP-области без атрибута "чтение для всех" не были доступны анонимным FTP-пользователям. Данное свойство используется для тестирования перед выходом новых релизов, для того чтобы удостовериться, что все официальные зеркала содержат все необходимые файлы к моменту официального объявления релиза.

Некоторые рекомендуемые установки частоты обновления:

FTP-набор: раз в сутки

WWW-страницы: раз в сутки

4. С какого сервера синхронизироваться

Это важный вопрос, так что мы попытаемся пояснить, откуда берутся ответы. Для начала повторим еще несколько раз: никогда не синхронизируйтесь с ftp.FreeBSD.org .

4.1. Организация системы зеркал

Зеркала организуются по странам. Имена хостов всех официальных зеркал построены по принципу ftpN.CC.FreeBSD.org, где CC (country code) - домен верхнего уровня страны, где расположено зеркало, N - номер зеркала в данной стране. Этот же принцип применим к именам хостов wwwN.CC.FreeBSD.org и т.п. Кроме того, есть зеркала без доменной части, обозначающей страну. Все они имеют очень хорошие внешние каналы и обслуживают большое число одновременных соединений. Имя ftp.FreeBSD.org на самом деле указывает на две машины, одна из которых в настоящее время находится в Дании, а другая в США. Ни одна из этих машин НЕ является основным сайтом, и потому не должна использоваться для синхронизации. Масса документации для <<живых>> пользователей указывает на ftp.FreeBSD.org, так что автоматическим системам ведения зеркал следует выбирать другие источники синхронизации.

Кроме того, существует иерархия зеркал в терминах их удаленности от центра, или слоях. Основные сайты могут быть описаны как Зеркала нулевого слоя. Зеркала, синхронизирующиеся по ним, считаются слоем 1, следующие - слоем 2 и т.д. Официальные сайты приглашаются на низкие слои, однако следует помнить, что чем меньше номер слоя, тем выше требования к зеркалу, как было описано в Раздел 2, <<Требования к зеркалам FreeBSD>>. Помимо того, доступ к зеркалам 1 слоя может быть ограничен; безусловно ограничен доступ к основным сайтам. Иерархия слоев не отражается в DNS и, вообще говоря, нигде (кроме мастер-сайтов) не документирована. Тем не менее, официальные зеркала с малыми (1-4, как правило) номерами обычно представляют первый слой. (Это грубая оценка, и ни в коем случае не правило).

4.2. Так откуда же мне синхронизироваться?

Главное - НЕ с ftp.FreeBSD.org. Короткий ответ: с зеркала, которое расположено недалеко от вас в терминах Интернет, и/или доступ к которому наилучший.

4.2.1. Я хочу получить копию зеркала хоть откуда-нибудь!

Если у вас нет каких-либо специальных предпочтений или требований, см. Раздел 4.2, <<Так откуда же мне синхронизироваться?>>. Это означает:

Выберите те из них, с которыми вам работать быстрее всего (меньшее число промежуточных узлов и время отклика), и которые предоставляют нужные вам сервисы (такие как rsync).

Свяжитесь с администраторами выбранного сервера, опишите ваши запросы и уточните их правила.

Сконфигурируйте ваше зеркало, как описывалось выше.

4.2.2. Я поддерживаю официальное зеркало, какой сайт мне выбрать?

В основном, правила, описанные в Раздел 4.2.1, <<Я хочу получить копию зеркала хоть откуда-нибудь!>>, применимы. Дополнительно можно убедиться, что выбранный сайт принадлежит низкому слою. Другие соображения относительно официальных зеркал описаны в Раздел 5, <<Официальные зеркала>>.

4.2.3. Мне нужен доступ к основным сайтам!

При наличии достаточных причин вы можете получить доступ к одному из основных сайтов. Доступ к ним ограничен; существуют специальные правила их использования. Наличие у вас статуса официального зеркала, безусловно, является хорошим подспорьем. В противном случае убедитесь, что ваша страна действительно нуждается еще в одном зеркале. Если их уже три или более, сначала свяжитесь с администратором соответствующей зоны DNS (<hostmaster@CC.FreeBSD.org>) или напишите в Список рассылки, посвящённый зеркалированию FreeBSD.

Доступ к одному из мастер-сайтов или подходящему зеркалу 1 уровня вам помогут обеспечить те же, кто помогал вам получить статус официального зеркала. В случае неудачи свяжитесь с <mirror-admin@FreeBSD.org> и попросите помощи у них.

Существует один основной сайт для синхронизации набора файлов FTP.

4.2.3.1. ftp-master.FreeBSD.org

Это основной сервер для синхронизации FTP набора.

В дополнение к FTP, ftp-master.FreeBSD.org поддерживает доступ по rsync. Использование этих протоколов описано в Раздел 3.1, <<Зеркалирование FTP-области>>.

Приветствуется предоставление зеркалами 1 уровня доступа к FTP-области по протоколу rsync.

5. Официальные зеркала

Официальные зеркала обладают следующим свойствами:

a) имеют запись в домене FreeBSD.org (обычно типа CNAME).

b) присутствуют в списке официальных зеркал в Руководстве по FreeBSD и другой документации.

На настоящий момент это все, что отличает их от прочих зеркал. Официальные зеркала не обязательно принадлежат к Первому уровню, однако, вряд ли можно найти зеркало уровня 1, не являющееся официальным.

5.1. Отдельные требования к официальным зеркалам 1 уровня

Описать требования для всех официальных зеркал не так просто, поскольку проект FreeBSD достаточно мягок в этом отношении. Несколько проще указать, что требуется от официальных зеркал уровня 1. Прочие официальные зеркала должны рассматривать этот список как настойчивые пожелания.

Зеркала 1 уровня должны:

поддерживать полный список файлов

предоставлять доступ для других зеркал

обеспечивать доступ по протоколам FTP и rsync.

Кроме того, администратор такого зеркала должен быть подписан на Список рассылки, посвящённый зеркалированию FreeBSD. См. здесь для дополнительной информации о подписке.

Важно:

Администраторы зеркал, в особенности 1 уровня, должны очень внимательно следить за графиком релизов. Это поможет подготовиться к крупным всплескам нагрузки на зеркало, которые всегда происходят после очередного релиза.

Кроме того, важно поддерживать актуальность зеркал (в особенности зеркал уровня 1). Если Зеркало1 не синхронизировалось в течение длительного времени, то зеркала следующего уровня будут синхронизироваться по устаревшей информации и т.д. Поддерживайте актуальность ваших зеркал!

5.2. Как стать официальным зеркалом?

На текущий момент заявки на подключение новых зеркал не принимаются.

6. Статистика некоторых зеркал

Вот несколько ссылок на статистику использования зеркал

6.1. Статистика FTP сайтов

ftp.is.FreeBSD.org - <hostmaster@is.FreeBSD.org> - (загрузка канала) (FTP процессы) (HTTP процессы)

ftp.cz.FreeBSD.org - <cejkar@fit.vutbr.cz> - (загрузка канала) (FTP процессы) (rsync процессы)

ftp2.ru.FreeBSD.org - <mirror@macomnet.ru> - (Bandwidth) (HTTP and FTP users)