Dit document is vertaald door AI. Voor onnauwkeurigheden, raadpleeg de Engelse versie
Voordat u een clusterapplicatie implementeert, moet u de volgende voorbereidingen treffen.
Om een NocoBase-applicatie in clustermodus te kunnen draaien, is ondersteuning van de volgende plugins vereist:
| Functie | Plugin |
|---|---|
| Cache-adapter | Ingebouwd |
| Synchronisatiesignaal-adapter | @nocobase/plugin-pubsub-adapter-redis |
| Message queue-adapter | @nocobase/plugin-queue-adapter-redis of @nocobase/plugin-queue-adapter-rabbitmq |
| Distributed lock-adapter | @nocobase/plugin-lock-adapter-redis |
| Worker ID-allocator | @nocobase/plugin-workerid-allocator-redis |
Zorg er eerst voor dat u de licenties voor de bovenstaande plugins hebt verkregen (u kunt de bijbehorende pluginlicenties aanschaffen via het commerciële plugin serviceplatform).
Andere systeemcomponenten, naast de applicatie-instantie zelf, kunnen door het operationele personeel worden gekozen op basis van de operationele behoeften van het team.
Aangezien de huidige clustermodus alleen gericht is op applicatie-instanties, ondersteunt de database momenteel slechts één knooppunt. Als u een database-architectuur zoals master-slave heeft, moet u deze zelf implementeren via middleware en ervoor zorgen dat deze transparant is voor de NocoBase-applicatie.
De clustermodus van NocoBase is afhankelijk van bepaalde middleware voor communicatie en coördinatie tussen clusters, waaronder:
Wanneer alle middleware-componenten Redis gebruiken, kunt u één enkele Redis-service starten binnen het interne netwerk van het cluster (of Kubernetes). U kunt er ook voor kiezen om voor elke functie (cache, synchronisatiesignaal, message queue en gedistribueerde lock) een afzonderlijke Redis-service in te schakelen.
Versieaanbevelingen
NocoBase moet de storage-directory gebruiken om systeemgerelateerde bestanden op te slaan. In een multi-node modus moet u een clouddisk (of NFS) koppelen om gedeelde toegang over meerdere knooppunten te ondersteunen. Anders wordt lokale opslag niet automatisch gesynchroniseerd en zal deze niet correct functioneren.
Wanneer u implementeert met Kubernetes, raadpleeg dan de sectie Kubernetes-implementatie: Gedeelde opslag.
De clustermodus vereist een load balancer voor het distribueren van verzoeken, evenals voor gezondheidscontroles en failover van applicatie-instanties. Dit onderdeel moet worden gekozen en geconfigureerd op basis van de operationele behoeften van het team.
Als voorbeeld van een zelf gehoste Nginx, voegt u de volgende inhoud toe aan het configuratiebestand:
Dit betekent dat verzoeken via een reverse proxy worden gedistribueerd naar verschillende serverknooppunten voor verwerking.
Voor load balancing-middleware die door andere cloudserviceproviders wordt aangeboden, raadpleegt u de configuratiedocumentatie van de specifieke provider.
Alle knooppunten in het cluster moeten dezelfde configuratie van omgevingsvariabelen gebruiken. Naast de basis omgevingsvariabelen van NocoBase, moeten ook de volgende middleware-gerelateerde omgevingsvariabelen worden geconfigureerd.
Wanneer de applicatie op een multi-core knooppunt draait, kunt u de multi-core modus van het knooppunt inschakelen:
Als u applicatie-pods implementeert in Kubernetes, kunt u deze configuratie negeren en het aantal applicatie-instanties regelen via het aantal pod-replica's.
Aangezien sommige systeemcollecties in NocoBase globaal unieke ID's als primaire sleutels gebruiken, moet elk applicatie-instantie een unieke Worker ID krijgen via de Worker ID-allocator om conflicten met primaire sleutels binnen een cluster te voorkomen. Het huidige bereik voor Worker ID's is 0-31, wat betekent dat dezelfde applicatie maximaal 32 knooppunten tegelijkertijd kan ondersteunen. Voor meer details over het ontwerp van globaal unieke ID's, zie @nocobase/snowflake-id
Gewoonlijk kunnen de gerelateerde adapters allemaal dezelfde Redis-instantie gebruiken, maar het is het beste om verschillende databases te gebruiken om mogelijke sleutelconflicten te voorkomen, bijvoorbeeld:
Momenteel gebruikt elke plugin zijn eigen Redis-gerelateerde omgevingsvariabelen. In de toekomst overwegen we om REDIS_URL uniform te gebruiken als fallback-configuratie.
Als u Kubernetes gebruikt om het cluster te beheren, kunt u de bovengenoemde omgevingsvariabelen configureren in een ConfigMap of Secret. Voor meer gerelateerde inhoud kunt u Kubernetes-implementatie raadplegen.
Nadat alle bovenstaande voorbereidingen zijn voltooid, kunt u doorgaan naar de operationele procedures om de applicatie-instanties verder te beheren.