bash.im ithappens.me zadolba.li
1113

Сказано без очереди не пущать!

У одного заказчика есть большая и суровая железка под названием Sun Fire E25K, крайне критичная для бизнеса. Управляют сервером два контроллера — встроенные в шасси мелкие серваки с Solaris на борту. Греется этот слон так, что от него можно прикуривать, а с охлаждением в датацентрах вечная проблема. Админы написали скриптик, который берет вывод команды showenvironment, выкусывает из него температуру и в случае достижения определенного значения шлёт почту, где жалуется на некомфортные погодные условия. Всё работает уже с полтора года и все счастливы.

В прошлые выходные между двумя этими контроллерами повис интерконнект — ни файловер не сделать, ни подключить консоль с одного на другой. В общем, отказоустойчивости ноль.

Запланировали работы по исправлению ситуации — сервер надо было выключать целиком. Опустили домены, выключили контроллеры, обесточили сам сервер. Покурили, идем включать. Загрузив контроллеры, даём команду poweron и начинаем медленно покрываться испариной — сервер долго висит на включении вентиляторов. Из опыта я знаю, что такого быть никак не может, ибо вентиляторы включены абсолютно всегда, а сервер пишет, что их включает, чисто для проформы. Сроки работ ограничены, все в панике.

Смотрим лист процессов и наблюдаем, как несчастный контроллер запрашивает состояние температур у выключенного шасси! В лучших традициях советских очередей «привратник» не даёт пролезть вперед другим процессам (например, poweron) даже по большому блату.

После ритуального уничтожения строки запуска скрипта в кроне дело пошло как подобает. Да, в инструкциях такого не пишут — верно утверждение, что «тонкости познаются через факапы»!