Ne manquez pas nos offres limitées !
In this article

Comment configurer le mode file d’attente n8n sur un VPS ?

Au fur et à mesure que vos flux d’automatisation n8n gagnent en complexité, les gérer efficacement peut devenir un véritable défi. Le fait de tout exécuter sur un seul processus peut entraîner des temps d’exécution lents, des contraintes inutiles pour le système, voire l’échec de l’automatisation.

La solution à ce problème est le mode file d’attente n8n. Il introduit une file d’attente de travaux qui répartit vos tâches sur plusieurs processus de travail plutôt que de tout exécuter en un seul endroit. Cela permet à vos flux de travail de fonctionner de manière indépendante, ce qui améliore les performances et l’évolutivité de votre automatisation.

Dans ce guide, nous allons vous expliquer étape par étape comment configurer le mode file d’attente sur un VPS Hostinger. À la fin de ce guide, vous serez en mesure de rendre votre écosystème d’automatisation n8n plus fiable et plus évolutif.

Comment fonctionne le mode file d’attente ?

Par défaut, n8n fonctionne au sein d’un processus principal monotâche dans lequel toutes les tâches sont traitées de manière séquentielle. Cela fonctionne bien pour les automatismes de faible volume, mais peut entraîner des goulets d’étranglement lorsque la charge de travail augmente.

Le mode file d’attente divise l’ensemble du back-end de n8n en trois zones distinctes :

  • Segment de gestion – il est responsable de l’interface visuelle, de la configuration des flux de travail et de la gestion de tous les déclencheurs. 
  • Segment de stockage – c’est là que sont stockées toutes vos données, telles que les tâches, les flux de travail, les informations d’identification et les journaux. La différence par rapport à une configuration n8n standard réside dans l’intégration de Redis, une base de données clé-valeur, qui joue le rôle de courtier en messages.
  • Segment worker – c’est là que se déroule toute la logique d’automatisation et que vos étapes d’automatisation sont exécutées en parallèle.

Voici comment cela se présente visuellement :

Service Rôle
Instance principale n8nGère l’interface visuelle, les configurations de flux de travail et leurs déclencheurs.
RedisJoue le rôle de courtier en messages pour la file d’attente des travaux.
Base de données n8nStocke les données relatives à l’exécution du flux de travail, telles que les journaux et les résultats.
Instances worker n8n
Récupèrent les tâches en attente depuis Redis et exécutent les étapes d’automatisation

Voici à quoi ressemble le déroulement général du processus en mode file d’attente :

Pour mettre les choses en perspective, nous pouvons comparer cette configuration à d’autres plateformes populaires d’orchestration du travail :

  • Kubernetes gère l’infrastructure d’une manière intrinsèquement similaire, en créant des pods qui sont gérés par un plan de contrôle, tandis que les conteneurs individuels gèrent les charges de travail des applications.
  • Les tâches par lots des fournisseurs de services en nuage les plus répandus fonctionnent exactement comme le mode file d’attente de n8n, avec une file d’attente de travaux qui est prise en charge de manière asynchrone par d’autres solutions.
  • Les équilibreurs de charge fonctionnent de la même manière, en distribuant le trafic à plusieurs instances dupliquées pour une exécution en parallèle.

Au fond, il s’agit d’un moyen très simple d’augmenter vos capacités d’automatisation. Pour permettre l’exécution simultanée d’un plus grand nombre de processus d’automatisation, vous exécutez un plus grand nombre de processus d’automatisation. Le mode file d’attente agit comme un équilibreur de charge pour la distribution de ce flux de travail.

Prérequis

Pour héberger n8n en mode file d’attente avec Redis, les spécifications minimales de votre système sont les suivantes :

  • 1 vCPU, 2 vCPU recommandés
  • 1 Go de mémoire, 2 Go de mémoire recommandés

Vous aurez également besoin de

  • Docker, ou Node.js avec npm installé sur votre VPS. 
  • Connaissance de base des commandes Linux et familiarité avec le terminal.
  • Vous devez être à l’aise avec l’édition de fichiers de configuration.

Bien que vous puissiez utiliser le mode queue avec la base de données SQLite qui est installée et utilisée par défaut, nous vous recommandons d’installer PostgreSQL à la place, comme indiqué plus loin dans ce guide.

n8n et Redis ne sont pas très gourmands en ressources informatiques, la mémoire est donc le principal facteur à prendre en compte. Un VPS Hostinger KVM 2 avec Ubuntu est un choix confortable pour une configuration de base en mode queue n8n, s’intégrant parfaitement :

  • Le processus principal du n8n
  • Cluster Redis
  • Base de données PostgreSQL
  • Trois processus de travail n8n

Cela devrait permettre de gérer très confortablement les configurations de flux de travail de petite et moyenne taille et de disposer d’une grande marge de manœuvre pour évoluer.

Configuration du mode file d’attente dans n8n

Dans ce tutoriel, nous allons implémenter le mode queue de n8n sur une instance unique de VPS KVM 2 fonctionnant sous Ubuntu 24.04, avec n8n installé manuellement via Docker. C’est l’approche recommandée car elle est la plus facile à mettre en œuvre et à adapter.

1. Préparer un conteneur Redis

Le mode file d’attente de n8n dépend de Redis en tant que courtier de messages pour gérer les files d’attente des travaux, ce qui en fait un composant critique dans cette configuration. Pour préparer un conteneur Redis sur votre instance n8n, suivez ces étapes :

  1. Connectez-vous à hPanel.
  2. Naviguez vers VPS et appuyez sur Gérer sur votre instance.
  1. Cliquez sur Paramètres → Terminal.
  1. Créez un répertoire dans lequel Redis stockera les données persistantes :
mkdir -p ~/redis-data
  1. Créez un répertoire pour stocker vos fichiers de travail. 
mkdir ~/n8n-queue-modecd ~/n8n-queue-mode
  1. Créez le fichier docker-compose.yml :
sudo nano docker-compose.yml
  1. Collez-y la configuration YAML pour un conteneur Redis 6 :
version: "3.7"
services:  redis:    image: redis:6    container_name: redis    restart: always    volumes:      - ~/redis-data:/data
  1. Enregistrez vos modifications en appuyant sur Ctrl + X → Y → Entrée.

Maintenant que Redis est préparé et prêt, vous pouvez ajouter une configuration supplémentaire à votre instance Redis, comme un mot de passe. Pour ce faire, vous pouvez suivre les étapes de configuration décrites dans notre guide d’installation de Redis.

Cependant, comme nous utilisons un conteneur Redis, vous devrez également ajouter un fichier redis.conf personnalisé pour enregistrer vos paramètres, puis le monter en tant que volume et exécuter la commande correspondante.

Par exemple, si vous avez ajouté redis.conf dans le répertoire ~/redis-conf, vous devrez ajouter les lignes suivantes à votre fichier docker-compose.yml :

    volumes:      - ~/redis-conf/redis.conf:/usr/local/etc/redis/redis.conf  command: ["redis-server", "/usr/local/etc/redis/redis.conf"]

2. Configurer les variables d’environnement

Maintenant que Redis est prêt, vous devez configurer les variables nécessaires pour activer le mode queue. Dans notre scénario, nous avons une instance n8n déjà configurée avec nginx. Ensuite, nous le déplacerons dans un environnement conteneurisé.

Voici les principales variables que vous devez définir :

Variable Objectif
EXECUTIONS_MODE=queueDéfinit le mode d’exécution en file d’attente
QUEUE_BULL_REDIS_HOST=redisNom d’hôte de l’instance Redis. Comme Redis est conteneurisé, la valeur est « redis »
QUEUE_BULL_REDIS_PORT=6379Port utilisé par Redis (6379 par défaut)
N8N_RUNNERS_ENABLED=trueActive les task runners
OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS=truePermet d’envoyer également les exécutions manuelles des workflows aux workers

Parmi les autres variables importantes, on peut citer

Variable Objectif
QUEUE_HEALTH_CHECK_ACTIVE=trueAjoute un contrôle de santé interne pour surveiller la connexion Redis
QUEUE_BULL_REDIS_PASSWORDSi vous avez ajouté un mot de passe à Redis, vous devez également le définir ici

Maintenant que vous connaissez les paramètres requis, nous allons les configurer.

  1. Retournez dans votre répertoire de travail :
cd ~/n8n-queue-mode
  1. Créez un fichier .env qui contiendra vos variables. Si vous le souhaitez, vous pouvez le renommer :
sudo nano .env

Enregistrez ces valeurs :

N8N_LOG_LEVEL=debugN8N_LOG_OUTPUT=console
N8N_BASIC_AUTH_ACTIVE=trueN8N_BASIC_AUTH_USER=<your_username>N8N_BASIC_AUTH_PASSWORD=<your_password>
N8N_HOST=srv721674.hstgr.cloudN8N_PORT=5678N8N_PROTOCOL=httpsWEBHOOK_URL=https://srv721674.hstgr.cloud/GENERIC_TIMEZONE=UTC
N8N_EXPRESS_TRUST_PROXY=trueN8N_SECURE_COOKIE=true
EXECUTIONS_MODE=queueQUEUE_BULL_REDIS_HOST=redisQUEUE_BULL_REDIS_PORT=6379N8N_RUNNERS_ENABLED=trueOFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS=true

Les valeurs supplémentaires du mode queue sont mises en évidence en gras – si vous avez un fichier d’environnement existant, vous pouvez ajouter les lignes en gras à votre configuration existante.

Conseil de pro

Bien que les paramètres de journalisation soient facultatifs, ils s’avéreront utiles pour vérifier l’état de nos conteneurs et pour dépanner les erreurs.

  1. Enregistrez vos modifications en appuyant sur Ctrl + X → Y → Entrée.

3. Déployer le processus principal n8n

Jusqu’à présent, vous avez défini toutes les variables d’environnement nécessaires au fonctionnement du mode queue. Définissons maintenant notre conteneur n8n pour le processus principal :

  1. Ouvrez docker-compose.yml en exécutant :
sudo nano docker-compose.yml
  1. Ajoutez le code suivant sous services :
  n8n:
    image: n8nio/n8n
    container_name: n8n
    restart: always
    env_file:
      - .env
    ports:
      - "5678:5678"
    volumes:
      - ~/.n8n:/home/node/.n8n    depends_on:      - redis
  1. Enregistrez vos modifications en appuyant sur Ctrl + X → Y → Entrée

Votre fichier docker-compose.yml devrait ressembler à ceci :

A ce stade, vous pouvez lancer votre processus n8n en exécutant :

docker compose up -d

Vous devriez maintenant pouvoir vous connecter à votre instance et voir la même vue que d’habitude. Essayons de lancer un simple flux de travail qui exécute une requête web vers Google :

Cela devrait fonctionner, même si vous avez activé le mode queue et configuré le processus principal pour qu’il agisse en tant qu’orchestrateur de queue.

Il s’agit d’un mécanisme de sécurité dans n8n : si vous n’avez pas de workers disponibles pour gérer vos exécutions, l’instance principale prendra en charge le travail au lieu de l’orchestrer vers Redis.

Malgré toute cette configuration, vous ne faites toujours pas fonctionner n8n en mode file d’attente. Allons-y et changeons cela en déployant quelques workers.

4. Déployer la base de données PostgreSQL

Le processus principal étant configuré, passons maintenant à la définition de la base de données PostgreSQL. Bien qu’il soit facultatif, il est recommandé pour les charges de travail au niveau de la production que SQLite n’est tout simplement pas conçu pour gérer. Heureusement, il est facile et rapide de préparer une base de données Postgres :

  1. Ouvrez docker-compose.yml :
sudo nano docker-compose.yml
  1. Ajoutez le contenu suivant au bas de la page :
postgres:
    image: postgres:15
    container_name: n8n-postgres
    restart: always
    environment:
      POSTGRES_USER: n8n
      POSTGRES_PASSWORD: <your_password>
      POSTGRES_DB: n8ndb
    volumes:
      - pgdata:/var/lib/postgresql/data

volumes:  pgdata:
  1. Sauvegardez avec Ctrl + X → Y → Entrée.
  2. Ouvrez votre fichier .env :
sudo nano .env
  1. Ajoutez les détails de configuration de la base de données Postgres suivants :
DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=postgres
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=n8ndb
DB_POSTGRESDB_USER=n8n
DB_POSTGRESDB_PASSWORD=<your_password>
  1. Sauvegardez avec Ctrl + X → Y → Entrée.

Essayons de l’exécuter :

docker compose up -d

Vous pouvez également vérifier si la base de données PostgreSQL fonctionne en exécutant :

docker exec -it n8n-postgres psql -U n8n -d n8ndb
\dt

En option, vous pouvez maintenant supprimer SQLite :

rm ~/.n8n/database.sqlite
rm ~/.n8n/*.sqlite*

Important ! Si la valeur de la clé de chiffrement n’est pas définie pour votre instance principale, une nouvelle clé sera générée lors de la recréation du fichier de configuration. Pour éviter cela, nous recommandons de définir N8N_ENCRYPTION_KEY dans les deux fichiers d’environnement afin de garantir la fiabilité.

5. Lancer les processus de travail

Une fois que n8n est en mode file d’attente, il s’appuie sur des processus de travail dédiés pour extraire les travaux de Redis. Mettons en place un processus de travailleur :

  1. Tout d’abord, vous devez récupérer la clé de chiffrement pour les workers. Vous pouvez le définir vous-même lors de la création d’une nouvelle instance de n8n, ou n8n en générera automatiquement un pour vous s’il n’est pas fourni. Exécutez :
cat ~/.n8n/config

Copiez la valeur encryptionKey, car vous devrez la stocker dans vos variables d’environnement.

  1. Préparez un nouveau fichier d’environnement pour les workers. Bien que vous puissiez utiliser un seul fichier pour toutes les instances de n8n, il sera plus facile de les séparer en un fichier principal et un fichier du worker :
sudo nano .env.worker
  1. Insérez les détails de configuration suivants :
N8N_LOG_LEVEL=debugN8N_LOG_OUTPUT=console
EXECUTIONS_MODE=queue
N8N_RUNNERS_ENABLED=true
OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS=trueN8N_ENCRYPTION_KEY=<your_encryption_key>

QUEUE_BULL_REDIS_HOST=redis
QUEUE_BULL_REDIS_PORT=6379

DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=postgres
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=n8ndb
DB_POSTGRESDB_USER=n8n
DB_POSTGRESDB_PASSWORD=<your_password>
  1. Sauvegardez avec Ctrl + X → Y → Entrée.
  2. Ouvrez docker-compose.yml :
sudo nano docker-compose.yml
  1. Ajoutez ce service juste en dessous du service PostgreSQL :
n8n-worker:
    image: n8nio/n8n
    restart: always
    command: worker
    env_file:
      - .env.worker
    depends_on:
      - redis
      - postgres
  1. Sauvegardez avec Ctrl + X → Y → Entrée.
  2. Démarrez le nœud worker :
docker compose up -d n8n-worker

Important ! Si la valeur de la clé de chiffrement n’est pas définie pour votre instance principale, une nouvelle clé sera générée lors de la recréation du fichier de configuration. Pour éviter cela, nous recommandons de définir N8N_ENCRYPTION_KEY dans les deux fichiers d’environnement afin de garantir la fiabilité.

Pour faire fonctionner plus de workers, exécutez docker compose avec l’argument scale :

docker compose up -d --scale n8n-worker=3

6. Tester la configuration

Pour vérifier si le mode file d’attente n8n fonctionne, exécutez quelques flux de travail de test ou planifiez un flux de travail. Nous utiliserons ici un simple flux de travail actif fonctionnant à un intervalle de dix secondes :

Après quelques minutes, retournez à votre terminal et vérifiez les journaux du worker n8n :

docker logs <worker name> -f

Vous devriez voir quelque chose comme ceci :

Les éléments clés à surveiller sont les journaux tels que Worker started execution , qui indiquent que n8n extrait avec succès des travaux du courtier de messages.

Et voilà, vous avez configuré avec succès le mode file d’attente de n8n et il est maintenant prêt à s’attaquer à vos charges de travail !

7. Surveiller et faire évoluer (scaler)

Il est important de maintenir l’automatisation du mode queue de votre n8n pour qu’il reste performant. Voici quelques points à surveiller :

  • Surveillez les mesures de votre CPU et de votre mémoire dans hPanel, ou avec la commande htop dans le terminal.
  • Exécutez docker stats pour vérifier les performances de chaque conteneur.
  • Utilisez les commandes redis-cli comme info memory ou info stats pour surveiller Redis.

Si vous constatez que les conteneurs sont en difficulté, il est temps de changer d’échelle. Vous pouvez le faire en exécutant docker compose up -d –scale service=number.

Pour ce que le VPS n8n d’Hostinger offre en termes de capacité matérielle, 2 à 3 workers devraient être une base sûre, bien que vous puissiez vous en sortir avec 5 ou plus en fonction de votre utilisation de l’automatisation.

Si vous commencez à rencontrer des problèmes avec les ressources de l’infrastructure, voici quelques mesures à envisager :

  • Déplacez Redis et PostgreSQL vers un VPS séparé et dédié.
  • Envisagez de mettre en œuvre un orchestrateur comme Kubernetes pour faire évoluer dynamiquement les workers n8n en fonction de la charge au lieu de procéder à une mise à l’échelle manuelle.
  • Faites évoluer votre infrastructure pour répondre à vos besoins croissants.

Conclusion

L’exécution de n8n en mode file d’attente permet d’améliorer l’évolutivité, la stabilité et le contrôle des exécutions de vos flux de travail. Séparer la programmation des tâches de leur exécution et décharger le travail sur des processus de travail dédiés réduit le risque de goulots d’étranglement.

Ce guide vous a permis de configurer le mode file d’attente, de déployer des workers et d’apprendre à surveiller et à mettre à l’échelle votre système sur un VPS Hostinger. Au fur et à mesure que votre automatisation se développe, vous pouvez évoluer horizontalement en ajoutant des workers supplémentaires ou en hébergeant Redis et PostgreSQL sur des serveurs distincts.

Prêt à aller plus loin dans l’automatisation ? Mettez en place un système de surveillance plus robuste, implémentez des solutions d’orchestration plus complexes et poussez n8n à ses limites !

Mode file d’attente n8n – FAQ

Qu’est-ce que le mode file d’attente dans n8n ?

Le mode file d’attente est une configuration de n8n qui dissocie la distribution des workflows de leur exécution en utilisant une file d’attente de tâches, généralement gérée par Redis. Dans ce mode, l’instance principale met les exécutions de workflows en file d’attente tandis que des processus de travail dédiés récupèrent et traitent les tâches de manière asynchrone. Cette séparation améliore l’évolutivité et la stabilité dans les environnements à forte charge et distribués.

Comment activer le mode file d’attente dans n8n ?

Pour activer le mode file d’attente dans n8n, définissez la variable d’environnement EXECUTIONS_MODE sur queue dans vos fichiers de configuration, tant pour l’instance principale que pour les processus de travail. De plus, configurez vos options Redis pour la file d’attente et, si vous le souhaitez, définissez OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS et QUEUE_HEALTH_CHECK_ACTIVE sur true.

Quels sont les avantages du mode file d’attente dans n8n ?

Le mode file d’attente dans n8n offre plusieurs avantages, notamment une évolutivité améliorée et une meilleure utilisation des ressources. En déchargeant l’exécution de la charge de travail vers des workers n8n dédiés, il empêche le processus principal de devenir un goulot d’étranglement. Cela est utile à la fois pour la gestion des erreurs et pour permettre le traitement asynchrone dans n8n, ce qui se traduit par un système plus rapide et plus stable pour les environnements à forte demande.

Tout le contenu des tutoriels de ce site est soumis aux normes éditoriales et aux valeurs rigoureuses de Hostinger.

Author
L'auteur

Chaimaa Chakir

Chaimaa est une spécialiste du référencement et du marketing de contenu chez Hostinger. Elle est passionnée par le marketing digital et la technologie. Elle espère aider les gens à résoudre leurs problèmes et à réussir en ligne. Chaimaa est une cinéphile qui adore les chats et l'analyse des films.

Ce que disent nos clients

Laissez une réponse

Veuillez remplir les champs obligatoires.Veuillez cocher la case de la confidentialité.Veuillez remplir les champs obligatoires et accepter la case de confidentialité.

Thank you! Your comment has been successfully submitted. It will be approved within the next 24 hours.