Cette documentation a été traduite automatiquement par IA.
Avant de déployer une application en mode cluster, vous devez effectuer les préparatifs suivants.
Pour fonctionner en mode cluster, une application NocoBase nécessite le support des plugins suivants :
| Fonctionnalité | Plugin |
|---|---|
| Adaptateur de cache | Intégré |
| Adaptateur de signal de synchronisation | @nocobase/plugin-pubsub-adapter-redis |
| Adaptateur de file d'attente de messages | @nocobase/plugin-queue-adapter-redis ou @nocobase/plugin-queue-adapter-rabbitmq |
| Adaptateur de verrou distribué | @nocobase/plugin-lock-adapter-redis |
| Allocateur d'ID de Worker | @nocobase/plugin-workerid-allocator-redis |
Tout d'abord, assurez-vous d'avoir obtenu les licences pour les plugins mentionnés ci-dessus (vous pouvez acheter les licences de plugin correspondantes via la plateforme de services de plugins commerciaux).
En dehors de l'instance d'application elle-même, les autres composants système peuvent être choisis par le personnel d'exploitation en fonction des besoins opérationnels de chaque équipe.
Étant donné que le mode cluster actuel ne concerne que les instances d'application, la base de données ne prend en charge qu'un seul nœud pour le moment. Si vous utilisez une architecture de base de données telle que maître-esclave, vous devrez l'implémenter vous-même via un middleware et vous assurer qu'elle est transparente pour l'application NocoBase.
Le mode cluster de NocoBase s'appuie sur plusieurs middlewares pour assurer la communication et la coordination entre les clusters, notamment :
Lorsque tous les middlewares utilisent Redis, vous pouvez démarrer un service Redis unique au sein du réseau interne du cluster (ou de Kubernetes). Vous pouvez également activer un service Redis distinct pour chaque fonctionnalité (cache, signal de synchronisation, file d'attente de messages et verrou distribué).
Versions recommandées
NocoBase utilise le répertoire storage pour stocker les fichiers système. En mode multi-nœuds, vous devez monter un disque cloud (ou NFS) pour permettre un accès partagé entre les différents nœuds. Sans cela, le stockage local ne sera pas automatiquement synchronisé et l'application ne fonctionnera pas correctement.
Lors d'un déploiement avec Kubernetes, veuillez consulter la section Déploiement Kubernetes : Stockage partagé.
Le mode cluster nécessite un équilibreur de charge pour distribuer les requêtes, effectuer les vérifications de santé des instances d'application et gérer le basculement en cas de défaillance. Cette partie doit être choisie et configurée en fonction des besoins opérationnels de votre équipe.
À titre d'exemple, pour un Nginx auto-hébergé, ajoutez le contenu suivant à votre fichier de configuration :
Cela signifie que les requêtes sont redirigées et distribuées aux différents nœuds du serveur pour traitement.
Pour les middlewares d'équilibrage de charge fournis par d'autres fournisseurs de services cloud, veuillez consulter la documentation de configuration spécifique à chaque fournisseur.
Tous les nœuds du cluster doivent utiliser la même configuration de variables d'environnement. En plus des variables d'environnement de base de NocoBase, vous devez également configurer les variables d'environnement suivantes, liées aux middlewares.
Lorsque l'application s'exécute sur un nœud multi-cœur, vous pouvez activer le mode multi-cœur du nœud :
Si vous déployez des pods d'application dans Kubernetes, vous pouvez ignorer cette configuration et contrôler le nombre d'instances d'application via le nombre de réplicas de pods.
Certaines collections système de NocoBase utilisent des ID globalement uniques comme clés primaires. Pour éviter les conflits de clés primaires au sein d'un cluster, chaque instance d'application doit obtenir un ID de Worker unique via l'Allocateur d'ID de Worker. La plage actuelle des ID de Worker est de 0 à 31, ce qui signifie qu'une même application peut fonctionner sur un maximum de 32 nœuds simultanément. Pour plus de détails sur la conception des ID globalement uniques, consultez @nocobase/snowflake-id.
Généralement, les adaptateurs peuvent tous utiliser la même instance Redis, mais il est préférable d'utiliser des bases de données différentes pour éviter d'éventuels conflits de clés, par exemple :
Actuellement, chaque plugin utilise ses propres variables d'environnement liées à Redis. À l'avenir, nous pourrions envisager d'utiliser REDIS_URL comme configuration de secours unifiée.
Si vous utilisez Kubernetes pour gérer votre cluster, vous pouvez configurer les variables d'environnement ci-dessus dans un ConfigMap ou un Secret. Pour plus d'informations, veuillez consulter Déploiement Kubernetes.
Une fois tous les préparatifs ci-dessus terminés, vous pouvez passer aux Opérations pour continuer à gérer les instances de l'application.