ENbext.dev
DocumentationCompatibilité nginx

Traduction automatique depuis l’anglais. Consulter l’original.

Sur cette page

Processus de rachat

Le processus de prise de contrôle migre atomiquement le trafic de nginx vers bext. Il arrête nginx, lie bext aux ports 80/443 et fournit une restauration automatique en cas d'échec.

Machine à états#

La reprise suit une machine à états stricte :

code
Preflight ──→ TakingOver ──→ Active
                  │              │
                  ▼              ▼
               Failed ←── RollingBack ──→ RolledBack
Phase Description
Contrôle en amont Vérifications en cours, aucune modification apportée. Bouton Prendre le relais activé.
Prise de contrôle Arrêt de nginx, liaison des ports. Superposition de chargement affichée.
Actif bext servant le 80/443. Bouton de restauration visible.
Retour en arrière Arrêt des écouteurs bext, restauration de nginx. Chargement de la superposition.
Roulé nginx restauré. Tableau de bord toujours accessible sur le port de vol en amont.
Échec de Une erreur s'est produite. Bouton de restauration toujours disponible.

Séquence de reprise#

Lorsque vous cliquez sur « Reprendre » (ou POST sur /api/takeover ):

  1. Vérifier les conditions préalables — la phase doit être un contrôle en amont, aucun échec de vérification critique
  2. Phase de réglage = TakingOver — L'interface utilisateur affiche la superposition de chargement
  3. Enregistrer l'état de nginx — indique si nginx a été activé pour le démarrage
  4. Arrêt nginx — systemctl stop nginx
  5. Attendre les ports — interroger les ports 80/443 pendant 3 secondes maximum
  • Si les ports sont toujours occupés → restauration automatique, phase = Échec
  1. Désactiver nginx — systemctl disable nginx (non fatal en cas d'échec)
  2. Lier bext — commencer à servir sur les ports 80/443 avec la configuration nginx
  3. Phase de réglage = Actif

Séquence de restauration#

Lorsque vous cliquez sur "Rollback" (ou POST sur /api/rollback ) :

  1. Vérifier la phase — doit être actif ou en échec
  2. Phase de réglage = RollingBack
  3. Réactiver nginx — systemctl enable nginx (s'il a été activé auparavant)
  4. Démarrage nginx — systemctl start nginx
  5. Vérifiez — attendez 500 ms et vérifiez que nginx est en cours d'exécution
  • Si nginx ne démarre pas → phase = Échec avec message d'erreur
  1. Phase de réglage = RolledBack

Restauration automatique#

Si la reprise échoue après l'arrêt de nginx (par exemple, ports toujours occupés par un autre processus), bext exécute immédiatement :

bash
systemctl start nginx

Cela garantit que le trafic n’est jamais laissé sans serveur. La phase est définie sur Échec et l'erreur est affichée dans le tableau de bord.

Conditions préalables#

  • Accès root — nécessaire pour arrêter/démarrer les services et se lier aux ports < 1024
  • systemd — le rachat utilise systemctl pour toute la gestion des services
  • nginx.service — l'unité systemd nginx doit être nommée « nginx »

Garanties de sécurité#

  1. Lecture seule pendant le contrôle en amont — aucune modification du système jusqu'à ce que vous déclenchiez explicitement la prise de contrôle
  2. Confirmation requise — la reprise et la restauration nécessitent une confirmation de l'utilisateur
  3. Transitions atomiques — si une étape échoue, la restauration automatique restaure immédiatement nginx
  4. Démarrage préservé — L'état activé/désactivé de nginx est enregistré et restauré lors de la restauration
  5. Le tableau de bord reste actif. — le serveur de contrôle en amont reste accessible sur son port pour un accès en cas de restauration, même après la reprise.
  6. Aucune perte de données — la reprise gère uniquement le cycle de vie des processus, pas les fichiers de configuration

Utilisation via CLI#

bash
# Launch with auto-detected config
sudo bext nginx-takeover

# Specify config and port
sudo bext nginx-takeover --nginx-config /etc/nginx/nginx.conf --port 9999

Référence des vérifications préalables au vol#

# Vérifier Critique Ce qu'il vérifie
1 Configuration analysée Oui nginx.conf analyse sans erreurs
2 Certificats SSL accessibles Oui Tous les fichiers de certificat/clé sont lisibles
3 nginx En cours d'exécution Non Indique si nginx est actuellement diffusé
4 Disponibilité des ports Oui 80/443 sera gratuit après l'arrêt de nginx
5 Répertoires racine Non Les chemins racine du document existent
6 Backends en amont Non Les serveurs backend sont accessibles
7 Autorisations de processus Oui S'exécute en tant que root ou possède CAP_NET_BIND_SERVICE
8 système disponible Oui systemctl est présent et fonctionnel

Toutes les vérifications critiques doivent être réussies avant que la prise de contrôle ne soit autorisée. Les avertissements non critiques sont informatifs : ils mettent en évidence les problèmes potentiels mais ne bloquent pas la migration.

Attention

La prise de contrôle appelle systemctl stop nginx, qui supprime immédiatement toutes les connexions nginx en vol. Si vous disposez de connexions de longue durée ( WebSockets, flux SSE) vers nginx en amont, planifiez le basculement pendant une fenêtre à faible trafic ou drainez-les d'abord.

En rapport#

Modifier cette page ↗Besoin d’aide ? ↗
Rechercher dans la documentation

Saisissez un sujet, une commande ou une question.