Aller au contenu principal

Temporal (temporal)

Moteur de workflows durables qui exécute les tâches longues des agents et les chaînes du Navin Control Plane. Un seul processus ou rôles frontend, history, matching et worker séparés sur PostgreSQL.

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

Résumé​

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

Licence​

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

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/temporalio/server1.27.4MITclé d'image server, utilisée par frontend, history, matching, worker, condensé sha256:4cf4366ff5f127558161e9d071892519a87681a8df494f03fb228f585a75a782
image de conteneurdocker.io/temporalio/admin-tools1.27.2-tctl-1.18.2-cli-1.3.0MITclé d'image admin-tools, utilisée par schema, condensé sha256:b5ae59dae6ea00c22fc2bdf04a2cfaf59e3e036b8b09ca777f99e2c871396fa2
archive binairetemporal_1.27.4_linux_amd64.tar.gz1.27.4MIThttps://github.com/temporalio/temporal/releases/download/v1.27.4/temporal_1.27.4_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 2048 Mo de mémoire (bloquant, memory).

Réseau et ports​

ComposantNom du portPortOuvert dans le pare-feu de l'hôte
frontendgrpc7233/tcpoui
frontendhttp7243/tcpoui
frontendmetrics9090/tcpoui
frontendmembership6933/tcp (mode cluster)oui
historygrpc7234/tcpoui
historymembership6934/tcpoui
historymetrics9091/tcpoui
matchinggrpc7235/tcpoui
matchingmembership6935/tcpoui
matchingmetrics9092/tcpoui
workergrpc7239/tcpoui
workermembership6939/tcpoui
workermetrics9096/tcpoui

Services et connexions nécessaires​

Détail et résolution : voir Dépendances.

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
Initialisation du schéma (schema)ponctuelbinary, podman-
Frontend (frontend)maîtrebinary, podman7233/tcp, 7243/tcp, 9090/tcp, 6933/tcp (mode cluster)
History (history)maîtrebinary, podman7234/tcp, 6934/tcp, 9091/tcp
Matching (matching)maîtrebinary, podman7235/tcp, 6935/tcp, 9092/tcp
Worker interne (worker)travailleurbinary, podman7239/tcp, 6939/tcp, 9096/tcp

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

Un seul processus exécute frontend, history, matching et worker.

Ce que le mode déploie :

ComposantPlacement
schemamin 1, max 1
frontendmin 1, max 1
historynon utilisé
matchingnon utilisé
workernon utilisé

Rôles séparés (cluster)​

Frontend, history, matching et worker évoluent sur leurs propres hôtes.

Ce que le mode déploie :

ComposantPlacement
schemamin 1, max 1
frontendmin 2, recommandé 2
historymin 2, recommandé 3
matchingmin 2, recommandé 2
workermin 1, recommandé 2

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 Temporal. La carte affiche la licence MIT et les dépendances dont l'installation a besoin. Choisissez la Méthode parmi binary, podman (par défaut binary).

  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. Avec plusieurs composants, placez chacun sur ses hôtes dans Répartition des composants (Proposer un placement propose un placement qui respecte les cardinalités).

  4. Liez les dépendances. À l'étape Liaisons, choisissez pour chaque dépendance (db, visibility) Installer avec la plateforme ou Utiliser une connexion existante ; une dépendance facultative peut rester sur Aucune liaison.

  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.

Haute disponibilité​

Clusternatif (native)
Haute disponibiliténatif (native)
Basculenatif (native)
Réplicationstockage partagé (shared-store)
Quorumgossip (gossip)
Découvertebase de données (database)
Point d'entréerépartiteur (load-balancer)
Documentation officiellehttps://docs.temporal.io/self-hosted-guide/deployment
Paramètre TLS entre pairstls_enabled
Commande d'état du clustercluster_health

Prérequis​

PrérequisDoit être hautement disponibleModesDescription
dbouimodes de niveau ha ou clusterPostgreSQL hautement disponible (persistance).
visibilityouimodes de niveau ha ou clusterPostgreSQL hautement disponible (visibilité).

Topologie par mode​

ModesNiveau le plus haut du catalogueRépartitionComposant du quorumDomaines de panneDescription
standaloneautonome (standalone)unique (single)-1Un processus exécutant frontend, history, matching et worker.
clustercluster (cluster)actif-actif (active-active)-22 instances ou plus de chaque rôle ; les shards history se déplacent entre les instances history.

Remarques​

  • Temporal n'est hautement disponible que si sa persistance l'est : les instances history, matching et frontend n'ont aucun état durable propre.

Paramètres de configuration​

Réseau​

ParamètreTypeDéfautValeurs permisesObligatoireSecretRedémarrageDescription
Port gRPC du frontend (frontend_port)port7233-nonnonnonPort gRPC du service frontend (clients SDK et workers).
Port de l'API HTTP (http_port)port7243-nonnonnonAPI HTTP du frontend (EAI_TEMPORAL_URL du Navin Control Plane).
Port gRPC de history (history_port)port7234-nonnonnonPort gRPC du service history.
Port gRPC de matching (matching_port)port7235-nonnonnonPort gRPC du service matching.
Port gRPC de worker (worker_port)port7239-nonnonnonPort gRPC du service worker interne.
Port de base de l'appartenance (membership_base_port)port6933-nonnonnonPorts Ringpop : frontend base, history base+1, matching base+2, worker base+6.
Port des métriques (metrics_port)port9090-nonnonnonPoint Prometheus de chaque processus Temporal (port de base, plus le décalage du rôle en mode cluster).

Cluster​

ParamètreTypeDéfautValeurs permisesObligatoireSecretRedémarrageDescription
Partitions d'historique (history_shards)int512min 1, max 16384nonnonnonFixé à la création du cluster, ne peut plus être modifié ensuite.
Espace de noms par défaut (default_namespace)stringnavin^[a-z][a-z0-9-]{1,60}$nonnonnonEspace de noms transmis aux clients (EAI_TEMPORAL_NAMESPACE).

Sécurité​

ParamètreTypeDéfautValeurs permisesObligatoireSecretRedémarrageDescription
TLS (tls_enabled)boolfalse-nonnonouiServir le frontend (gRPC et API HTTP) en TLS et protéger le trafic entre les rôles par TLS mutuel, avec les certificats émis par l'autorité de la console.

Dépendances​

Pour chaque dépendance active, le Manager prend la première solution parmi : la liaison choisie dans l'assistant ; un service de la même installation qui la fournit ; un service déjà installé dans le cluster ; la seule connexion du type attendu. Sinon, une dépendance facultative reste non liée, et une dépendance obligatoire est ajoutée à l'installation dans son mode par défaut (la colonne ci-dessous nomme le service du catalogue ajouté).

LiaisonFournie parType de connexionPoint d'accèsFacultativeQuand rien n'est liéDescription
dbpostgresqlpostgresql-nonpostgresql est ajouté à l'installationPersistance principale de Temporal (PostgreSQL 12 ou ultérieur).
visibilitypostgresqlpostgresql-nonpostgresql est ajouté à l'installationStockage de visibilité de Temporal (base PostgreSQL séparée).

Points d'accès​

Point d'accèsSchémaComposantPortCheminParamètre TLSParamètres de liaisonSecrets de liaisonCommande de provisionnement
frontendgrpcfrontend7233 (frontend_port)-tls_enabledtls--
httphttpfrontend7243 (http_port)-tls_enabledtls--

Fichiers de configuration client​

Fichiers rendus pour le téléchargement de la configuration client :

  • temporal.env (client.env.j2)

Commandes​

CommandeComposantCibleDescription
Initialiser le schéma (setup_schema)schemapremier hôteCrée ou met à niveau les schémas principal et de visibilité (idempotent).
Santé du frontend (cluster_health)frontendtous les hôtesVérifie l'API HTTP de chaque frontend.

Contrôles de santé​

Vivacité (par instance)​

ComposantContrôleDétails
frontendTCP {{ host.ip or '127.0.0.1' }}:{{ config.frontend_port }}60 tentatives
historyTCP {{ host.ip or '127.0.0.1' }}:{{ config.history_port }}60 tentatives
matchingTCP {{ host.ip or '127.0.0.1' }}:{{ config.matching_port }}60 tentatives
workerTCP {{ host.ip or '127.0.0.1' }}:{{ config.worker_port }}60 tentatives

Disponibilité (contrôle du service)​

ContrôleDétails
TCP {{ host.ip or '127.0.0.1' }}:{{ config.frontend_port }}-

Contrôles préalables​

ContrôleTypeSignificationSévéritéComposants
memorymemory_mb {"min": 2048}au moins 2048 Mo de mémoirebloquanttous les composants
frontend_port_freeport_free {"param": "frontend_port"}port 7233 libre sur l'hôtebloquantfrontend

Désinstallation​

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

Documentation amont​