Отказоустойчивая система — это очень легко, на самом деле. Залог успеха — вменяемая архитектура. Но может так случится, что заказчик не умеет в архитектуру. От слова «совсем». А его программисты не умеют в хороший код и лаконичные решения. Но уж очень они хотят получить защищённый от отказа оборудования вычислительный комплекс, не содержащий «специфических» решений (типа внешних дисковых контроллеров с двумя target-каналами). Понятно, что речь идёт о кластере из двух машинок с DRBD. И надо это так сделать, чтобы не влипнуть в настройку кособокого ПО заказчика… Короче, нужно разместить «корень» (корневой раздел) на DRBD! Попробуем собрать подобное решение? Для этого нам нужны две машины схожей конфигурации. Требуется заранее определится с сетевыми именами машин и их адресацией. В примере будут фигурировать хосты[…]

Однажды сильно припёрло написать свой dhcp-сервер. Для обслуживания кучи relay’ев. Функционал полный был даже не нужен. Точнее так: нужно было, чтобы он до конца не был реализован. Например, не нужно было сохранять время аренды адреса, но нужно было назначать параметры клиентам в зависимости от номера vlan’а, откуда к нам перенаправлен запрос. И решено было всё это написать на perl, благо даже модуль есть специальный — Net::DHCP::Packet. Так как, фактически, соотношение номера vlan’а и сетевая адресация происходили в определённой известной зависимости, своя реализация dhcp-сервера была выполнена в формате «запустил и забыл». Никакой необходимости в изменении конфигурации на лету. Просто незачем менять конфигурацию. А ещё отсутствовал ввод-вывод на диск (не надо было писать журнал), так что он (dhcp-сервер) как был запущен, так[…]

Напоминаю, что реализовал свою собственную управлялку почтарём, без регистрации и смс файлов и sql. И хотя, вроде бы, всё было написано с прицелом на производительность, я всё равно боялся… Но тут одну из инсталляций навестили спам-боты, которые знали пароль некоторых пользователей. Короче, mailadm под нагрузкой не сплошал. А она была адовая, например… Но раз оно всё отработало, то сервер ушёл в спам-листы. Сервер жалко. Нерадивых пользователей приказано расстрелять. Ну а код доказал свою производительность)

Товарищ! Тебе необходимо управлять учётными данными пользователей Exim и Dovecot без перезапуска сервисов? Тебе необходимо дать возможность пользователю из web-интерфейса менять свой пароль? Ты не понимаешь, нафига для этого надо тащить на сервер полноценную реляционную базу данных? Я тоже очень хотел не тащить SQL-базу и управлять всем в режиме онлайн. Сел, почитал документацию, и таки нашёл выход! Вот, например, в Exim есть вариант запроса readsocket, который просто позволяет Exim’у зайти на некий unix-сокет и просто «спросить» о нужной информации. Как понимаете, это сильно упрощает реализацию взаимодействия с Exim’ом. В Dovecot подобное тоже есть — протокол dict. Ну чуть сложней, но тоже непередаваемо проще, чем реализация интерфейса LDAP или SQL. А у меня есть perl… Ну вы поняли: нельзя взять и[…]

Я уже выкладывал старый Скрипт бэкапа для LVM-образов виртуальных машин… Но это всё было очень давно — не менее шести лет прошло с того момента, как он был закинут на боевой сервер. Короче, надо было давно это переписать. До уровня полноценной программы. На perl’е. Потому что perl решает… И чтобы не было лишних внешних зависимостей. Это же не скрипт какой-то!) Итак, теперь программа (make-vg-backup) делает инкрементальные бэкапы. С шагом, который укажет пользователь. Все, что не изменилось с прошлого бэкапа — будет слинкованно жёсткой ссылкой на фрагмент из предыдущего бэкапа. Таки образом у нас всегда есть полноценный бэкап. И места лишнего мы не тратим. Спасибо создателями rsnapshot’а за идею. Из минусов — необходимость использования отдельной утилиты для восстановления. Но её я[…]