Multisite vs múltiplos contêineres

Alguém conhece os prós e contras de multisite versus múltiplos containers?

Atualmente, tenho três instâncias do Discourse como containers separados e estou pensando em converter mais dois ou talvez três fóruns para o Discourse. Eles estarão no mesmo servidor (64 GB de RAM, com SSDs), então estou me perguntando qual seria a melhor maneira de prosseguir.

Prefiro que sejam o mais independentes possível, para que cada um possa ser atualizado, backupado e restaurado individualmente, e problemas em um não afetem os outros.

O que você sugere? Existem prós e contras a observar?

Você não poderá atualizar individualmente com multisite, nem segmentar os plugins utilizados. Tudo isso é definido pela raiz do multisite. Configurações, temas e backups, no entanto, podem ser feitos separadamente.

Geralmente, você precisará de um proxy na frente para ajudar com os certificados SSL também.

3 curtidas

Na verdade, encontrei uma maneira de fazer o Let’s Encrypt obter certificados para vários domínios sem redirecionar para o domínio principal. Setup Multisite Configuration with Let's Encrypt and no Reverse Proxy

@AstonJ, você teria interesse em testar meu tutorial? Tenho 90% de certeza de que funciona, mas faz algumas semanas que fiz o último teste e não tenho total certeza de que as instruções “funcionam” para alguém que não eu.

Se você quiser que todos os sites tenham os mesmos plugins e sejam atualizados simultaneamente, o multisite é excelente.

3 curtidas

Eu poderia simplesmente desativar qualquer plugin não utilizado via ACP (e acho que há apenas um que um dos fóruns não precisará), então acho que depende: há benefícios em usar multisite? Especificamente, em desempenho e/ou estabilidade?

Acho que li uma vez que @Blake postou que é insano não rodar o PG em seu próprio container (isso é diferente de multisite?), motivo pelo qual tenho pensado em fazer isso. Por sinal, não me leve a sério sobre o que Blake disse, posso ter sonhado isso :rofl:

Eu uso o HAProxy, que cuida dos nossos certificados SSL, então ‘acho’ que isso pode estar ok.

Acho que vai depender dos benefícios, Jay. Se não houver muita diferença, não me importo de continuar como tenho feito, pois ficou relativamente fácil configurar e gerenciar. Mas, se houver grandes vantagens em usar multisite, com certeza teria interesse :sunglasses:

A outra vantagem é que você está executando apenas mais uma cópia do Rails e do Nginx, então a RAM adicional necessária é muito menor. Você tem bastante RAM, no entanto, então seguir com o que já funciona está começando a parecer a melhor ideia.

2 curtidas

Olá. É possível combinar usuários de um multisite para que um usuário possa ser registrado em todos os multisites ao mesmo tempo, registrando-se em um dos sites (como no Magento)? Ou uma supervariante de usar o Discourse, semelhante à federação. Para que os alertas funcionem de forma síncrona e o usuário do site nº 1 possa receber alertas do site nº 2? O mesmo vale para o chat.
Tenho 4 comunidades da mesma grande direção, mas com tópicos diferentes, e gostaria que essas comunidades fossem intimamente integradas umas às outras

Você pode fazer com que um site seja o servidor de autenticação do Discourse Connect e ter todos os outros autenticando contra ele.

2 curtidas

Estou tentando descobrir se preciso de uma configuração multi-site, múltiplos contêineres ou outra coisa.

Atualmente, tenho 3 comunidades independentes, duas delas semelhantes (ambas sobre esportes universitários, mas para duas escolas separadas) e a terceira sobre culinária e panificação.

Gostaria que todas estivessem no mesmo servidor (devido às limitações de endereço IP do meu provedor de internet), mas em URLs separadas, algo como isto:

foo.bar.com/team1
foo.bar.com/team2
foo.bar.com/cooking

team1.bar.com redirecionando para foo.bar.com/team1, etc., ou para servidores virtuais separados, também seria aceitável. (Sei que o Apache pode fazer isso, então presumo que o nginx também possa, diretamente ou com um servidor proxy na frente.)

Idealmente, o próprio foo.bar.com serviria como um gateway para essas comunidades independentes, explicando o que são e como acessá-las. Algumas categorias em cada comunidade podem ser lidas publicamente e acessíveis por rastreadores da web para que apareçam nas pesquisas da web.

Isso é uma configuração multi-site ou multi-contêiner, ou algo totalmente diferente?

Existem armadilhas de design de plugin conhecidas ao executar Multisite?

Parece que meu Chatbot não suporta Multisite (portanto, é um problema conhecido), mas eu gostaria de entender o porquê: ele está funcionando bem na instalação padrão.

Especificamente, parece haver problemas com a tarefa de configuração do banco de dados e potencialmente este job.

1 curtida

Vou dar uma atualização sobre minha situação.

Após algum estudo, decidi que precisava de uma configuração multissite (um contêiner neste momento) com um site nginx ‘externo’ para explicar a configuração e direcionar pessoas e tráfego para os sites discourse separados. Dessa forma, eu poderia tornar ambos os sites abertos para acesso somente leitura (e rastreadores da web) sem que as pessoas da lista1 tivessem que lidar com o conteúdo da lista2. Talvez eu precise mexer no robots.txt para deixar os rastreadores da web felizes.

Os exemplos de configuração multissite foram instrutivos, mas não consegui fazê-lo funcionar com um soquete unix (erro de gateway), então acabei redirecionando-os para outra porta e redirecionando essa porta para 443 dentro do contêiner.

No meu arquivo app.yml, ativei o template SSL, mas não o letsencrypt.

Consegui fazer o site de teste funcionar, agora estou procurando por quaisquer problemas que possam surgir ao converter o site de produção, espero que ainda este mês ou no próximo.

Estou cuidando da questão do certificado no lado do servidor externo, mas me deparei com o problema de ‘não seguro’ que corrigi exigindo https no contêiner. Tenho uma tarefa que executarei via cron para copiar o certificado e a chave mais recentes para o diretório /shared/ssl do contêiner (como ssl.crt e ssl.key). Não tenho certeza se precisarei forçar um recarregamento do nginx dentro do contêiner para garantir que um novo certificado seja carregado quando ele mudar (em julho, acho).

Encontrei um outro problema do discourse:

No arquivo /etc/nginx/conf.d/discourse.conf do contêiner, há este fragmento de código (nome do domínio alterado):

if ($http_host != ‘site1.my.domain’) {
rewrite (.*) https://site1.my.domain$1 permanent
}

Isso estava fazendo com que site2.my.domain fosse redirecionado para site1.my.domain, então tive que comentá-lo.

NOTA: Reconstruir o contêiner requer refazer esta edição, há alguma maneira de evitar isso?

E isso levou a um problema no navegador, porque agora o firefox havia sinalizado esse redirecionamento como permanente, então tive que excluir o cache do navegador. (Isso me levou muito tempo para descobrir!)

Consegui pensar em outra coisa estranha.

No meu site de teste, o parâmetro para exigir https não estava marcado para nenhum dos sites. No meu site de produção, esse parâmetro nem sequer está presente no arquivo de configurações. Estou imaginando que isso tem algo a ver com as diferenças entre os dois sites.