Обновления на проде
Вопрос
Как организуешь обновление пакетов на парке продовых серверов?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Обновления безопасности автоматически (`unattended-upgrades`, `dnf-automatic`), остальное по плану
Сначала стенд, затем канарейка, потом остальные волнами
Фиксировать версии критичных компонентов (`apt-mark hold`), обновлять их отдельно
Перезапуск сервисов после обновления библиотек (`needrestart`), перезагрузки для ядра по окну обслуживания или live patching
Свой зеркальный репозиторий или снапшоты для воспроизводимости
Мониторинг после обновления и план отката (образы, снапшоты, предыдущие версии пакетов)
Что могут спросить следом
- Как откатить неудачное обновление пакета?
- Чем неизменяемая инфраструктура меняет этот процесс?
Разбор
Разделяю обновления на два потока. Обновления безопасности ставятся автоматически: unattended-upgrades в Ubuntu или dnf-automatic, с отчётом и без автоперезагрузки в рабочее время. Всё остальное, особенно базы, рантаймы и ядро, обновляю по плану: сначала стенд, затем один канареечный сервер, потом волнами, с мониторингом ошибок и задержек после каждой волны. Версии критичных пакетов фиксирую apt-mark hold или versionlock, чтобы они не уехали случайно. После обновления библиотек вроде OpenSSL перезапускаю сервисы, needrestart подскажет какие, а ядру нужна перезагрузка в окно обслуживания или live patching. Для воспроизводимости полезно своё зеркало репозиториев со снапшотами. Откат: предыдущая версия пакета через apt install pkg=версия, а надёжнее снапшот диска или вообще неизменяемые образы, когда сервер не обновляют, а пересоздают из нового образа.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.