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

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


linux:nats

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
linux:nats [2022/10/13 08:06]
admin
linux:nats [2024/07/09 09:45] (текущий)
admin
Строка 4: Строка 4:
 ===== Общие сведения ===== ===== Общие сведения =====
  
 +Брокер сообщений. Состоит сервера, клиентской библиотеки и есть еще коннектор\\
 +Для подключения **нового узла в кластер**, достаточно ему указать адрес любого другого узла этого кластера, он получит всю топологию и определит живые/мертвые узлы.\\
 +Сообщения **группируются по темам** и каждый узел знает какие узлы имеют живых подписчиков и на какие темы.\\
 +Все сообщения в кластере **доставляются напрямую** от отправителя получателю, без промежуточных шагов. Nats не записывает сообщения на диск\\
 +Клиенты знают **всю топологию кластера**, поэтому способны сами переподключаться при потери связи\\
 +Работает на порту "**4222**"\\
 +
 +
 +**NATS & NATS Streaming**\\
 +NATS реализует **базовую модель** "публикации/подписки" в то время как **Streaming** предоставляет более **расширенные варианты**.\\
 +**NATS Streaming** устаревшее, работало через другой exe, актуальная реализация это **JetStream**, является надстройкой и встроено в тот же ехе, достаточно запустить с аргументом "-js"\\
 +
 +**Авторизация** поддерживается как по логину/паролю так и по токену. Есть настройка разрешений подписки/публикации\\
 +
 +Для **настройки кластера** нужно добавить параметры в файл конфигурации каждого хоста, к каждому можно настроить метод аутентификации\\
 <details> <details>
-<summary> </summary> +<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: 
 +
 + 
 +  # 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 сервера, клиентской библиотеки и коннектора 
  
-Для подключения нового узла в кластер, достаточно ему указать адрес любого другого узла этого кластера, он получит всю топологию и определит живые/мертвые узлы.\\ 
-Сообщения группируются по темам и каждый узел знает какие узлы имеют живых подписчиков и на какие темы.\\ 
-Все сообщения в кластере доставляются напрямую от отправителя получателю, без промежуточных шагов. Nats не записывает сообщения на диск\\ 
  
-Клиенты знают всю топологию кластера, поэтому способны сами переподключаться при потери связи\\ 
  
 +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> </details>
linux/nats.1665648392.txt.gz · Последнее изменение: 2022/10/13 08:06 — admin