Перейти к содержанию

Обзор развертывания NATS на сервере

Предварительные требования и базовые условия

Для развертывания NATS на сервере необходимо соблюдение следующих спецификаций окружения:

  • Операционная система: Ubuntu (совместимая с Docker и systemd).

  • Привилегии: Для управления контейнерами Docker, службами systemd и правилами межсетевого экрана (firewall) требуются права root или привилегии sudo.

  • Домен: Сервер должен быть настроен для разрешения домена hostkey.in.

  • Порты: Система использует специфические порты для подключения клиентов, мониторинга и внешнего веб-доступа.

FQDN финальной панели

Приложение доступно по полному доменному имени (FQDN) в домене hostkey.in. Формат следует шаблону <prefix><Server ID>.hostkey.in:<port>.

  • Домен: hostkey.in

  • Префикс: nats

  • Внешний порт: 443

  • Пример FQDN: nats<Server ID>.hostkey.in:443

Структура файлов и каталогов

Приложение NATS и его связанные компоненты используют следующую структуру каталогов:

  • Базовый каталог: /opt/nats

  • Каталог конфигурации: /opt/nats/conf

  • Каталог данных: /opt/nats/data

  • Файл конфигурации: /opt/nats/conf/nats-server.conf

  • Каталог конфигурации Nginx: /data/nginx/user_conf.d

  • Каталог Compose для Nginx: /root/nginx

Процесс установки приложения

Сервер NATS развертывается с использованием контейнера Docker, управляемого службой systemd. Установка включает следующие компоненты:

  • Образ Docker: nats:latest

  • Имя контейнера: nats

  • Метод развертывания: Контейнер запускается через файл юнита systemd, который обрабатывает выполнение команды docker run.

  • Конфигурация: Сервер считывает свою конфигурацию из смонтированного файла /opt/nats/conf/nats-server.conf.

Контейнеры Docker и их развертывание

Служба NATS работает как единый контейнер Docker со следующими спецификациями:

  • Образ: nats:latest

  • Имя контейнера: nats

  • Сопоставление портов:

  • Порт клиента: Хост 4222 сопоставляется с контейнером 4222.

  • Порт HTTP-мониторинга: Хост 8222 сопоставляется с контейнером 8222.

  • Монтирование томов (Volume Mounts):

  • Конфигурация: /opt/nats/conf/nats-server.conf монтируется в /etc/nats/nats-server.conf (только для чтения).

  • Данные: /opt/nats/data монтируется в /data внутри контейнера.

  • Команда: Контейнер выполняется с аргументом -c /etc/nats/nats-server.conf.

Прокси-серверы

Внешний доступ к интерфейсу мониторинга NATS осуществляется через обратный прокси Nginx с завершением SSL.

  • Образ прокси: jonasal/nginx-certbot:latest

  • Расположение конфигурации прокси: /root/nginx/compose.yml

  • SSL/Сертификаты: Управляются через Certbot с использованием электронной почты hkadm@hostkey.com.

  • Правило прокси: Конфигурация Nginx направляет трафик с домена на внутренний порт мониторинга NATS.

  • Цель: http://127.0.0.1:8222

  • Блок Location: location /

  • Окружение: Прокси использует файл окружения, расположенный по пути /data/nginx/nginx-certbot.env.

Права доступа и безопасность

Сервер NATS настроен со следующими параметрами безопасности:

  • Режим аутентификации: none (Аутентификация в конфигурации по умолчанию отключена).

  • Токен аутентификации: nats_tk_pzTg6dE4y0hFQwN7cJv1sLr2mX9aK4bH8uV3qR5sY1 (Определен в переменных, но не активен, пока не изменен режим).

  • Пользователь/Пароль: nats / ansible_ssh_pass (Определены в переменных, но не активны, пока не изменен режим).

  • Межсетевой экран (Firewall): Внешний трафик на порт 443 обрабатывается прокси Nginx. Прямой доступ к портам 4222 и 8222 доступен на хосте.

Базы данных

Сервер NATS не использует внешнюю базу данных.

  • Статус JetStream: Отключен (false).

  • Хранилище: Если бы JetStream был включен, он использовал бы каталог /data с максимальным размером хранилища в памяти 1G и максимальным размером файлового хранилища 100G.

Настройки разрешений

К следующим каталогам и файлам NATS применяются следующие права доступа:

  • Каталоги (/opt/nats/conf, /opt/nats/data): Режим 0755.

  • Файл конфигурации (/opt/nats/conf/nats-server.conf): Режим 0644.

  • Файл юнита systemd (/etc/systemd/system/nats.service): Режим 0644.

  • Файл Compose для Nginx (/root/nginx/compose.yml): Режим 0644.

  • Каталог Nginx (/root/nginx): Режим 0755, владелец root:root.

Расположение файлов конфигурации и данных

  • Конфигурация сервера NATS: /opt/nats/conf/nats-server.conf

  • Хранилище данных NATS: /opt/nats/data

  • Файл Compose для Nginx: /root/nginx/compose.yml

  • Конфигурация пользователя Nginx: /data/nginx/user_conf.d/nats<Server ID>.hostkey.in.conf

  • Юнит службы systemd: /etc/systemd/system/nats.service

Доступные порты для подключения

Следующие порты открыты и настроены для службы NATS:

  • 4222: Порт клиента NATS (TCP).

  • 8222: Порт HTTP-мониторинга NATS (TCP).

  • 443: Порт HTTPS для прокси Nginx (Внешний доступ к мониторингу).

Запуск, остановка и обновление

Служба NATS управляется через systemd. Используйте следующие команды для управления службой:

  • Запуск службы:

    systemctl start nats
    

  • Остановка службы:

    systemctl stop nats
    

  • Перезапуск службы:

    systemctl restart nats
    

  • Включение службы при загрузке:

    systemctl enable nats
    

  • Проверка статуса службы:

    systemctl status nats
    

Для обновления образа Docker юнит systemd автоматически загружает последнюю версию образа, если изменилась конфигурация или файл юнита, либо это можно сделать вручную, перезапустив службу после загрузки образа через команду docker pull nats:latest.

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×