Ciao,
sono confuso dalle istruzioni di installazione. Esiste un modo per scalare orizzontalmente Discourse?
Ad esempio: avere 2+ container Docker su server diversi, ognuno dei quali esegue Discourse?
La configurazione con più container è molto più flessibile e robusta, ma è anche più complessa da impostare. Una configurazione con più container ti permette di:
Ridurre al minimo i tempi di inattività durante l’aggiornamento a nuove versioni di Discourse. Puoi avviare nuovi processi web mentre il sito è in esecuzione e, solo dopo averli costruiti, passare alla nuova immagine.
Scalare il forum su più server.
Aggiungere server per la ridondanza.
Eseguire alcuni servizi obbligatori (ad esempio il database) su hardware più potente.
Se desideri una configurazione con più container, consulta i template data.yml e web_only.yml nella directory samples. Per semplificare questo processo, launcher inietterà una variabile d’ambiente chiamata DISCOURSE_HOST_IP, che sarà disponibile all’interno dell’immagine.
Esiste un luogo dove posso trovare maggiori informazioni su come eseguire i container su server diversi e non molti container sullo stesso server?
Esegui ./launcher bootstrap app da qualche parte. Questo porterà alla creazione di un’immagine del contenitore nella macchina locale. Carica questa immagine nel tuo servizio di registro contenitori.
Ora puoi avviare quante istanze desideri, indicando a tutte di eseguire l’immagine esportata nel passaggio precedente.
Puoi utilizzare la configurazione multisito per avere un singolo container che serve più siti (utilizzando gli stessi plugin e la stessa versione di Discourse). Questo descrive come farlo senza un reverse proxy esterno. Se provi questa soluzione, lascia un commento lì e fammi sapere se ha funzionato. Intendo pubblicarlo qui quando sarò abbastanza sicuro che funzioni.
Eseguire container su più server è uguale a qualsiasi altra opzione sopra menzionata. Avresti più container che condividono lo stesso Redis e Postgres, eseguiti dietro un load balancer.
In generale, fare qualsiasi cosa diversa dall’installazione standard ufficiale di Discourse non è supportato perché esistono infinite modalità per realizzare queste configurazioni.
La prima per Sidekiq nel caso di esecuzione di più web_only.yml docker, ognuno in una VM diversa: Quindi, in questo primo caso, diverse istanze Sidekiq che condividono lo stesso server Redis potrebbero eseguire lo stesso job due volte, Discourse è robusto per questo tipo di errore? È più affidabile usare un Sidekiq in una VM dedicata (o Docker), quindi come separarlo da web_only Discourse?
Riguardo alle tue ultime osservazioni per l’installazione supportata: Posso capire che le persone possano avere infiniti modi per creare configurazioni multi-container ma, secondo me, abbiamo bisogno di un modo supportato per eseguire più istanze per lo scaling orizzontale e/o l’alta disponibilità in due casi: basato su VM (diversi docker web_only di Discourse in VM diverse e Redis/Postgres sono installati in altre VM separate direttamente senza usare docker) e Basato su container (tutto è basato su container).