Обзор развертывания 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. Используйте следующие команды для управления службой:
-
Запуск службы:
-
Остановка службы:
-
Перезапуск службы:
-
Включение службы при загрузке:
-
Проверка статуса службы:
Для обновления образа Docker юнит systemd автоматически загружает последнюю версию образа, если изменилась конфигурация или файл юнита, либо это можно сделать вручную, перезапустив службу после загрузки образа через команду docker pull nats:latest.