Aller au contenu principal

NATS (nats)

Système de messagerie avec la persistance JetStream pour les événements et les files de travail. Serveur unique ou cluster avec routes.

Généré depuis catalog/services/nats.yaml : ne pas modifier à la main.

Résumé​

Version2.11.17
Usageinstaller et configurer
Coucheinfrastructure (présentée à part)
CatégoriePlateformes de données
Méthodes d'installationbinary, podman
Connexion externenats
Réservé au bac à sablenon

Licence​

Identifiant SPDXApache-2.0
Politique de licencelicence socle (MIT ou Apache-2.0)
Exception de licence-
Composant de la plateformenats

Paquets et artefacts​

Un paquet que publie le projet du service (son image, son archive binaire, son paquet Python ou système) porte la licence du service ; un paquet tiers porte la licence écrite sur sa ligne, lue dans les métadonnées officielles du projet amont.

TypePaquetVersionLicenceDétails
image de conteneurdocker.io/library/nats2.11.17Apache-2.0clé d'image nats, utilisée par server, condensé sha256:c991221cdddd53a24893cd18a90faf7a42396108496aed076bb982a349e76484
archive binairenats-server-v2.11.17-linux-amd64.tar.gz2.11.17Apache-2.0https://github.com/nats-io/nats-server/releases/download/v2.11.17/nats-server-v2.11.17-linux-amd64.tar.gz, x86_64, somme de contrôle sha256

Les images sont épinglées par étiquette dans le descripteur, et par condensé (digest) quand le descripteur en déclare un (le bundle hors ligne refuse alors une image téléchargée qui ne le porte pas) ; le condensé est enregistré dans le miroir du Manager à l'import du bundle hors ligne, et chaque téléchargement ou chargement est vérifié par rapport à lui.

Systèmes et architectures pris en charge​

MéthodeSystèmes d'exploitationArchitectures
binaryfamille RHEL (dnf), famille Debian (apt), Arch Linux (pacman)x86_64 (architecture des artefacts du descripteur)
podmanfamille RHEL (dnf), famille Debian (apt), Arch Linux (pacman)x86_64, aarch64 (non restreintes par le descripteur)

Systèmes hôtes certifiés : RHEL 8/9/10, Rocky Linux 8/9/10, AlmaLinux 8/9/10, Oracle Linux 8/9, CentOS Stream 9/10, Ubuntu 22.04/24.04, Debian 12, Arch Linux (rolling). Le contrôle préalable des hôtes accepte ces systèmes (une autre version d'une famille connue donne un avertissement, une version en fin de vie est refusée) et les architectures x86_64 et aarch64.

Prérequis​

Hôte​

  • au moins 1024 Mo de mémoire (bloquant, memory).

Réseau et ports​

ComposantNom du portPortOuvert dans le pare-feu de l'hôte
serverclient4222/tcpoui
serverroute6222/tcpoui
servermonitor8222/tcpoui

Services et connexions nécessaires​

Ce service n'a aucune dépendance.

Méthodes et modes d'installation​

MéthodeDéfautCe que la méthode utilise
binaryouiles archives binaires du descripteur, décompressées dans le répertoire du service
podman-les images de conteneur du descripteur, exécutées par Podman sous systemd

Composants​

ComposantTypeMéthodes d'installationPorts
Serveur NATS (server)maîtrebinary, podman4222/tcp, 6222/tcp, 8222/tcp

Serveur unique (standalone) (par défaut)​

Un seul serveur NATS.

Ce que le mode déploie :

ComposantPlacement
servermin 1, max 1

Cluster (cluster)​

Serveurs reliés par des routes ; JetStream exige un nombre impair (3 ou 5) pour son quorum Raft.

Ce que le mode déploie :

ComposantPlacement
servermin 3, nombre impair, recommandé 3

Installer ce service​

L'assistant d'installation du Navin Manager planifie, valide et exécute l'installation ; il faut la permission services:install sur le cluster.

  1. Ouvrez l'assistant. Dans Clusters, choisissez l'action de ligne Installer des services du cluster cible. L'assistant s'ouvre sur sa première étape, Service.

  2. Choisissez le service. À l'étape Service, sélectionnez NATS. La carte affiche la licence Apache-2.0. Choisissez la Méthode parmi binary, podman (par défaut binary). Pour enregistrer à la place un service nats existant de votre organisation, activez Utiliser un service externe existant.

  3. Choisissez les hôtes et le mode. À l'étape Hôtes, cochez les hôtes, puis choisissez le Mode : standalone (par défaut), cluster. Chaque mode déploie les composants listés dans Méthodes et modes d'installation.

  4. Liaisons. Ce service n'a aucune dépendance : l'étape Liaisons n'a rien à lier.

  5. Configurez. À l'étape Configuration, relisez les paramètres (voir Paramètres de configuration). Les mots de passe laissés vides avec une valeur générée par défaut sont générés et scellés par le Manager.

  6. Relisez et installez. À l'étape Installation, le Manager valide le plan et affiche l'ordre d'installation ; quand il indique « Le plan est valide. Prêt pour l'installation. », choisissez Installer. Un mode hautement disponible n'est installé que si ses contrôles HA réussissent.

  7. Vérifiez. L'opération se termine quand les contrôles de santé de chaque instance réussissent (voir Contrôles de santé) ; le service apparaît alors en marche dans Services. Ouvrez le service et choisissez Lancer le test fonctionnel dans la carte Contrôles : S'abonne à un sujet neuf, y publie un message et attend sa livraison (protocole NATS de base).

Haute disponibilité​

Clusternatif (native)
Haute disponibiliténatif (native)
Basculecôté client (client)
Réplicationnatif (native)
QuorumRaft (raft)
Découvertestatique (static)
Point d'entréedécouverte par le client (client-discovery)
Documentation officiellehttps://docs.nats.io/learn/clustering/
Paramètre TLS entre pairstls_enabled
Commande d'état du clusterserver_report

Topologie par mode​

ModesNiveau le plus haut du catalogueRépartitionComposant du quorumDomaines de panneDescription
standaloneautonome (standalone)unique (single)-1Un serveur NATS.
clustercluster (cluster)actif-actif (active-active)server3Serveurs reliés par des routes ; JetStream garde un quorum Raft sur un nombre impair de serveurs.

Remarques​

  • Les flux JetStream ne sont répliqués que s'ils sont créés avec 3 (ou 5) réplicas ; les clients listent plusieurs serveurs et se reconnectent seuls.

Paramètres de configuration​

Réseau​

ParamètreTypeDéfautValeurs permisesObligatoireSecretRedémarrageDescription
Port client (client_port)port4222-nonnonnonPort des connexions clientes.
Port des routes (cluster_port)port6222-nonnonnonPort des routes entre les serveurs du cluster.
Port de supervision (monitor_port)port8222-nonnonnonPort des points de supervision HTTP (/healthz, /varz).

JetStream​

ParamètreTypeDéfautValeurs permisesObligatoireSecretRedémarrageDescription
JetStream (jetstream_enabled)booltrue-nonnonnonActiver les flux persistants.
Disque JetStream (jetstream_max_file)size10g-nonnonnonDisque maximal utilisé par les flux.
Mémoire JetStream (jetstream_max_memory)size1g-nonnonnonMémoire maximale utilisée par les flux en mémoire.

Sécurité​

ParamètreTypeDéfautValeurs permisesObligatoireSecretRedémarrageDescription
TLS (tls_enabled)boolfalse-nonnonnonExiger TLS pour les clients et les routes avec le certificat de l'autorité de la console.
Utilisateur (username)stringnavin^[A-Za-z0-9_-]{1,64}$nonnonnonUtilisateur des connexions clientes.
Mot de passe (password)passwordgénéré-nonouinonMot de passe de l'utilisateur client.
Mot de passe des routes (route_password)passwordgénéré-nonouinonIdentifiant des routes entre serveurs.

Points d'accès​

Point d'accèsSchémaComposantPortCheminParamètre TLSParamètres de liaisonSecrets de liaisonCommande de provisionnement
clientnatsserver4222 (client_port)-tls_enabledusernamepassword-

Commandes​

CommandeComposantCibleDescription
Rapport des serveurs (server_report)servertous les hôtesLit /varz et /routez de chaque serveur (connexions, routes, mémoire).
Rapport JetStream (jetstream_report)serverpremier hôteLit /jsz (flux, consommateurs, leader méta).

Contrôles de santé​

Vivacité (par instance)​

ComposantContrôleDétails
serverHTTP http://{{ host.ip or '127.0.0.1' }}:{{ config.monitor_port }}/healthzAttendu 200 ; 30 tentatives

Disponibilité (contrôle du service)​

ContrôleDétails
HTTP http://{{ host.ip or '127.0.0.1' }}:{{ config.monitor_port }}/healthz?js-enabled-only=trueAttendu 200

Test fonctionnel​

S'abonne à un sujet neuf, y publie un message et attend sa livraison (protocole NATS de base). (server: publish_subscribe)

Contrôles préalables​

ContrôleTypeSignificationSévéritéComposants
memorymemory_mb {"min": 1024}au moins 1024 Mo de mémoirebloquanttous les composants
client_port_freeport_free {"param": "client_port"}port 4222 libre sur l'hôtebloquanttous les composants

Sauvegarde et restauration​

Archive du magasin JetStream prise pendant un arrêt de quelques secondes du serveur (flux, consommateurs et messages).

Formatnats-jetstream
Composantserver
Fichiers{{ backup.dir }}/jetstream.tar.gz
Test de restaurationnon
Instances arrêtées pendant la restaurationoui

Mise à niveau​

Prise en charge depuis2.11.4
Avec étatoui
Sauvegarde avant la mise à niveauoui
Retour arrièreoui

Désinstallation​

Chemins supprimés quand les données sont purgées : {{ paths.data }}, {{ paths.log }}.

Liens rapides​

  • Supervision : http://{{ host.fqdn }}:{{ config.monitor_port }}/varz

Documentation amont​