URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 57588
[ Назад ]

Исходное сообщение
"Централизованное обновление портов и системы FreeBSD"

Отправлено Monty , 22-Июн-05 10:42 
Здравствуйте.
Хочу решить следующую задачу по оптимизации процесса обновления дерева портов и исходников системы FreeBSD не нескольких серверах.
В сети работает несколько серверов под управлением ОС FreeBSD. Каждый сервер подключен к интернету. Дело в том, что обновлять отдельно каждый как-то не выгодно финансово, посколько приходится за одно обновление платить в несколько раз больше.
Скажите, каким образом можно организовать следующую схему:
один сервер будет обновляться по интернету, а остальные сервера будут обновляться уже с первого сервера. Тогда учитывая, что трафик локальный бесплатный, платить придется только один раз.
Может у кого-то реализованы подобные схемы? Пожалуйста, поделитесь опытом.

Содержание

Сообщения в этом обсуждении
"Централизованное обновление портов и системы FreeBSD"
Отправлено INM , 22-Июн-05 10:51 
>Здравствуйте.
>Хочу решить следующую задачу по оптимизации процесса обновления дерева портов и исходников
>системы FreeBSD не нескольких серверах.
>В сети работает несколько серверов под управлением ОС FreeBSD. Каждый сервер подключен
>к интернету. Дело в том, что обновлять отдельно каждый как-то не
>выгодно финансово, посколько приходится за одно обновление платить в несколько раз
>больше.
>Скажите, каким образом можно организовать следующую схему:
>один сервер будет обновляться по интернету, а остальные сервера будут обновляться уже
>с первого сервера. Тогда учитывая, что трафик локальный бесплатный, платить придется
>только один раз.
>Может у кого-то реализованы подобные схемы? Пожалуйста, поделитесь опытом.


посмотри в новости за сегодня
https://www.opennet.ru/opennews/art.shtml?num=5663
там есть статья...


"Централизованное обновление портов и системы FreeBSD"
Отправлено newser , 22-Июн-05 12:15 
>Здравствуйте.
>Хочу решить следующую задачу по оптимизации процесса обновления дерева портов и исходников
>системы FreeBSD не нескольких серверах.
>В сети работает несколько серверов под управлением ОС FreeBSD. Каждый сервер подключен
>к интернету. Дело в том, что обновлять отдельно каждый как-то не
>выгодно финансово, посколько приходится за одно обновление платить в несколько раз
>больше.
>Скажите, каким образом можно организовать следующую схему:
>один сервер будет обновляться по интернету, а остальные сервера будут обновляться уже
>с первого сервера. Тогда учитывая, что трафик локальный бесплатный, платить придется
>только один раз.
>Может у кого-то реализованы подобные схемы? Пожалуйста, поделитесь опытом.


Первым делом советую почитать man development.
У меня это организовано примерно так:

На основном сервере есть каталог /FreeBSD, в котором располагается полное дерево CVS от FreeBSD (/FreeBSD/FreeBSD-CVS). Оно обновляется по CVSup раз в сутки, можно и чаще. Потом cvs'ом получаю каталог /FreeBSD/ports, в котором содержатся соответственно порты:

cd /FreeBSD; cvs -d /home/ncvs co -A -P ports

/home/ncvs - это симлинк на /FreeBSD/FreeBSD-CVS.
Есть каталог /FreeBSD/FreeBSD-5.4, где опять же cvs'ом с тегом RELENG_5_4 получен каталог src:

mkdir /FreeBSD/FreeBSD-5.4
cd /FreeBSD/FreeBSD-5.4
cvs -d /home/ncvs co -P -rRELENG_5_4 src

Таким образом можно наплодить каталогов для разных веток. Далее кидаются симлинки:

ln -s /FreeBSD/ports /usr/ports
ln -s /FreeBSD/FreeBSD-5.4/src /usr/src

Создается каталог для дистфайлов:

mkdir /distfiles

У меня он вынесен на отдельный раздел, почему - объясню позже. Далее

ln -s /distfiles /usr/ports/distfiles

После чего создаем еще один каталог (у меня он тоже на отдельном разделе):

mkdir -p /build/obj
ln -s /build/obj /usr/obj

После этого можно расшарить по NFS каталоги /FreeBSD (read-only), /build (read-only) и /distfiles (read-write).

Теперь можно собрать систему:

cd /usr/src
make buildworld
make buildkernel KERNCONF=...

На других серверах примонтируем mainserver:/FreeBSD mainserver:/build mainserver:/distfiles кидаем соответствующие симлинки для /usr/ports, /usr/src и /usr/obj и можно просто

cd /usr/src
make installkernel KERNCONF=...
make installworld

Правда, этот процесс оказывается чуточку сложнее, но суть такова.
Далее, идем в любой порт и делаем make, который кладет дистфайлы в /distfiles (именно поэтому он расшарен в read-write).

Таким образом достигается:

1. Централизованное хранение исходников (src) и портов (ports)
2. Централизованное хранение distfiles
3. Сборка мира осуществляется на одной машине (mainserver) (если, конечно в /etc/make.conf на всех машинах прописано примерно одно и то же).
4. Т.к. сборка делается только в одном месте, уменьшаются накладные расходы.

В кратце все, надеюсь объяснил доступным языком.


"Централизованное обновление портов и системы FreeBSD"
Отправлено Crystal_m , 22-Июн-05 12:26 
>Здравствуйте.
>Хочу решить следующую задачу по оптимизации процесса обновления дерева портов и исходников
>системы FreeBSD не нескольких серверах.
>В сети работает несколько серверов под управлением ОС FreeBSD. Каждый сервер подключен
>к интернету. Дело в том, что обновлять отдельно каждый как-то не
>выгодно финансово, посколько приходится за одно обновление платить в несколько раз
>больше.
>Скажите, каким образом можно организовать следующую схему:
>один сервер будет обновляться по интернету, а остальные сервера будут обновляться уже
>с первого сервера. Тогда учитывая, что трафик локальный бесплатный, платить придется
>только один раз.
>Может у кого-то реализованы подобные схемы? Пожалуйста, поделитесь опытом.

/usr/src и /usr/ports монтировать по NFS на все сервера