Ubuntu 10.04 LTS Server: перевели dev-серверы с 8.04 и разобрались с upstart и LVM-снапшотами
Ubuntu 10.04 LTS (Lucid Lynx) выходит в апреле с пятилетней поддержкой. Перевели несколько dev-серверов с 8.04 - upstart, обновлённый LAMP и наконец нормальные LVM-снапшоты.
Ubuntu 10.04 LTS (Lucid Lynx) выходит в апреле 2010 - первый LTS с пятилетней поддержкой серверной редакции
Ubuntu 10.04 LTS официально выйдет в апреле, но RC уже доступен и несколько недель мы его гоняем на dev-серверах нескольких клиентов. Для серверной редакции Ubuntu объявила поддержку 5 лет вместо трёх - это меняет расчёт: на LTS-серверах можно планировать инфраструктуру без обязательного апгрейда каждые полтора года.
С 8.04 Hardy Heron у нас работало несколько dev-серверов - типичный LAMP, Subversion, немного Python. Поддержка 8.04 заканчивается в апреле 2013, спешить особо некуда, но раз 10.04 выходит LTS, логично переехать сейчас и не копить долг.
Upstart вместо sysvinit: привыкаем
Главная структурная перемена - замена sysvinit на Upstart в качестве системы инициализации. В 8.04 Upstart уже присутствовал, но большинство сервисов всё равно запускалось через классические init.d-скрипты. В 10.04 миграция существенно дальше: apache2, mysql, ssh управляются через Upstart-задания.
Первые дни это раздражало. Привычный service apache2 restart продолжает работать как обёртка, но если лезешь внутрь - смотришь уже /etc/init/, а не /etc/init.d/. Формат конфигов другой, зависимости описываются через start on / stop on, порядок запуска стало чуть проще контролировать декларативно.
На практике нас зацепило одно: кастомный демон на Python, который мы запускали через init.d-скрипт, при переезде повёл себя непредсказуемо - Upstart по умолчанию не перезапускает процессы, завершившиеся с ненулевым кодом, если явно не прописать respawn. Мы привыкли, что в старой схеме это делал отдельный монитор. Полчаса разбирались почему демон не поднялся после перезагрузки. Мелочь, но обидная.
LAMP: PHP 5.3, MySQL 5.1
В 8.04 LTS шёл PHP 5.2 и MySQL 5.0. В 10.04 - PHP 5.3 и MySQL 5.1. Обновление некритическое, но несколько приложений у клиентов написаны ещё под PHP 5.2 с устаревшими конструкциями - ereg_* функции выдают notices, кое-где safe_mode включён в конфиге по привычке, а в PHP 5.3 от него уже отказались. Пришлось пройтись по конфигам и по паре приложений.
MySQL 5.1 против 5.0 - разница ощутимее в плане репликации и partitioning, но на dev-серверах это не принципиально. Производительность на синтетических запросах чуть лучше, реальной нагрузки для измерений пока недостаточно.
Apache 2.2 был в 8.04 и остался в 10.04 - здесь никаких сюрпризов.
LVM-снапшоты: наконец заработало нормально
Это, пожалуй, самое приятное. На 8.04 у нас было несколько серверов с LVM, и снапшоты вели себя паршиво: при активной записи снапшот рос быстро, иногда переполнялся раньше, чем успевали снять копию, и при этом падал вместе с оригинальным томом - поведение известное и неприятное.
В 10.04 ядро 2.6.32, и работа с dm-snapshot там заметно стабильнее. Мы настроили схему: снапшот LVM перед ночным бэкапом, монтируем его в read-only, rsync на резервный сервер, удаляем снапшот. При разумном размере снапшота (выделяем с запасом под объём записи за время бэкапа) - всё проходит чисто. За несколько недель ни одного инцидента с переполнением.
Раньше на 8.04 приходилось либо останавливать базу перед бэкапом, либо мириться с риском. Теперь работает тихо.
Обновление с 8.04: do-release-upgrade
Штатный путь - do-release-upgrade. На двух серверах прошли in-place, на третьем сделали чистую установку - там накопилось достаточно легаси, что чистый старт был разумнее.
In-place апгрейд работает, но на серверах с нестандартными PPA или самосборными пакетами нужно быть аккуратным: менеджер пакетов честно предупреждает о конфликтах, но разрешать их приходится руками. На одном сервере несколько пакетов остались в состоянии "held back" после апгрейда - пришлось доразбираться.
Зависимости в /etc/apt/sources.list от сторонних репозиториев апгрейд отключает автоматически - потом надо возвращать руками под новый дистрибутив. Мелочи, но лучше делать это осознанно, а не удивляться почему пакет не обновляется.
Итог на сейчас
Переезд оправдан. Пятилетняя поддержка серверной редакции - хороший горизонт для планирования у клиентов на сопровождении. Upstart требует привыкания, но после первой недели уже не вызывает вопросов. LVM-снапшоты наконец работают так, как мы хотели. PHP 5.3 потребовал небольшой зачистки легаси-кода - это был полезный повод разобраться с тем, что давно откладывалось.
Продакшн-серверы пока не трогаем - подождём финального релиза в апреле и ещё пару недель стабилизации. Но dev уже живёт на 10.04 и претензий не вызывает.