Esta documentação foi traduzida automaticamente por IA.
Antes de implantar um aplicativo em cluster, você precisa concluir as seguintes preparações.
Para executar um aplicativo NocoBase em modo de cluster, você precisará do suporte dos seguintes plugins:
| Função | Plugin |
|---|---|
| Adaptador de cache | Embutido |
| Adaptador de sinal de sincronização | @nocobase/plugin-pubsub-adapter-redis |
| Adaptador de fila de mensagens | @nocobase/plugin-queue-adapter-redis ou @nocobase/plugin-queue-adapter-rabbitmq |
| Adaptador de bloqueio distribuído | @nocobase/plugin-lock-adapter-redis |
| Alocador de Worker ID | @nocobase/plugin-workerid-allocator-redis |
Primeiro, certifique-se de ter obtido as licenças para os plugins acima (você pode adquirir as licenças correspondentes através da plataforma de serviços de plugins comerciais).
Outros componentes do sistema, além da própria instância do aplicativo, podem ser selecionados pela equipe de operações com base nas necessidades operacionais de cada time.
Como o modo de cluster atual se concentra apenas nas instâncias do aplicativo, o banco de dados, por enquanto, suporta apenas um único nó. Se você tiver uma arquitetura de banco de dados como mestre-escravo, precisará implementá-la por conta própria através de um middleware e garantir que seja transparente para o aplicativo NocoBase.
O modo de cluster do NocoBase depende de alguns middlewares para comunicação e coordenação entre os clusters, incluindo:
Quando todos os componentes de middleware utilizam Redis, você pode iniciar um único serviço Redis na rede interna do cluster (ou Kubernetes). Alternativamente, você pode habilitar um serviço Redis separado para cada função (cache, sinal de sincronização, fila de mensagens e bloqueio distribuído).
Recomendações de Versão
O NocoBase precisa usar o diretório storage para armazenar arquivos relacionados ao sistema. No modo de múltiplos nós, você deve montar um disco na nuvem (ou NFS) para suportar o acesso compartilhado entre os vários nós. Caso contrário, o armazenamento local não será sincronizado automaticamente e não funcionará corretamente.
Ao implantar com Kubernetes, consulte a seção Implantação Kubernetes: Armazenamento Compartilhado.
O modo de cluster exige um balanceador de carga para distribuir as requisições, realizar verificações de saúde das instâncias do aplicativo e gerenciar o failover. Esta parte deve ser selecionada e configurada de acordo com as necessidades operacionais da sua equipe.
Tomando um Nginx auto-hospedado como exemplo, adicione o seguinte conteúdo ao arquivo de configuração:
Isso significa que as requisições são encaminhadas por proxy reverso e distribuídas para diferentes nós de servidor para processamento.
Para middlewares de balanceamento de carga fornecidos por outros provedores de serviços em nuvem, consulte a documentação de configuração específica do provedor.
Todos os nós no cluster devem usar a mesma configuração de variáveis de ambiente. Além das variáveis de ambiente básicas do NocoBase, você também precisará configurar as seguintes variáveis de ambiente relacionadas ao middleware.
Quando o aplicativo é executado em um nó multi-core, você pode habilitar o modo multi-core do nó:
Se você estiver implantando pods de aplicativo no Kubernetes, pode ignorar esta configuração e controlar o número de instâncias do aplicativo através do número de réplicas do pod.
Algumas coleções de sistema no NocoBase utilizam IDs globalmente únicos como chaves primárias. Para evitar conflitos de chave primária em um cluster, cada instância de aplicativo deve obter um Worker ID exclusivo através do Alocador de Worker ID. O intervalo atual de Worker ID é de 0 a 31, o que significa que cada aplicativo pode executar até 32 nós simultaneamente. Para detalhes sobre o design do ID globalmente único, consulte @nocobase/snowflake-id.
Geralmente, os adaptadores relacionados podem usar a mesma instância Redis, mas é melhor usar bancos de dados diferentes para evitar possíveis problemas de conflito de chaves, por exemplo:
Atualmente, cada plugin utiliza suas próprias variáveis de ambiente relacionadas ao Redis. No futuro, consideraremos usar REDIS_URL como configuração de fallback.
Se você usa Kubernetes para gerenciar o cluster, pode configurar as variáveis de ambiente acima em um ConfigMap ou Secret. Para mais conteúdo relacionado, consulte Implantação Kubernetes.
Após a conclusão de todas as preparações acima, você pode prosseguir para as Operações para continuar gerenciando as instâncias do aplicativo.