Je développe une application Ruby On Rails que je souhaite déployer dans un environnement de production. J'ai plusieurs serveurs Web Ubuntu configurés de manière identique que je peux utiliser mais je ne sais pas comment mettre à l'échelle l'application RoR et les données db sur plusieurs hôtes.Mise à l'échelle d'un site Ruby on Rails
Je voudrais mettre à la fois un serveur web et un serveur db sur chaque hôte. Du côté du serveur web/ruby middleware, j'aimerais que les sessions soient contrôlées par un serveur web maître qui gère l'équilibrage de charge sur le serveur web/couches de middleware ruby. Il devrait transmettre de nouvelles sessions aux hôtes libres.
J'ai besoin d'avoir un équilibrage de charge en place sur le serveur web/côté logiciel de ruby. Les sessions Web/middleware doivent être atomiques (je ne souhaite pas les répliquer sur plusieurs hôtes)
Je souhaite que les données transactionnelles qui n'ont pas été enregistrées dans la base de données soient enregistrées dans une journalisation intermédiaire - être réexécuté en cas de défaillance-récupération.
Dans la couche DB:
Je voudrais avoir les données DB sur l'un hôte à répliquer à 2 autres hôtes. (Chaque ensemble de base de données a 3 hôtes de base de données)
Je ne souhaite pas que les données de base de données soient répliquées sur tous les hôtes car la latence est trop longue.
Je voudrais mettre en place un algorithme qui dirigera les demandes de type 'create' vers la bonne base de données. L'équilibrage de charge me vient à l'esprit.
Le contrôleur maître DB doit savoir quel jeu de 3 DB doit être utilisé pour les demandes de 'mise à jour/lecture/suppression'.
Mon serveur web de test est webrick et le backend DB est Postgresql (même si cela n'a vraiment pas d'importance avec RoR). Je crois que j'ai besoin de lier un sessionId à chaque transaction et de garder un nouveau journal au cas où je devrais recharger cette session après une panne.
Quels autres problèmes de conception vais-je rencontrer? De plus, quel serveur web et quel serveur de base de données dois-je utiliser pour effectuer le travail de base? Quels sont les bons choix pour la base de données master et les serveurs Web maîtres? Je comprends que c'est un problème compliqué qui s'étend sur plusieurs domaines de connaissance. J'aimerais savoir si ce que je demande est possible.
Si vous trouvez que c'est trop, cédez et utilisez Heroku. – Skilldrick
Quelle est votre architecture de production actuelle? Ce sont des exigences assez complexes - êtes-vous sûr qu'ils sont nécessaires? Pouvez-vous y arriver au fil du temps avec une approche itérative? – nfm