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é
| Version | 1.27.4 |
| Usage | installer et configurer |
| Couche | infrastructure (présentée à part) |
| Catégorie | Plateformes de données |
| Méthodes d'installation | binary, podman |
| Connexion externe | non |
| Réservé au bac à sable | non |
Licence
| Identifiant SPDX | MIT |
| Politique de licence | licence socle (MIT ou Apache-2.0) |
| Exception de licence | - |
| Composant de la plateforme | temporal |
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.
| Type | Paquet | Version | Licence | Détails |
|---|---|---|---|---|
| image de conteneur | docker.io/temporalio/server | 1.27.4 | MIT | clé d'image server, utilisée par frontend, history, matching, worker, condensé sha256:4cf4366ff5f127558161e9d071892519a87681a8df494f03fb228f585a75a782 |
| image de conteneur | docker.io/temporalio/admin-tools | 1.27.2-tctl-1.18.2-cli-1.3.0 | MIT | clé d'image admin-tools, utilisée par schema, condensé sha256:b5ae59dae6ea00c22fc2bdf04a2cfaf59e3e036b8b09ca777f99e2c871396fa2 |
| archive binaire | temporal_1.27.4_linux_amd64.tar.gz | 1.27.4 | MIT | https://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éthode | Systèmes d'exploitation | Architectures |
|---|---|---|
binary | famille RHEL (dnf), famille Debian (apt), Arch Linux (pacman) | x86_64 (architecture des artefacts du descripteur) |
podman | famille 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
| Composant | Nom du port | Port | Ouvert dans le pare-feu de l'hôte |
|---|---|---|---|
frontend | grpc | 7233/tcp | oui |
frontend | http | 7243/tcp | oui |
frontend | metrics | 9090/tcp | oui |
frontend | membership | 6933/tcp (mode cluster) | oui |
history | grpc | 7234/tcp | oui |
history | membership | 6934/tcp | oui |
history | metrics | 9091/tcp | oui |
matching | grpc | 7235/tcp | oui |
matching | membership | 6935/tcp | oui |
matching | metrics | 9092/tcp | oui |
worker | grpc | 7239/tcp | oui |
worker | membership | 6939/tcp | oui |
worker | metrics | 9096/tcp | oui |
Services et connexions nécessaires
db:postgresql.visibility:postgresql.
Détail et résolution : voir Dépendances.
Méthodes et modes d'installation
| Méthode | Défaut | Ce que la méthode utilise |
|---|---|---|
binary | oui | les 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
| Composant | Type | Méthodes d'installation | Ports |
|---|---|---|---|
Initialisation du schéma (schema) | ponctuel | binary, podman | - |
Frontend (frontend) | maître | binary, podman | 7233/tcp, 7243/tcp, 9090/tcp, 6933/tcp (mode cluster) |
History (history) | maître | binary, podman | 7234/tcp, 6934/tcp, 9091/tcp |
Matching (matching) | maître | binary, podman | 7235/tcp, 6935/tcp, 9092/tcp |
Worker interne (worker) | travailleur | binary, podman | 7239/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 :
| Composant | Placement |
|---|---|
schema | min 1, max 1 |
frontend | min 1, max 1 |
history | non utilisé |
matching | non utilisé |
worker | non utilisé |
Rôles séparés (cluster)
Frontend, history, matching et worker évoluent sur leurs propres hôtes.
Ce que le mode déploie :
| Composant | Placement |
|---|---|
schema | min 1, max 1 |
frontend | min 2, recommandé 2 |
history | min 2, recommandé 3 |
matching | min 2, recommandé 2 |
worker | min 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.
-
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.
-
Choisissez le service. À l'étape Service, sélectionnez Temporal. La carte affiche la licence
MITet les dépendances dont l'installation a besoin. Choisissez la Méthode parmibinary,podman(par défautbinary). -
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). -
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. -
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.
-
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.
-
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é
| Cluster | natif (native) |
| Haute disponibilité | natif (native) |
| Bascule | natif (native) |
| Réplication | stockage partagé (shared-store) |
| Quorum | gossip (gossip) |
| Découverte | base de données (database) |
| Point d'entrée | répartiteur (load-balancer) |
| Documentation officielle | https://docs.temporal.io/self-hosted-guide/deployment |
| Paramètre TLS entre pairs | tls_enabled |
| Commande d'état du cluster | cluster_health |
Prérequis
| Prérequis | Doit être hautement disponible | Modes | Description |
|---|---|---|---|
db | oui | modes de niveau ha ou cluster | PostgreSQL hautement disponible (persistance). |
visibility | oui | modes de niveau ha ou cluster | PostgreSQL hautement disponible (visibilité). |
Topologie par mode
| Modes | Niveau le plus haut du catalogue | Répartition | Composant du quorum | Domaines de panne | Description |
|---|---|---|---|---|---|
standalone | autonome (standalone) | unique (single) | - | 1 | Un processus exécutant frontend, history, matching et worker. |
cluster | cluster (cluster) | actif-actif (active-active) | - | 2 | 2 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ètre | Type | Défaut | Valeurs permises | Obligatoire | Secret | Redémarrage | Description |
|---|---|---|---|---|---|---|---|
Port gRPC du frontend (frontend_port) | port | 7233 | - | non | non | non | Port gRPC du service frontend (clients SDK et workers). |
Port de l'API HTTP (http_port) | port | 7243 | - | non | non | non | API HTTP du frontend (EAI_TEMPORAL_URL du Navin Control Plane). |
Port gRPC de history (history_port) | port | 7234 | - | non | non | non | Port gRPC du service history. |
Port gRPC de matching (matching_port) | port | 7235 | - | non | non | non | Port gRPC du service matching. |
Port gRPC de worker (worker_port) | port | 7239 | - | non | non | non | Port gRPC du service worker interne. |
Port de base de l'appartenance (membership_base_port) | port | 6933 | - | non | non | non | Ports Ringpop : frontend base, history base+1, matching base+2, worker base+6. |
Port des métriques (metrics_port) | port | 9090 | - | non | non | non | Point Prometheus de chaque processus Temporal (port de base, plus le décalage du rôle en mode cluster). |
Cluster
| Paramètre | Type | Défaut | Valeurs permises | Obligatoire | Secret | Redémarrage | Description |
|---|---|---|---|---|---|---|---|
Partitions d'historique (history_shards) | int | 512 | min 1, max 16384 | non | non | non | Fixé à la création du cluster, ne peut plus être modifié ensuite. |
Espace de noms par défaut (default_namespace) | string | navin | ^[a-z][a-z0-9-]{1,60}$ | non | non | non | Espace de noms transmis aux clients (EAI_TEMPORAL_NAMESPACE). |
Sécurité
| Paramètre | Type | Défaut | Valeurs permises | Obligatoire | Secret | Redémarrage | Description |
|---|---|---|---|---|---|---|---|
TLS (tls_enabled) | bool | false | - | non | non | oui | Servir 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é).
| Liaison | Fournie par | Type de connexion | Point d'accès | Facultative | Quand rien n'est lié | Description |
|---|---|---|---|---|---|---|
db | postgresql | postgresql | - | non | postgresql est ajouté à l'installation | Persistance principale de Temporal (PostgreSQL 12 ou ultérieur). |
visibility | postgresql | postgresql | - | non | postgresql est ajouté à l'installation | Stockage de visibilité de Temporal (base PostgreSQL séparée). |
Points d'accès
| Point d'accès | Schéma | Composant | Port | Chemin | Paramètre TLS | Paramètres de liaison | Secrets de liaison | Commande de provisionnement |
|---|---|---|---|---|---|---|---|---|
frontend | grpc | frontend | 7233 (frontend_port) | - | tls_enabled | tls | - | - |
http | http | frontend | 7243 (http_port) | - | tls_enabled | tls | - | - |
Fichiers de configuration client
Fichiers rendus pour le téléchargement de la configuration client :
temporal.env(client.env.j2)
Commandes
| Commande | Composant | Cible | Description |
|---|---|---|---|
Initialiser le schéma (setup_schema) | schema | premier hôte | Crée ou met à niveau les schémas principal et de visibilité (idempotent). |
Santé du frontend (cluster_health) | frontend | tous les hôtes | Vérifie l'API HTTP de chaque frontend. |
Contrôles de santé
Vivacité (par instance)
| Composant | Contrôle | Détails |
|---|---|---|
frontend | TCP {{ host.ip or '127.0.0.1' }}:{{ config.frontend_port }} | 60 tentatives |
history | TCP {{ host.ip or '127.0.0.1' }}:{{ config.history_port }} | 60 tentatives |
matching | TCP {{ host.ip or '127.0.0.1' }}:{{ config.matching_port }} | 60 tentatives |
worker | TCP {{ host.ip or '127.0.0.1' }}:{{ config.worker_port }} | 60 tentatives |
Disponibilité (contrôle du service)
| Contrôle | Détails |
|---|---|
TCP {{ host.ip or '127.0.0.1' }}:{{ config.frontend_port }} | - |
Contrôles préalables
| Contrôle | Type | Signification | Sévérité | Composants |
|---|---|---|---|---|
memory | memory_mb {"min": 2048} | au moins 2048 Mo de mémoire | bloquant | tous les composants |
frontend_port_free | port_free {"param": "frontend_port"} | port 7233 libre sur l'hôte | bloquant | frontend |
Désinstallation
Chemins supprimés quand les données sont purgées : {{ paths.data }}, {{ paths.log }}.
Documentation amont
- Site : https://temporal.io
- Sources : https://github.com/temporalio/temporal
- Haute disponibilité : https://docs.temporal.io/self-hosted-guide/deployment