Olá,
Estou confuso com as instruções de instalação. Existe uma maneira de escalar o Discourse horizontalmente?
Por exemplo: ter 2+ contêineres Docker em servidores diferentes, cada um executando o Discourse?
A configuração com múltiplos contêineres é muito mais flexível e robusta, no entanto também é mais complicada de configurar. Uma configuração com múltiplos contêineres permite que você:
Minimize o tempo de inatividade ao atualizar para novas versões do Discourse. Você pode iniciar novos processos web enquanto seu site está em execução e, somente após a construção, trocar para a nova imagem.
Escalone seu fórum para múltiplos servidores.
Adicione servidores para redundância.
Execute alguns serviços obrigatórios (por exemplo, o banco de dados) em hardware mais potente.
Se você deseja uma configuração com múltiplos contêineres, consulte os modelos data.yml e web_only.yml no diretório de amostras. Para facilitar esse processo, o launcher injetará uma variável de ambiente chamada DISCOURSE_HOST_IP, que estará disponível dentro da imagem.
Existe algum lugar onde eu possa encontrar mais informações sobre como executar os contêineres em servidores diferentes, e não vários contêineres no mesmo servidor?
Execute ./launcher bootstrap app em algum lugar. Isso resultará na criação de uma imagem de contêiner na máquina local. Faça o upload dessa imagem para o seu serviço de registro de contêineres.
Agora você pode iniciar quantas instâncias desejar, configurando todas para executar a imagem exportada no passo anterior.
Você pode usar multisite para ter um único contêiner servindo múltiplos sites (usando os mesmos plugins e versão do Discourse). Isso descreve como fazer isso sem um proxy reverso externo. Se você tentar, deixe um comentário lá e me avise se funcionou. Pretendo postar aqui quando tiver certeza de que funciona.
Executar contêineres em vários servidores é o mesmo que qualquer uma das opções acima. Você teria múltiplos contêineres compartilhando o mesmo Redis e Postgres, rodando atrás de um balanceador de carga.
Geralmente, fazer qualquer coisa diferente da Instalação Padrão Oficial do Discourse não é suportado, pois existem infinitas maneiras de fazer essas coisas.
A primeira sobre o Sidekiq, no caso de executar vários web_only.yml do Docker, cada um em uma VM diferente: Neste primeiro caso, instâncias diferentes do Sidekiq compartilhando o mesmo servidor Redis podem executar o mesmo job duas vezes. O Discourse é robusto para esse tipo de erro? É mais confiável usar um Sidekiq em uma VM dedicada (ou Docker), então como separá-lo do web_only do Discourse?
Sobre suas últimas observações para instalação suportada: Posso entender que as pessoas podem ter infinitas maneiras de configurar vários contêineres, mas, na minha opinião, precisamos de uma maneira suportada de executar várias instâncias para escalabilidade horizontal e/ou alta disponibilidade em dois casos: baseado em VM (diferentes contêineres web_only do Discourse em diferentes VMs e Redis/Postgres instalados em outras VMs separadas diretamente, sem usar Docker) e baseado em contêineres (tudo é baseado em contêiner).