Merci d’avance.
Je prévois de configurer Discourse avec une haute disponibilité dans un environnement de production. Ci-dessous mon plan de conception et quelques conditions environnementales.
Configuration avec 3 serveurs d’applications et 2 serveurs de base de données Postgres. Toujours un serveur PG en mode écriture et un autre en mode lecture seule.
Ces 3 serveurs d’applications pointeront vers le même serveur de base de données.
Chaque instance de base de données devrait servir respectivement des opérations de lecture et d’écriture uniquement.
Les serveurs de production n’ont pas de connectivité Internet mais je peux télécharger des images dockerHub.
Nous avons notre propre serveur GitLab.
Est-il possible d’amorcer une image Docker et cette image sur plusieurs serveurs ?
Quelqu’un peut-il m’aider à réaliser cette configuration ? Si des liens ou des suggestions, envoyez-moi un message privé.
Après avoir exécuté ./launcher bootstrap appquelque part, vous devrez enregistrer cette image de conteneur résultante (généralement en la poussant vers un registre), puis la télécharger et l’exécuter sur vos trois serveurs d’application.
Vous aurez également besoin d’un serveur Redis central (et potentiellement de répliques pour celui-ci). Il vous manque également un équilibreur de charge pour diriger les requêtes vers ces différents serveurs d’application.
Salut @Falco
Dans mon environnement de production, je n’ai pas accès à Internet. Ce que je prévois, c’est d’effectuer le bootstrap sur une machine accessible par Internet, puis d’apporter cette image de bootstrap aux serveurs de production. Pendant ce processus sur la VM de production, le conteneur ne démarre pas car le serveur Unicorn recherche un identifiant de processus parent, ce qui l’empêche de s’exécuter.
Pouvez-vous m’aider ici ? Dois-je copier le répertoire /var/discourse après le bootstrap sur le serveur de production ?
Utilisez-vous PostgreSQL, Redis et Object Storage externes ? C’est ce qui est attendu en cas de haute disponibilité (HA), et vos serveurs de production ainsi que vos serveurs de build doivent avoir accès à ces services externes.
Juste pour tester le scénario, bootstrap s’exécute sur un serveur et exécute une image de conteneur bootstrapée sur un autre serveur avec une configuration autonome.
Comment allez-vous gérer plusieurs serveurs d’applications et les téléchargements d’utilisateurs ? Un lecteur réseau partagé entre tous les serveurs ? Cela pourrait fonctionner, mais notre solution officielle pour cela est le stockage d’objets utilisant l’API S3.
Désolé de vous déranger @Falco, j’ai une dernière question.
Lors de l’exécution de l’étape de reconstruction, cela aura-t-il un impact sur les données existantes dans la base de données Postgres ? Si oui, comment le gérer ?