Questa documentazione è stata tradotta automaticamente dall'IA.
Prima di implementare un'applicazione in modalità cluster, è necessario completare i seguenti prerequisiti.
L'esecuzione di un'applicazione NocoBase in modalità cluster richiede il supporto dei seguenti plugin:
| Funzione | Plugin |
|---|---|
| Adattatore cache | Integrato |
| Adattatore segnale di sincronizzazione | @nocobase/plugin-pubsub-adapter-redis |
| Adattatore coda di messaggi | @nocobase/plugin-queue-adapter-redis o @nocobase/plugin-queue-adapter-rabbitmq |
| Adattatore blocco distribuito | @nocobase/plugin-lock-adapter-redis |
| Allocatore Worker ID | @nocobase/plugin-workerid-allocator-redis |
Innanzitutto, si assicuri di aver ottenuto le licenze per i plugin sopra elencati (può acquistare le licenze dei plugin corrispondenti tramite la piattaforma di servizi per i plugin commerciali).
Gli altri componenti di sistema, oltre all'istanza dell'applicazione stessa, possono essere scelti dal personale operativo in base alle esigenze del team.
Poiché l'attuale modalità cluster si applica solo alle istanze dell'applicazione, il database supporta temporaneamente un solo nodo. Se dispone di un'architettura di database come master-slave, dovrà implementarla autonomamente tramite middleware, assicurandosi che sia trasparente per l'applicazione NocoBase.
La modalità cluster di NocoBase si basa su alcuni middleware per realizzare la comunicazione e il coordinamento tra i cluster, tra cui:
Quando tutti i componenti middleware utilizzano Redis, è possibile avviare un singolo servizio Redis all'interno della rete interna del cluster (o Kubernetes). In alternativa, è possibile abilitare un servizio Redis separato per ciascuna funzione (cache, segnale di sincronizzazione, coda di messaggi e blocco distribuito).
Versioni consigliate
NocoBase richiede l'utilizzo della directory storage per memorizzare i file di sistema. In modalità multi-nodo, è necessario montare un disco cloud (o NFS) per supportare l'accesso condiviso tra più nodi. In caso contrario, l'archiviazione locale non verrà sincronizzata automaticamente e non funzionerà correttamente.
Quando si implementa con Kubernetes, si prega di fare riferimento alla sezione Implementazione Kubernetes: Archiviazione condivisa.
La modalità cluster richiede un bilanciatore del carico per distribuire le richieste, nonché per i controlli di integrità e il failover delle istanze dell'applicazione. Questa parte deve essere selezionata e configurata in base alle esigenze operative del team.
Prendendo Nginx auto-ospitato come esempio, aggiunga il seguente contenuto al file di configurazione:
Ciò significa che le richieste vengono instradate tramite proxy inverso e distribuite a diversi nodi server per l'elaborazione.
Per i middleware di bilanciamento del carico forniti da altri provider di servizi cloud, si prega di fare riferimento alla documentazione di configurazione fornita dal provider specifico.
Tutti i nodi nel cluster dovrebbero utilizzare la stessa configurazione delle variabili d'ambiente. Oltre alle variabili d'ambiente di base di NocoBase, è necessario configurare anche le seguenti variabili d'ambiente relative al middleware.
Quando l'applicazione viene eseguita su un nodo multi-core, è possibile abilitare la modalità multi-core del nodo:
Se sta implementando pod dell'applicazione in Kubernetes, può ignorare questa configurazione e controllare il numero di istanze dell'applicazione tramite il numero di repliche del pod.
Alcune collezioni di sistema in NocoBase utilizzano ID globalmente univoci come chiavi primarie. Per prevenire conflitti di chiavi primarie in un cluster, ogni istanza dell'applicazione deve ottenere un Worker ID univoco tramite l'Allocatore Worker ID. L'attuale intervallo di Worker ID è 0-31, il che significa che ogni applicazione può eseguire fino a 32 nodi contemporaneamente. Per i dettagli sulla progettazione dell'ID globalmente univoco, si faccia riferimento a @nocobase/snowflake-id.
Di solito, gli adattatori correlati possono tutti utilizzare la stessa istanza Redis, ma è preferibile utilizzare database diversi per evitare potenziali problemi di conflitto di chiavi, ad esempio:
Attualmente, ogni plugin utilizza le proprie variabili d'ambiente relative a Redis. In futuro, si potrebbe considerare di unificare l'uso di REDIS_URL come configurazione di fallback.
Se utilizza Kubernetes per gestire il cluster, può configurare le variabili d'ambiente sopra menzionate in un ConfigMap o Secret. Per maggiori dettagli, può fare riferimento a Implementazione Kubernetes.
Una volta completati tutti i prerequisiti sopra elencati, può procedere con le Operazioni per continuare a gestire le istanze dell'applicazione.