Подготовка сервера RedOS 7.3

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

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

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

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

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

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

ℹ️

Рекомендация по безопасности: для развёртывания системы используйте выделенный jump-хост (промежуточный сервер). Это повышает безопасность (снижает риск компрометации учётных данных) и упрощает управление ключами доступа. Подробнее о настройке jump-хоста см. в разделе Типичные проблемы.

RedOS 7.3

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

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

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

Для RedOS 7.3 примеры открытия портов приведены в разделе 8 данного документа (если используется firewalld). Если firewalld отсутствует, настройка выполняется стандартными средствами (iptables, nftables).

ℹ️

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

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

RedOS 7.3

Перед установкой Docker удалите конфликтующие пакеты (podman, старые версии docker, cri-dockerd):

# Проверить наличие конфликтующих пакетов
rpm -qa | grep -E 'docker|podman|cri|containerd'
 
# Удалить найденные конфликтующие пакеты (если они не нужны для других задач)
sudo yum remove docker docker-ce docker-ce-cli containerd.io cri-dockerd podman-docker -y
sudo yum autoremove -y
sudo yum clean all

Для установки Docker следуйте официальной инструкции РЕД ОС 7.3:

После выполнения официальной инструкции дополнительно выполните:

# Добавить текущего пользователя в группу docker
sudo usermod -aG docker $USER
# Проверить работоспособность Docker
docker info

Если официальная инструкция отсутствует или недоступна, используйте стандартную установку Docker (см. инструкцию для CentOS 7, dnf необходимо заменить на yum).

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 установлена и доступна.

RedOS 7.3

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

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

RedOS 7.3

Пакет FRR доступен в стандартных репозиториях RedOS 7.3.

  1. Установите FRR:
    sudo yum install frr frr-pythontools -y
  2. Включите необходимых демонов в файле /etc/frr/daemons:
    sudo nano /etc/frr/daemons
    Установите:
    zebra=yes
    bgpd=yes
    ospfd=yes
    vrrpd=yes
    bfdd=yes
  3. Создайте файлы конфигурации и настройте права:
    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'
  4. Запустите FRR:
    sudo systemctl enable --now frr

    Примечание: Эта команда одновременно включает автозагрузку службы и запускает её. После выполнения убедитесь, что служба активна (см. шаг 6).

  5. Проверьте корректность конфигурации и статус службы:
    sudo systemctl status frr
    Убедитесь, что в выводе присутствует active (running). Затем проверьте конфигурацию через vtysh:
    sudo vtysh
    Внутри vtysh выполните:
    show running-config
    show ip route
    show ip bgp summary
    show ip ospf neighbor
    show vrrp
    exit

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

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

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

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

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

Установка (RedOS 7.3):

sudo yum install -y keepalived
ℹ️

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

8. Дополнительные настройки для RedOS 7.3

Настройка 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

Firewalld может отсутствовать в RedOS 7.3. Если он не нужен, пропустите настройку. Если требуется:

sudo yum install firewalld -y
sudo systemctl enable --now firewalld
# Затем открыть порты через firewall-cmd (аналогично CentOS)

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

# Порты для 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=8443/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').
Конфликт версий Docker CLIУдалите конфликтующие пакеты (шаг 3 для RedOS 7.3: sudo yum remove docker docker-ce docker-ce-cli containerd.io cri-dockerd podman-docker -y) и переустановите Docker по официальной инструкции.
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).
SSH-подключение отклоняется (Permission denied) при развертывании с самого сервераРекомендация: выполняйте развертывание с выделенного jump-хоста (промежуточного сервера). Это повышает безопасность и упрощает управление ключами. Если jump-хост не используется, убедитесь, что ваш публичный ключ скопирован на целевой сервер (ssh-copy-id), проверьте права на каталог ~/.ssh (должен быть 700) и файл ~/.ssh/authorized_keys (600). Временно можно включить аутентификацию по паролю в /etc/ssh/sshd_config (параметр PasswordAuthentication yes) и перезапустить sshd, но после завершения настройки рекомендуется отключить.

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

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

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

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