Инструменты пользователя

Инструменты сайта


linux:nats

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
linux:nats [2022/10/13 03:25]
admin создано
linux:nats [2024/07/09 09:45] (текущий)
admin
Строка 2: Строка 2:
  
  
-=====  =====+===== Общие сведения =====
  
 +Брокер сообщений. Состоит сервера, клиентской библиотеки и есть еще коннектор\\
 +Для подключения **нового узла в кластер**, достаточно ему указать адрес любого другого узла этого кластера, он получит всю топологию и определит живые/мертвые узлы.\\
 +Сообщения **группируются по темам** и каждый узел знает какие узлы имеют живых подписчиков и на какие темы.\\
 +Все сообщения в кластере **доставляются напрямую** от отправителя получателю, без промежуточных шагов. Nats не записывает сообщения на диск\\
 +Клиенты знают **всю топологию кластера**, поэтому способны сами переподключаться при потери связи\\
 +Работает на порту "**4222**"\\
 +
 +
 +**NATS & NATS Streaming**\\
 +NATS реализует **базовую модель** "публикации/подписки" в то время как **Streaming** предоставляет более **расширенные варианты**.\\
 +**NATS Streaming** устаревшее, работало через другой exe, актуальная реализация это **JetStream**, является надстройкой и встроено в тот же ехе, достаточно запустить с аргументом "-js"\\
 +
 +**Авторизация** поддерживается как по логину/паролю так и по токену. Есть настройка разрешений подписки/публикации\\
 +
 +Для **настройки кластера** нужно добавить параметры в файл конфигурации каждого хоста, к каждому можно настроить метод аутентификации\\
 +<details>
 +<summary>:!: Образец конфигурации </summary>
 +<code bash>
 +cluster {
 +  host: '0.0.0.0'
 +  port: 7248
 +
 +  routes = [
 +    nats-route://192.168.59.103:7244
 +    nats-route://192.168.59.103:7246
 +  ]
 +}
 +</code>
 +</details>
 +
 +
 +**Мониторинг**
 +Для мониторинга предусмотрен аргумент запуска **"-m your_port"**, очень простая, для более расширенного варианта есть утилита **"nats-top"**\\
 +При активном соединении работает "Ping/Pong", параметризовано вроде\\
 +
 +
 +
 +
 +===== Конфигурация =====
 +Указываются порты для хоста и для кластера отдельно и оба работают, видимо и подключения отличаются\\
 +
 +<details>
 +<summary>:!: Пример конфигурации c tls и кластером </summary>
 +<code bash>
 +debug:   true
 +trace:   false
 +log_file: "c:/path/logs/name.log"
 +http_port: 8222 # HTTP monitoring port
 +port: 4222
 +
 +tls {
 +  cert_file: "c:/path/name.crt"
 +  key_file: "c:/path/name.key"
 +  ca_file: "c:/path/rootCA.crt"
 +}
 +
 +cluster {
 +  listen: 0.0.0.0:5222
 +  routes = [
 +    nats-route://ip-1:5222
 +    nats-route://ip-2:5222
 +  ]
 +  tls {
 +    cert_file: "c:/path/name.crt"
 +    key_file:  "c:/path/name.key"
 +    ca_file:   "c:/path/rootCA.crt"
 +  }
 +}
 +
 +</code>
 +</details>
 +
 +
 +**Базовый функционал**\\
 +Обеспечивает высокую эффективность (но согласованность не гарантируется)\\
 +Полезно для данных не критичных к своевременности и согласованности\\
 +
 +<details>
 +<summary>:!: Пример конфигурации </summary>
 +<code bash>
 +  # Client port
 +port: 4222
 +
 +  # HTTP monitoring port
 +monitor_port: 4223
 +
 +  # Пользователь
 +authorization {
 +  users = [
 +         {пользователь: << имя пользователя1>>, пароль: << пароль1>>}
 +  ]
 +  timeout:  1
 +}
 +
 +  # This is for clustering multiple servers together.
 +cluster {
 +     # Интерфейс кластера
 +  port: 4224
 +
 +     # Аутентификация кластерной ссылки
 +  authorization {
 +         пользователь: << имя пользователя2>>
 +         пароль: << пароль2>>
 +    timeout: 0.75
 +  }
 +
 +     # Информация о кластере
 +  routes = [
 +    nats-route:// << имя пользователя 2 >>: << пароль 2 >> @ nats-1: 4224
 +    nats-route:// << имя пользователя 2 >>: << пароль 2 >> @ nats-2: 4224
 +  ]
 +}
 +</code>
 +</details>
 +
 +
 +
 +**Потоковая передача**\\
 +Обеспечивает гарантию согласованности. Методы типа ACK и "гарантия минимум одного прохода" помогают в этом\\
 +Вроде как можно развернуть на основе обычного кластера, из примера выше\\
 +Исполняемый файл уже содержит в себе данный функционал, для запуска используется аргумент "-js"\\
 +
 +<details>
 +<summary>:!: Потоковая передача - JetStream</summary>
 +
 +Тот же конфиг, добавляем только одну группу и в параметры запуска тоже добавить- "-js --cluster_name nats-js"
 +<code bash>
 +(...)
 +jetstream {
 +  store_dir="K:/PF/Nats/data/jetstream"
 +}
 +(...)
 +</code>
 +</details>
 +
 +
 +
 +
 +===== Установка =====
 +==== Windows ====
 +Все предельно просто, есть несколько вариантов: какой то менеджер пакетов "choco", интерпретатор go, и скачать дистрибутив\\
 +В последнем случае [[https://github.com/nats-io/nats-server/releases/tag/v2.9.3|скачиваем]], утилитой "sc" назначаем службой, параметры запуска/конфиги это уже все здесь и опционально\\
 +Используя флаги можно запускать на одном хосте несколько экземпляров, после запуска службой можно управлять аргументом "--signal"\\
 +
 +<code bash>
 +sc.exe create nats-server binPath="c:\nats\nats-server.exe --config=c:\nats\app.conf"
 +sc.exe start nats-server
 +
 +  # REM Reload server configuration (сигналы под вопросом)
 +nats-server.exe --signal reload
 +
 +  # REM Stop the server
 +nats-server.exe --signal stop [=<service name>]
 +</code>
 +
 +
 +
 +
 +<details>
 +<summary>:!: CheatSheet </summary>
 +<code bash>
 +nats cheat
 +
 +
 +#############################################
 +Сохранение параметров в контекст
 +#############################################
 +nats context save sys --user sys --password pass
 +nats context select <name-context>
 +
 +nats --tlsca=./certs/rootCA.crt --server=162.55.230.171 stream ls
 +
 +nats --tlsca=./certs/rootCA.crt --server=162.55.230.171 stream add brain_activity_protobuf --config ./stream_configs/brain_activity_protobuf.json
 +
 +
 +#############################################
 +Системная учетка
 +#############################################
 +добавить в конфиг 
 +accounts: {
 +  $SYS: {
 +    users: [{user: sys, password: pass}]
 +  }
 +}
 +
 +затем в cli:
 +
 +nats --context sys --user sys --password pass server list
 +
 +
 +#################################
 +Удаление хоста из метаданных 
 +#################################
 +
 +nats server cluster peer-remove RztkeQup
 +
 +*******************************************************************
 +
 +Названия стримов 
 + brain.activity.protobuf (альтернатива Ice_AccountsActivity, только на protobuf) 
 + brain.control.protobuf (альтернатива Ice_MesControl2ServerApp, только на protobuf).
 +
 +nats --tlsca=./certs/rootCA.crt --server=162.55.230.171 stream add brain_activity_protobuf --config ./stream_configs/brain_activity_protobuf.json
 +
 +
 +nats --tlsca=./certs/rootCA.crt --server=162.55.230.171 --user sys --password pass stream ls
 +nats --tlsca=./certs/rootCA.crt --server=162.55.230.171 stream rm brain_activity_protobuf -f
 +
 +nats --tlsca=./certs/rootCA.crt --server=162.55.230.171 stream add brain_activity_protobuf --config ./stream_configs/brain_activity_protobuf.json
 +
 +nats --tlsca=./certs/rootCA.crt --server=162.55.230.171 stream add brain_control_protobuf --config ./stream_configs/brain_control_protobuf.json
 +
 +
 +
 +
 +nats --context sys stream ls
 +
 +nats-cli.exe --tlsca=./certs/rootCA.crt --server=168.119.10.29 stream ls
 +
 +nats-cli.exe --tlsca=./certs/rootCA.crt --server=135.181.6.30 stream ls
 +</code>
 +
 +</details>
 +
 +
 +
 +
 +=====  =====
  
 ====  ==== ====  ====
linux/nats.1665631510.txt.gz · Последнее изменение: 2022/10/13 03:25 — admin