[Moscow.pm] Консультация по поводу создания сетевых приложений на Perl

Andrei Fedorov Andrei.Fedorov на sup.com
Чт Авг 25 02:23:15 PDT 2011


Привет.

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

Вот тут код клиента и сервера: 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
> moscow-pm на pm.org | http://moscow.pm.org



Подробная информация о списке рассылки Moscow-pm