Author Topic: Корпоративный сервер обновлений с apt-cacher-ng  (Read 3262 times)

Pirojok_kms

  • Zen Apprentice
  • *
  • Posts: 10
  • Karma: +3/-0
    • View Profile
Делал по инструкции http://www.qdesnic.ru/apt-cacher-ng.html
но под моей ред. для Zetyal.
При росте количества машин с Linux на борту неизбежно возникает вопрос обновления их. Даже при наличии безлимитного канала, трафик на обновление уже переходит из разряда количество в качество. Если необходимо обновить одну, две машины это еще не страшно, но если надо обновлять большой парк устройств - это уже повод "создать" решения для ускорения этого процесса, и экономический эффект от этого решения не последнее дело. Сегодня рассмотрим одно из возможных решений для кэширования обновлений запрашиваемых Debian-based системами (Linux системы основанные на дистрибутиве Debian). Люблю создавать отдельный сервер под конкретное решение, благо виртуализация располагает делать это без финансовых затрат на железо.

Определяем состав задачи:

    * Обеспечить максимальное ускорение обновления ОС;
    * Сократить расходы на трафик до минимума;
    * Не требовать финансовых затрат на оборудование;

Дано для решения задачи:

    * ... ничего;
    * Свобода идей и великий Гугл;
    * Немного "серого вещества";

Серверная часть
На уже установленом и настроенном сервере Zentyal устанавливаем службу apt-cacher-ng
Quote
user$ sudo apt-get install apt-cacher-ng
Из сети будет загружено "рекордное" :) количество данных - аж 300кБ. Очень радует, что утилита не тянет за собой никаких зависимостей. Собственно настройку тут можно и закончить, все уже подключено и работает, но мы сделаем несколько красивых штрихов. Редактируем конфигурационный файл /etc/apt-cacher-ng/acng.conf:
Quote
user$ sudo nano /etc/apt-cacher-ng/acng.conf
Здесь нас интересует только один параметр
Quote
...
CacheDir: var/cache/apt-cacher-ng
...
Необходимо заменить путь на тот, где вы собираетесь хранить все кэшированнные пакеты, надо заметить, что apt-cacher-ng не создает специализированных баз непонятного формата, а раскладывает все в том виде как это хранится на сервере источника.
Если переносим папку для кеша, то обязательно надо выставить владельца каталога:
Quote
sudo chown apt-cacher-ng:apt-cacher-ng /полный путь/
Если вы изменили конфигурацию, то не забудьте перезапустить сервис:
Quote
user$sudo service apt-cacher-ng restart
Стоит обратить внимание, что размер надо предусматривать с запасом - всякое бывает. В моем случае - это отдельное NFS ресурс, выделенный для этой задачи. Что ж настройки сделаны, остальное можно не трогать. Вспомним, что мы не обновляли сам сервер на котором настраиваем кэширование пакетов.
Заходим в web-интерфейс Zentyal:
Файрвол-Фильтр пакетов-Правила фильтрации из внутренних сетей на Zentyal-Настроить правила:
+Добавить ->
Решение: принять
Источник: Любой
Служба: Add new...
-> Имя службы: /usr/sbin/apt-cacher-ng
Описание: "Что хотите"
Добавить

Теперь в "Служба" выбираем добавленную службу
Жмем Добавить.
Сохраняем все изменения.

Настройка клиентов
На всех Debian-based клиентах сообщим apt-get (aptitude) использовать для обновления наш новоиспеченный кэширующий сервер. Для это создадим файл изменения конфигурации установщика пакетов, можете назвать его как вам удобно, главное чтоб он лежал там где надо и имел определенный формат записи.
Quote
user$ sudo nano /etc/apt/apt.conf.d/01proxy
поместим в него всего одну строку
Quote
Acquire::http { Proxy "http://Адрес_Нашего_Нового_Сервера:3142"; };
Настройка клиентов на этом завершена, можно приступать к обновлению.
Quote
user$ sudo apt-get update
user$ sudo apt-get upgrade
Ждем пока все обновится и посмотрим результат использования нашего сервера, отчеты лежат по адресу http://Адрес_Нашего_Нового_Сервера/acng-report.html для примера приведу свой отчет после всего 2х часового использования с 4мя клиентами (Ubuntu Lucid, Ubuntu Maverick, Debian Lenny).

Для анализа лога необходимо нажать на кнопку "Count Data"

Эффективность кэширующего сервера будет расти с каждым запросом клиентов на обновление. Если у вас уже имеется папка содержащая пакеты, которые вы хотите использовать для обновления, то их необходимо загрузить в каталог /var/cache/apt-cacher-ng/_import если вы не меняли путь хранения, иначе указываете /путь/хранения/_import. Создадим каталог импорта и поместим туда пакеты:
Quote
user$ sudo mkdir -p /var/cache/apt-cacher-ng/_import
user$ sudo chown apt-cacher-ng /var/cache/apt-cacher-ng/_import
Скопируйте удобным для вас способом все пакеты в этот каталог и на странице отчета http://Адрес_Нашего_Нового_Сервера:3142/acng-report.html нажмите "Start Import". Все содержащиеся там пакеты будут помещены в хранилище и будут предоставлены по первому требованию клиентов. Импорт не будет работать пока через систему не пройдет хотя бы один пакет! (Установите любой пакет, да хоть тот же русский мануал по командам: sudo apt-get install manpages-ru). Во время импорта система проверит обновление известных на момент импорта репозиториев. По окончанию импорта все файлы в каталоге _import будут удалены, имейте это ввиду! Удачи.
« Last Edit: December 19, 2011, 03:26:55 pm by Pirojok_kms »

robb

  • Guest
Iḿ sorry I jump in in English. I just want to ask if you want to write this small howto in English and post it in the community documentation on TRAC. http://trac.zentyal.org/wiki/Documentation/Community
You can login with your forum account and post your howto.

thanks!
robb

yura.syrov

  • Zen Warrior
  • ***
  • Posts: 138
  • Karma: +5/-12
    • View Profile
я использую apt-mirror на серверах заказчиков. при сборке и настройке сервера, я заливаю свою текущую копию репозитория, настраиваю крон часа на 3-4 ночи, когда канал свободен, и вперёд! утром всегда есть свежая версия репозитория.

omni64

  • Zen Warrior
  • ***
  • Posts: 127
  • Karma: +1/-0
    • View Profile
а для Windows компьютеров можно сделать сервер обновлений на Zentyal?

xcod

  • Zen Monk
  • **
  • Posts: 60
  • Karma: +1/-0
    • View Profile
сам не пробовал
но может быть поможет эта статья
Установка локального WindowsUpdate сервера под Unix