Chaque paramètre de ticketing.toml (optionnel) peut également être défini via une variable d'environnement. L'ordre de priorité est variable d'environnement > ticketing.toml > valeur par défaut, et les clés ainsi que les valeurs booléennes ne sont pas sensibles à la casse. L'image Docker étant basée sur scratch, l'injection de la configuration par variables d'environnement est le mode par défaut (pour utiliser un fichier de configuration, montez-le puis indiquez son chemin via CONFIG).
| Variable d'environnement | Valeur par défaut | Description |
|---|---|---|
PORT (SERVER_PORT) | 5225 | Port d'écoute TCP. Ignoré en mode cluster, où le port de CLUSTER_SELF est utilisé |
DEBUG (SERVER_DEBUG) | Selon le build | Journalisation en mode debug si 1/true |
SOCKET_BIND | 0.0.0.0 | Adresse d'écoute |
SOCKET_NODELAY | true | TCP_NODELAY |
SOCKET_READ_BUF_LEN | 4096 | Tampon de lecture par connexion (octets) |
SOCKET_REPLY_QUEUE | 1024 | Longueur de la file d'attente de réponses par connexion |
SOCKET_REPLY_BATCH | 64 | Nombre maximal de réponses regroupées en un seul write |
SWEEP_INTERVAL_SECS | 5 | Intervalle de nettoyage des clés expirées (secondes) |
CLUSTER_SELF | (aucune) | Adresse annoncée de ce nœud, host:port. Si définie, mode cluster |
CLUSTER_PEERS | (aucune) | Liste des adresses des nœuds (séparées par des virgules). L'ordre = priorité de promotion, incluant self, 2 ou plus |
CONFIG | ./conf/ticketing.toml | Chemin du fichier de configuration |
[cluster] (ou de CLUSTER_*), le nœud fonctionne seul. C'est le plus rapide, mais une brève interruption survient au redémarrage et l'état, gardé en mémoire, disparaît au redémarrage (le lease sert de filet de sécurité).CLUSTER_PEERS (dans l'ordre de priorité) et son propre CLUSTER_SELF. Parmi les nœuds vivants, celui ayant la priorité la plus élevée devient actif, les autres restant standby et recevant une réplication en temps réel. Pour le détail du fonctionnement, consultez Principe de fonctionnement et Protocole — serveur ↔ serveur.Le déploiement en cluster Kubernetes utilise un StatefulSet + un service headless. Chaque pod obtient un nom DNS stable (
ticketing-0.ticketing…,ticketing-1.ticketing…) ; ces noms sont placés dansCLUSTER_PEERSdans l'ordre de priorité, et leCLUSTER_SELFde chaque pod est injecté automatiquement via la downward API (metadata.name).
Ctrl+C) : un standby est promu via le handoff et les clients basculent vers lui.sarolab/ticketing · Github : saro-lab/ticketing