Привет.

Мне понадобилось сделать небольшой сервер на перле, чтобы автоматически 
добавлять на вторичные ДНС-сервера новые зоны.

Вот тут код клиента и сервера: http://www.litecrm.ru/DNSreplicator.tar.gz

Код достаточно простой и разобраться в нем очень лекго. Мне кажется это близко 
подходит к твоей задаче. И можно взять его за основу:

DNSreplicator_server запускается на первичном ДНС и создает небольшой сервер, 
принимающий коннекты по TCP. Каждому подключившемуся клиенту он выдает время 
последнего обновления зон в ДНС (проверка каждые 10 сек.).
Если время клиента совпадает со временем сервера, то клиент отключается, иначе 
запрашивает список доменов. Далее клиент проверяет каких доменов у него еще 
нет, добавляет их в named.conf как секондари зоны с ссылкой на IP сервер, как 
на мастер зону, и перезапускает ДНС-сервер. Для исключения возможных ошибок, на 
сервере можно задать список исключения. 
Клиент запускается по крону.

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

В клиенте IO::Socket. В сервере использовал POE::Component::Server::TCP, так 
как это быстрее и проще :) К тому же не надо ничего ставить с CPAN - библиотека 
есть в репозитории Debian (libpoe-perl).

Если есть вопросы - пиши :)

Best regards,
Andrey Fedorov




25.08.2011, в 12:11, Тимофей Марков написал(а):

> Благодарю всех ответивших.
> Немного более точно обрисую ситуацию (заодно и информацию об информации дам).
> На каждом сервере крутится перловая программа которая определяет скорость до 
> нескольких хостов. Вот именно эту информацию и нужно передавать, плюс еще 
> некоторые управляющие команды. те варианты с scp не подходят. Поднимать ради 
> этого апач тоже не правильно ибо это лишняя дыра в безопасности плюс лишняя 
> нагрузка на сервер (все сервера VPS)  Вариант с RabbitMQ кажется тоже слишком 
> глобальным, хотелось бы справиться средствами perl не запуская лишних 
> процессов.
> Такой вопрос, а почему не использовать IO::Socket и IO::Select как я 
> понимаю(хотя конечно могу не правильно понимать) этого функционала достаточно 
> для создания соединений. Или есть какие подводные камни?
> И что на счет шифрования(в эти дебри сам еще не успел залезть), в принципе 
> обмен будет проходить по защищенным каналам, но береженого Бог бережет/ Может 
> есть какие средства для установления защищенных каналов, или придется доп 
> модули использовать?
> 
> Остальные модули буду сейчас рассматривать.
> -- 
> Moscow.pm mailing list
> [email protected] | http://moscow.pm.org

-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить