Поддержка сервера Rocky Linux 9

Этот материал предоставит вам несколько рекомендаций по поддержке сервера Rocky Linux в актуальном состоянии. Чтобы ваши серверы продолжали безопасно работать без вашего вмешательства в будущем, вы можете предпринять множество шагов.

Итак, кроме автоматических и стандартных параметров существует ряд других инструментов и конфигураций, которые вы можете применить к большинству серверов Rocky Linux. Если вы администрируете свой сервер самостоятельно, настройка всех сред вручную может нанести вред системе и привести к появлению ошибок.

Мы рассмотрим:

  • Тестирование плавной перезагрузки в соответствии с передовыми методами управления приложениями, она минимизирует все связанные с обновлениями сложности
  • Настройку автоматического обновления для большинства пакетов и библиотек на сервере
  • Исправление ядра в реальном времени и другие передовые методы обновления ядра

Требования

  • Сервер Rocky Linux 9 и пользователь sudo. Узнать больше о настройке сервера можно в этом мануале.

1: Рекомендации по управлению приложениями

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

Приложения в стеке по возможности должны управляться системой инициализации вашего сервера. В большинстве современных дистрибутивов Linux (в том числе и в Rocky Linux) этой системой является systemd. systemctl – это команда для взаимодействия с запущенными сервисами и для их автоматического перезапуска по мере необходимости. Практически все программы, которые были установлены через менеджер пакетов и которые работают в фоновом режиме, автоматически поставляются с сервисом systemd и конфигурационным файлом.

Читайте также: Управление сервисами и юнитами Systemd с помощью Systemctl

Когда вы запускаете свое собственное ПО или программы, развернутые из репозиториев Git, рекомендуем написать пользовательские юнит-файлы для интеграции с systemd. В качестве упрощенного аналога можно также использовать supervisor или системный планировщик cron с @reboot.

Читайте также

Когда конфигурация будет готова, обязательно проверьте ее после перезагрузки. Чтобы перезагрузить сервер, запустите: sudo shutdown now -r – это остановит запущенные процессы и перезагрузит машину. Вместо now можно указать точное время (в формате чч:мм) или период (в минутах), по прошествии которого нужно перезапустить сервер. Производственные развертывания, как правило, не требуют постороннего вмешательства после каких-либо незапланированных простоев – обычно все необходимые сервисы и конечные точки восстанавливаются автоматически.

Итак, для начала следует убедиться, что у вашего сервера не будет проблем с поддержкой приложений при перезагрузке. Далее мы поговорим о том, как планировать автоматические обновления.

2: Настройка автоматических обновлений

Менеджер пакетов Rocky, который называется dnf, имеет два основных способа полного обновления системы. Если запустить команду dnf upgrade без указания имени пакета, тогда обновится каждый пакет в системе. Также можно выполнить dnf upgrade-minimal для обновления каждого пакета только до последней версии исправления ошибок или безопасности во избежание нежелательных изменений в среде. Подробно с командами dnf можно ознакомиться в этом мануале.

Кроме того, Rocky предоставляет уникальный инструмент для автоматической установки исправлений безопасности и других важных обновлений — dnf-automatic. Его можно установить с помощью dnf:

sudo dnf install dnf-automatic -y

Команда dnf-automatic не запускается автоматически после установки. Вместо этого она предоставляет несколько сервисов, которые можно зарегистрировать в Systemd, чтобы настроить ее поведение:

  • dnf-automatic — использует параметры файла конфигурации dnf-automatic в /etc/dnf/automatic.
  • dnf-automatic-notifyonly — уведомляет о доступных обновлениях, но не устанавливает их.
  • dnf-automatic-download — загружает пакеты, но не устанавливает их.
  • dnf-automatic-install — устанавливает загруженные пакеты.

В этой статье мы включим службу dnf-automatic-install, но сначала нужно внести изменения в файл конфигурации dnf-automatic. Откройте файл с помощью vi или любого другого текстового редактора:

sudo vi /etc/dnf/automatic

Вы увидите:

[commands]
#  What kind of upgrade to perform:
# default                            = all available upgrades
# security                           = only the security upgrades
upgrade_type = security
random_sleep = 0

# Maximum time in seconds to wait until the system is on-line and able to
# connect to remote repositories.
network_online_timeout = 60

# To just receive updates use dnf-automatic-notifyonly.timer

# Whether updates should be downloaded when they are available, by
# dnf-automatic.timer. notifyonly.timer, download.timer and
# install.timer override this setting.
download_updates = yes

# Whether updates should be applied when they are available, by
# dnf-automatic.timer. notifyonly.timer, download.timer and
# install.timer override this setting.
apply_updates = no

Большинство опций в этом файле соответствуют разным переопределениям, которые предоставляют службы Systemd. Исключением является upgrade_type, которая по умолчанию имеет значение default. Если вы собираетесь внедрять автоматические обновления (наиболее проактивная конфигурация), то рекомендуем по умолчанию устанавливать только обновление безопасности, чтобы избежать неожиданных изменений в функционале. Измените значение upgrade_type на security, как показано в примере выше, затем сохраните и закройте файл.

Теперь можно включить службу с помощью systemctl:

sudo systemctl enable dnf-automatic-install.timer

Убедиться, что служба dnf-automatic-install запущена правильно, можно с помощью systemctl:

sudo systemctl status dnf-automatic-install

Вы получите результат:

dnf-automatic-install.service - dnf automatic install updates
   Loaded: loaded (/usr/lib/systemd/system/dnf-automatic-install.service; static; vendor preset: disabled)
   Active: inactive (dead)

Jul 14 21:01:03 droplet-name dnf-automatic[40103]: No security updates needed, but 154 updates available
Jul 14 21:01:03 droplet-name systemd[1]: dnf-automatic-install.service: Succeeded.
Jul 14 21:01:03 droplet-name systemd[1]: Started dnf automatic install updates.

В отличии от некоторых служб Systemd, dnf-automatic реализована как timer, а не как постоянно работающая в фоновом режиме служба. Потому для нее нормально возвращать статус Active: inactive (dead), пока она загружена, а логи подтверждают успешные запуски.

Вы можете проверить детали работы службы с помощью systemctl cat:

sudo systemctl cat dnf-automatic-install.time

Вы получите:

[Unit]
Description=dnf-automatic-install timer
# See comment in dnf-makecache.service
ConditionPathExists=!/run/ostree-booted
Wants=network-online.target

[Timer]
OnCalendar=*-*-* 6:00
RandomizedDelaySec=60m
Persistent=true

[Install]
WantedBy=timers.target

По умолчанию служба настроена на запуск в 6:00 каждый день. Не нужно изменять это значение.

Теперь у вас есть всё для загрузки необходимых обновлений безопасности без какого-либо постороннего вмешательства. В последнем разделе мы поговорим о том, как обновлять ядро ​​и как лучше проводить перезагрузку сервера, когда она необходима.

3: Обновление и исправление ядра

Ядро системы нужно обновлять реже, чем все остальные пакеты. В Linux ядро содержит (почти) все рабочие аппаратные драйверы и отвечает за большинство низкоуровневых системных взаимодействий. Обычно ядро необходимо обновлять только в том случае, если на сервере обнаружена уязвимость и ее нужно устранить, если вам нужно добавить новую функцию ядра или если ядро ​​сильно устарело и на нем скопилось множество ошибок.

К сожалению, универсального метода автоматически запланировать обновление ядра Linux не существует. Дело в том, что традиционно для обновления ядра требовалась полная перезагрузка системы, а планирование перезагрузки невозможно без сведений о среде. Как правило, от сервера ждут круглосуточной доступности (насколько это возможно), а перезагрузка может занять непредсказуемое количество времени или потребовать ручного вмешательства.

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

Читайте также: Архитектурное проектирование приложений в Kubernetes

Включение Livepatch

Избежать простоев во время обновления ядра можно с помощью функции Linux под названием Livepatch. Она позволяет выполнять обновления ядра без перезагрузки. В Rocky Linux есть два основных мейнтейнера: kpatch от Red Hat, который предоставляет livepatch для Red Hat Enterprise Linux, и KernelCare, которая поддерживает Rocky Linux вместе с большинством других основных дистрибутивов Linux. Оба варианта доступны только по регистрации.

Из-за работы модели лицензирования Red Hat Enterprise Linux вы не сможете получать оперативные исправления ядра через kpatch в Rocky Linux. Поскольку Rocky во многом действует как нелицензионная версия Red Hat, то это не дает возможности зарегистрироваться для обновления ядра в режиме реального времени без Red Hat с полной лицензией. Способ включения Rocky и RHEL одинаковый. Сначала установим пакет kpatch-dnf:

sudo dnf install kpatch-dnf

Затем запустите dnf kpatch auto для автоматической подписки на службы исправления в реальном времени:

sudo dnf kpatch auto

Last metadata expiration check: 0:00:06 ago on Thu 14 Jul 2022 09:12:07 PM UTC.
Dependencies resolved.
Nothing to do.
Complete!

kpatch проверит настроенные сервисы исправлений и, не найдя их, корректно завершит работу. В Red Hat вместо этого выполняется проверка лицензии и регистрация на серверах kpatch Red Hat. Также можете рассмотреть KernelCare как вариант коммерческой поддержки.

Заключение

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

Tags: ,

Добавить комментарий