Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
linux:nats [2022/10/13 08:06] admin |
linux:nats [2024/07/09 09:45] (текущий) admin |
||
---|---|---|---|
Строка 4: | Строка 4: | ||
===== Общие сведения ===== | ===== Общие сведения ===== | ||
+ | Брокер сообщений. Состоит сервера, | ||
+ | Для подключения **нового узла в кластер**, | ||
+ | Сообщения **группируются по темам** и каждый узел знает какие узлы имеют живых подписчиков и на какие темы.\\ | ||
+ | Все сообщения в кластере **доставляются напрямую** от отправителя получателю, | ||
+ | Клиенты знают **всю топологию кластера**, | ||
+ | Работает на порту " | ||
+ | |||
+ | |||
+ | **NATS & NATS Streaming**\\ | ||
+ | NATS реализует **базовую модель** " | ||
+ | **NATS Streaming** устаревшее, | ||
+ | |||
+ | **Авторизация** поддерживается как по логину/ | ||
+ | |||
+ | Для **настройки кластера** нужно добавить параметры в файл конфигурации каждого хоста, к каждому можно настроить метод аутентификации\\ | ||
< | < | ||
- | < | + | < |
- | Брокер сообщений\\ | + | <code bash> |
+ | cluster { | ||
+ | host: ' | ||
+ | port: 7248 | ||
+ | |||
+ | routes = [ | ||
+ | nats-route:// | ||
+ | nats-route:// | ||
+ | ] | ||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | **Мониторинг** | ||
+ | Для мониторинга предусмотрен аргумент запуска **"-m your_port" | ||
+ | При активном соединении работает " | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Конфигурация ===== | ||
+ | Указываются порты для хоста и для кластера отдельно и оба работают, | ||
+ | |||
+ | < | ||
+ | < | ||
+ | <code bash> | ||
+ | debug: | ||
+ | trace: | ||
+ | log_file: " | ||
+ | http_port: 8222 # HTTP monitoring port | ||
+ | port: 4222 | ||
+ | |||
+ | tls { | ||
+ | cert_file: " | ||
+ | key_file: " | ||
+ | ca_file: " | ||
+ | } | ||
+ | |||
+ | cluster { | ||
+ | listen: 0.0.0.0: | ||
+ | routes = [ | ||
+ | nats-route:// | ||
+ | nats-route:// | ||
+ | ] | ||
+ | tls { | ||
+ | cert_file: " | ||
+ | key_file: | ||
+ | ca_file: | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | **Базовый функционал**\\ | ||
+ | Обеспечивает высокую эффективность (но согласованность не гарантируется)\\ | ||
+ | Полезно для данных не критичных к своевременности и согласованности\\ | ||
+ | |||
+ | < | ||
+ | < | ||
+ | <code bash> | ||
+ | # Client port | ||
+ | port: 4222 | ||
+ | |||
+ | # HTTP monitoring port | ||
+ | monitor_port: | ||
+ | |||
+ | # Пользователь | ||
+ | authorization { | ||
+ | users = [ | ||
+ | | ||
+ | ] | ||
+ | timeout: | ||
+ | } | ||
+ | |||
+ | # This is for clustering multiple servers together. | ||
+ | cluster { | ||
+ | # Интерфейс кластера | ||
+ | port: 4224 | ||
+ | |||
+ | # Аутентификация кластерной ссылки | ||
+ | authorization { | ||
+ | | ||
+ | | ||
+ | timeout: 0.75 | ||
+ | } | ||
+ | |||
+ | # Информация о кластере | ||
+ | routes = [ | ||
+ | nats-route:// | ||
+ | nats-route:// | ||
+ | ] | ||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | **Потоковая передача**\\ | ||
+ | Обеспечивает гарантию согласованности. Методы типа ACK и " | ||
+ | Вроде как можно развернуть на основе обычного кластера, | ||
+ | Исполняемый файл уже содержит в себе данный функционал, | ||
+ | |||
+ | < | ||
+ | < | ||
+ | |||
+ | Тот же конфиг, | ||
+ | <code bash> | ||
+ | (...) | ||
+ | jetstream { | ||
+ | store_dir=" | ||
+ | } | ||
+ | (...) | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Установка ===== | ||
+ | ==== Windows ==== | ||
+ | Все предельно просто, | ||
+ | В последнем случае [[https:// | ||
+ | Используя флаги можно запускать на одном хосте несколько экземпляров, | ||
+ | |||
+ | <code bash> | ||
+ | sc.exe create nats-server binPath=" | ||
+ | sc.exe start nats-server | ||
+ | |||
+ | # REM Reload server configuration (сигналы под вопросом) | ||
+ | nats-server.exe --signal reload | ||
+ | |||
+ | # REM Stop the server | ||
+ | nats-server.exe --signal stop [=< | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | <code bash> | ||
+ | nats cheat | ||
+ | |||
+ | |||
+ | ############################################# | ||
+ | Сохранение параметров в контекст | ||
+ | ############################################# | ||
+ | nats context save sys --user sys --password pass | ||
+ | nats context select < | ||
+ | |||
+ | nats --tlsca=./ | ||
+ | |||
+ | nats --tlsca=./ | ||
+ | |||
+ | |||
+ | ############################################# | ||
+ | Системная учетка | ||
+ | ############################################# | ||
+ | добавить в конфиг | ||
+ | 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, | ||
+ | brain.control.protobuf (альтернатива Ice_MesControl2ServerApp, | ||
+ | |||
+ | nats --tlsca=./ | ||
+ | |||
+ | |||
+ | nats --tlsca=./ | ||
+ | nats --tlsca=./ | ||
+ | |||
+ | nats --tlsca=./ | ||
+ | |||
+ | nats --tlsca=./ | ||
- | Состоит из nats сервера, | ||
- | Для подключения нового узла в кластер, | ||
- | Сообщения группируются по темам и каждый узел знает какие узлы имеют живых подписчиков и на какие темы.\\ | ||
- | Все сообщения в кластере доставляются напрямую от отправителя получателю, | ||
- | Клиенты знают всю топологию кластера, | ||
+ | nats --context sys stream ls | ||
+ | nats-cli.exe --tlsca=./ | ||
+ | nats-cli.exe --tlsca=./ | ||
+ | </ | ||
</ | </ |