2

apprécierions vraiment quelques suggestions de ressources sur la façon de déployer correctement avec Elastic Beanstalk avec la pile suivante:Elastic Beanstalk déploiement avec MongoDB

  • MongoDB
  • Rails (Puma)
  • Sidekiq/Redis
  • Elasticsearch

Dois-je configurer toutes ces choses dans des fichiers ebextension? Ou s'agit-il de paramétrer manuellement les paramètres dans AWS et de les router correctement ensemble quelque part?

Répondre

4

Vous ne voulez certainement pas exécuter tous ceux sur vos serveurs Elastic Beanstalk. Elastic Beanstalk ajoutera ou supprimera automatiquement des serveurs en fonction de votre trafic/serveur. Vous ne voulez pas que votre base de données soit sur l'un de ces serveurs quand elle est supprimée. Elastic Beanstalk est une plateforme en tant que service idéale pour l'exécution de serveurs Web. Il existe d'autres services sur AWS tels que ElastiCache (Redis/Memcached en tant que service) et Elasticsearch en tant que service. Il existe également des tiers qui fournissent des services exécutés sur AWS, tels que RedisLabs (Redis en tant que service) et MongoLab (MongoDB en tant que service).

Vous pouvez décider d'utiliser l'un de ces services pour réduire le volume d'administration système que vous devez effectuer vous-même. Ou vous pouvez configurer manuellement les serveurs Linux EC2 (en dehors d'Elastic Beanstalk) et installer des éléments tels que Rails et MongoDB et ElasticSearch sur eux et les gérer vous-même.

Pour votre cas, je recommanderais quelque chose comme ce qui suit:

  • Rails: ElasticBeanstalk
  • MongoDB: MongoLab
  • Redis: RedisLabs
  • ElasticSearch: service AWS ElasticSearch

Vous souhaitez configurer chacun de ces services, puis ajouter simplement les informations de connexion pour chaque d'entre eux à votre environnement Elastic Beanstalk afin que Rails puisse les utiliser.

Edit:

Voici les meilleures instructions sur la configuration MongoDB sur EC2 manuellement: https://docs.mongodb.org/ecosystem/platforms/amazon-ec2/

Pour ElastiCache et ElasticSearch, vous cliquez juste dans la console AWS à disposition un serveur Redis et obtenez les URL auxquelles se connecter. Une fois que vous avez réglé toutes ces choses, il vous suffit de mettre les paramètres de connexion dans vos environnements ElasticBeanstalk comme variables d'environnement personnalisé, quelque chose comme:

MONGO_DB_URL = « Votre adresse IP interne MongoDB EC2 »

REDIS_URL = » l'url ElastiCache vous a fourni "

Puis lisez ces variables d'environnement dans votre application lors de la création de connexions à ces services.

De plus, vous allez devoir apprendre à configurer votre VPN et vos groupes de sécurité pour que tout se connecte. Par exemple, vous voudrez vos serveurs Elastic Beanstalk dans un groupe de sécurité, et les serveurs MongoDB dans un autre groupe. Ensuite, vous devrez configurer le groupe de sécurité MongoDB pour autoriser l'accès à partir du groupe beanstalk sur le port MongoDB. C'est similaire pour ElastiCache. Je pense que pour Elasticsearch vous devrez créer un rôle IAM avec un accès à l'API Elasticsearch, puis affecter ce rôle à vos serveurs Beanstalk. Bien sûr, il y a aussi les tâches administratives de configuration de serveurs Linux pour votre cluster MongoDB, configuration de clustering, basculement, sauvegardes automatisées, archives de journaux, mises à jour de sécurité périodiques, etc. Je sais que vous avez tout ce crédit AWS, mais vous devriez peser tout déplacer vers AWS par rapport au coût de toutes les tâches administratives que vous allez passer du temps. Elastic Beanstalk, Elasticsearch et ElasticCache sont une évidence si vous les obtenez gratuitement, mais mon projet de loi MongoLab devrait être assez élevé pour justifier la mise en place et la gestion moi-même.

+0

salut à nouveau @mbaird! J'essaie de rester à l'écart de solutions comme mongolab/redislabs à des fins de coûts (mon équipe a reçu un certain nombre de crédits AWS annuels). Y at-il une bonne documentation sur la façon de configurer mongodb sur EC2 et redis sur elasticache puis ensuite le router tous ensemble dans mes configs eb? eu du mal à trouver les bonnes ressources pour référence –

+0

@ChristopherChangchien voir mon édition ci-dessus. –

+1

merci pour la réponse en profondeur @mbaird! J'ai été un peu sur une île avec AWS jusqu'à présent, donc c'était très utile pour me donner une direction avec tout cela. certainement voir votre point de vue sur l'auto-administration mongoDB aussi. prendra très probablement votre conseil! –