2017-06-04 2 views
0

J'ai une application Nodejs qui incluait la mise en grappe pour la disponibilité et le domaine pour la gestion des erreurs.Application Nodejs de déploiement sans interruption

Maintenant, pour obtenir un déploiement sans interruption, j'ai une instruction mais j'ai besoin d'aide pour convertir cette instruction en code Nodejs (j'ai besoin d'un exemple pour cela).

C'est l'instruction:

  1. Lorsque maître démarre, donnez-lui un lien symbolique au code des travailleurs.
  2. Après le déploiement du nouveau code, mettez à jour le lien symbolique
  3. Envoyez un signal au maître: fourchez de nouveaux travailleurs!
  4. Mater dit aux anciens travailleurs de fermer, forks nouveaux travailleurs à partir du nouveau code.
  5. processus Mater ne jamais cesser de courir

Instruction source -> diapo numéro 39

+0

Alternative, vous voudrez peut-être vérifier ce https://www.chrismoos.com/2016/09/28/zero-downtime-deployments-kubernetes/ J'ai suivi cette configuration en production et cela fonctionne plutôt bien. Pas exactement ce dont vous avez besoin, juste pour garder à l'esprit. –

+0

Merci, mais c'était tellement loin que mon but !! –

Répondre

0

Pour 100% de disponibilité de la route est plus ou moins la même quelle que soit la langue que vous utilisez:

  • Stockez vos jetons de session dans une base de données plutôt que dans un tableau en mémoire ou autre chose. Cela permettra aux utilisateurs de rester connectés après l'échange des versions.

  • exécuter votre serveur dans un conteneur Docker

  • Utilisez un proxy pour gérer les conteneurs swapping lorsque vous devez exécuter une nouvelle version du serveur.

j'ai écrit easy-deploy pour traiter exactement cela, de sorte que je ne aurais pas besoin de vous soucier de la mise en place du proxy à chaque fois.

Déployer la version 1

easy-deploy -p 80:80 -v some/path:other/path my-image:1 

Pour déployer une nouvelle version il suffit d'exécuter la commande avec le nom de l'étiquette mise à jour

easy-deploy -p 80:80 -v some/path:other/path my-image:2 

Le proxy est pris en charge. my-image:1 sera remplacé par my-image:2 sans laisser tomber aucune demande.