Bonjour,
Je suis un peu perdu avec les instructions d’installation. Existe-t-il un moyen de mettre Discourse à l’échelle horizontalement ?
Par exemple : avoir 2+ conteneurs Docker sur différents serveurs, chacun exécutant Discourse ?
La configuration multi-conteneurs est beaucoup plus flexible et robuste, mais elle est également plus complexe à mettre en place. Une configuration multi-conteneurs vous permet de :
Minimiser les temps d’arrêt lors de la mise à jour vers de nouvelles versions de Discourse. Vous pouvez démarrer de nouveaux processus web pendant que votre site fonctionne, et ne basculer vers la nouvelle image qu’une fois celle-ci construite.
Mettre votre forum à l’échelle sur plusieurs serveurs.
Ajouter des serveurs pour la redondance.
Exécuter certains services requis (par exemple, la base de données) sur du matériel plus puissant.
Si vous souhaitez une configuration multi-conteneurs, consultez les modèles data.yml et web_only.yml dans le répertoire des exemples. Pour faciliter ce processus, launcher injectera une variable d’environnement appelée DISCOURSE_HOST_IP, qui sera disponible à l’intérieur de l’image.
Y a-t-il un endroit où je peux trouver plus d’informations sur la façon d’exécuter les conteneurs sur différents serveurs, et non plusieurs conteneurs sur le même serveur ?
Exécutez ./launcher bootstrap app quelque part. Cela entraînera la création d’une image de conteneur sur la machine locale. Téléversez cette image vers votre service d’enregistrement de conteneurs.
Vous pouvez maintenant lancer autant d’instances que vous le souhaitez, en indiquant à toutes d’exécuter l’image exportée à l’étape précédente.
Vous pouvez utiliser la fonctionnalité multisite pour qu’un seul conteneur serve plusieurs sites (en utilisant les mêmes plugins et la même version de Discourse). Cet article explique comment procéder sans proxy inverse externe. Si vous essayez cette méthode, veuillez laisser un commentaire dessus et me dire si cela a fonctionné. Je compte publier cela ici lorsque je serai assez certain que cela fonctionne.
Exécuter des conteneurs sur plusieurs serveurs suit le même principe que l’un des cas ci-dessus. Vous auriez plusieurs conteneurs partageant le même Redis et Postgres, placés derrière un équilibreur de charge.
En général, toute installation autre que l’installation standard officielle de Discourse n’est pas prise en charge, car il existe une infinité de façons de mettre en œuvre ces configurations.
La première concerne Sidekiq dans le cas de l’exécution de plusieurs web_only.yml Docker, chacun dans une VM différente : Dans ce premier cas, différentes instances Sidekiq partageant le même serveur Redis peuvent exécuter le même travail deux fois. Discourse est-il robuste face à ce type d’erreur ? Est-il plus fiable d’utiliser un seul Sidekiq dans une VM dédiée (ou Docker), et comment le séparer de web_only Discourse ?
Concernant vos dernières remarques sur l’installation prise en charge : Je peux comprendre que les gens puissent avoir une infinité de façons de configurer plusieurs conteneurs, mais, à mon avis, nous avons besoin d’un moyen pris en charge pour exécuter plusieurs instances pour la mise à l’échelle horizontale et/ou la haute disponibilité dans deux cas : basé sur VM (différents conteneurs web_only Discourse dans différentes VM et Redis/Postgres sont installés dans d’autres VM séparées directement sans utiliser Docker) et basé sur conteneurs (tout est basé sur conteneur).