Подготовка сервера CentOS Stream 9

Процесс подготовки серверов для установки компонентов системы 5А происходит в несколько этапов:

  1. Настройка SSH-ключей.
  2. Настройка сетевого экрана (Firewall).
  3. Установка и настройка Docker.
  4. Проверка работы systemd.
  5. Проверка наличия crontab.
  6. Установка и настройка FRR.
  7. Установка keepalived для VRRP.
  8. Дополнительные настройки для CentOS Stream 9.
  9. Типичные проблемы и их решение.
  10. Финальная проверка перед развёртыванием приложения.

Для каких задач используются компоненты

  • SSH-ключи — обеспечивают безопасное беспарольное соединение между серверами, необходимое для автоматизации развертывания и управления компонентами балансировщика.
  • Docker — используется для контейнеризации компонентов системы 5А. Это обеспечивает изоляцию, простоту обновления и единообразие окружения на всех поддерживаемых ОС.
  • systemd — служит init-системой для управления сервисами (Docker, FRR), их автозапуском и контролем состояния.
  • crontab — планировщик задач, используемый для выполнения регулярных операций (ротация логов, проверки состояния, обновления маршрутов).
  • FRR (Free Range Routing) — обеспечивает динамическую маршрутизацию по протоколам BGP, OSPF, VRRP, BFD. Эти протоколы необходимы для отказоустойчивой связности сетевых агентов балансировщика.

1. Настройка SSH-ключей

Для обеспечения безопасного и беспарольного доступа между серверами необходимо настроить SSH-ключи.

CentOS Stream 9

  1. Установите пакет openssh-clients:
    sudo dnf install openssh-clients -y
  2. Создайте SSH-ключ:
    ssh-keygen -t rsa -b 4096
  3. Скопируйте публичный ключ:
    ssh-copy-id user@server_ip
  4. Проверьте подключение:
    ssh user@server_ip

2. Настройка сетевого экрана (Firewall)

Перед установкой компонентов системы 5А необходимо открыть порты на всех серверах в соответствии с требованиями, описанными в документе «Требования к серверам» (раздел «Настройка сетевого экрана», Таблицы 1 и 2). Убедитесь, что разрешены как входящие, так и исходящие соединения согласно матрице взаимодействий.

Для CentOS Stream 9 примеры открытия портов приведены в разделе 8 данного документа.

ℹ️

Если вы используете firewalld, после настройки всех правил не забудьте выполнить sudo firewall-cmd --reload.

3. Установка и настройка Docker

CentOS Stream 9

  1. Установите утилиту dnf config-manager, если она не установлена:
    sudo dnf install dnf-plugins-core -y
  2. Добавьте официальный репозиторий Docker:
    sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  3. Установите Docker Engine:
    sudo dnf install docker-ce docker-ce-cli containerd.io -y
  4. Запустите Docker и добавьте его в автозагрузку:
    sudo systemctl enable --now docker
  5. Добавьте пользователя в группу docker:
    sudo usermod -aG docker $USER

    Важно: После выполнения usermod выйдите из системы и зайдите снова, или выполните newgrp docker для текущей сессии.

  6. Проверьте версию Docker:
    docker --version

4. Проверка работы systemd

На всех целевых ОС в качестве init-системы используется systemd. Для проверки его работоспособности выполните следующие команды на каждом сервере:

  1. Убедитесь, что systemd является init-системой. Выполните команду:

    ps -p 1 -o comm=

    Ожидаемый вывод: systemd. Если вывод init или sysvinit, значит, systemd не используется.

  2. Убедитесь, что система загружена не в аварийном режиме. Выполните команду:

    systemctl get-default

    Ожидаемый вывод: multi-user.target или graphical.target. Если вывод rescue.target или emergency.target, верните систему в обычный режим:

    sudo systemctl set-default multi-user.target
    sudo reboot

5. Проверка наличия crontab

Для планирования регулярных задач система 5А использует cron. Убедитесь, что утилита crontab установлена и доступна.

CentOS Stream 9

  1. Проверьте доступность crontab:
    sudo crontab -l
  2. Если команда не найдена, установите пакет cronie:
    sudo dnf install cronie -y
  3. Запустите службу crond:
    sudo systemctl enable --now crond

6. Установка и настройка FRR

CentOS Stream 9

  1. Установите репозиторий EPEL:
    sudo dnf install epel-release -y
  2. Добавьте официальный репозиторий FRR для RHEL 9:
    sudo dnf install https://rpm.frrouting.org/repo/frr-10-repo.el9.noarch.rpm -y
  3. Установите FRR:
    sudo dnf install frr frr-pythontools -y
  4. Включите необходимых демонов в файле /etc/frr/daemons:
    sudo nano /etc/frr/daemons
    Установите:
    zebra=yes
    bgpd=yes
    ospfd=yes
    vrrpd=yes
    bfdd=yes
  5. Создайте файлы конфигурации и настройте права:
    sudo touch /etc/frr/frr.conf
    sudo touch /etc/frr/vtysh.conf
    sudo chown -R frr:frr /etc/frr
    sudo bash -c 'chmod 640 /etc/frr/*.conf'
  6. Запустите FRR:
    sudo systemctl enable --now frr
  7. Проверьте через vtysh:
    sudo vtysh
    Внутри vtysh выполните:
    show running-config
    show ip route
    show ip bgp summary
    show ip ospf neighbor
    show vrrp
    exit

Альтернативный способ (сборка из исходников) – если установка из репозиториев невозможна, используйте инструкцию для Astra SE 1.8, адаптировав установку зависимостей через dnf.

7. Установка keepalived для VRRP

Для обеспечения отказоустойчивости VIP-адресов по протоколу VRRP необходимо установить keepalived на каждый агент балансировки.

Минимальная версия: keepalived ≥ 2.2 (требуется для поддержки VRRPv3 с дробным интервалом анонсов, unicast-режима и корректной работы nopreempt).

Проверка версии после установки:

keepalived --version
# Ожидается: 2.2.x или новее

Установка (CentOS Stream 9):

sudo dnf install -y keepalived
🔧

Сервис keepalived не нужно запускать или включать в автозагрузку вручную. Его конфигурацией и жизненным циклом управляет агент системы «Балансировщик 5А».

8. Дополнительные настройки для CentOS Stream 9

Настройка SELinux

SELinux включён по умолчанию и может блокировать работу компонентов 5А. Для упрощения настройки рекомендуется отключить SELinux:

  1. Временно отключите:
    sudo setenforce 0
  2. Постоянно отключите:
    sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  3. Перезагрузите систему:
    sudo reboot

Настройка firewalld

Общее требование: Перед открытием портов ознакомьтесь с полным списком необходимых портов в документе «Требования к серверам» (Таблицы 1 и 2). Ниже приведены примеры для основных портов системы и портов FRR.

Откройте порты, необходимые для работы FRR (BGP 179/tcp, OSPF 89/tcp, VRRP 112/tcp), а также базовые порты системы 5А (веб-интерфейс, API, БД):

# Порты для FRR
sudo firewall-cmd --permanent --add-port=179/tcp
sudo firewall-cmd --permanent --add-port=89/tcp
sudo firewall-cmd --permanent --add-port=112/tcp
 
# Основные порты системы 5А (пример, полный список см. в требованиях)
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --permanent --add-port=9000/tcp
sudo firewall-cmd --permanent --add-port=5432/tcp
 
# Применить изменения
sudo firewall-cmd --reload
 
# Проверить открытые порты
sudo firewall-cmd --list-ports

9. Типичные проблемы и их решение

ПроблемаРешение
vtysh: Can't open configuration fileНе создан vtysh.conf или неправильные права. Выполните шаг 6 (создание файлов и настройка прав: sudo touch /etc/frr/frr.conf /etc/frr/vtysh.conf && sudo chown -R frr:frr /etc/frr && sudo bash -c 'chmod 640 /etc/frr/*.conf').
FRR не стартует (systemctl status frr показывает ошибку)Проверьте, что в /etc/frr/daemons включены только нужные демоны: zebra=yes, bgpd=yes, ospfd=yes, vrrpd=yes, bfdd=yes. Остальные оставьте no. Также проверьте синтаксис frr.conf.
Ошибка прав на /etc/frr/*.confВыполните sudo chown -R frr:frr /etc/frr && sudo bash -c 'chmod 640 /etc/frr/*.conf' (шаг 6).

10. Финальная проверка перед развёртыванием приложения

Убедитесь, что на каждом сервере выполнены следующие условия:

  • Docker работает: docker info (без ошибок, пользователь в группе docker, раздел 3).
  • FRR запущен: systemctl status frr (активен, нет ошибок - раздел 6).
  • SSH-ключи созданы и настроены (раздел 1).
  • systemd используется как init (раздел 4).
  • crontab доступен (раздел 5).
  • Порты открыты в соответствии с требованиями: проверьте, что на всех серверах разрешены входящие соединения на порты из Таблицы 1 документа «Требования к серверам». Для быстрой проверки можно использовать команду:
    sudo ss -tulpn | grep -E ':(443|9000|5432|50051|9090)'
    (список портов замените на актуальный для вашей конфигурации).

Только после успешной проверки всех пунктов приступайте к установке компонентов Балансировщика 5А.