4

Je déploie une application rails sur des instances EC2, où je veux configurer Auto Scaling pour être utilisé avec un Elastic Load Balancer. Sur un seuil particulier, je veux générer une nouvelle instance. Lors de la configuration du déclencheur pour le groupe de mise à l'échelle automatique, nous avons des options pour l'utilisation du processeur, le réseau ou les E/S disque; mais étant une application de rails, je ferai face à la ressource crunch sur la mémoire plutôt que CPU ou IO.Comment configurer Auto Scaling basé sur la mémoire sur Amazon EC2?

Est-ce que quelqu'un a configuré EC2 Auto Scaling pour une application rails avec succès? Quelle est la manière préférée d'utiliser AWS avec des rails?

FYI: J'utilise le passager comme serveur d'application.

Merci pour votre temps.

Répondre

1

Je ne l'ai pas fait avec Rails, mais avec java dans Tomcat.We utilisé tomcat valves/scripts pour détecter l'utilisation de la mémoire et l'afficher dans Amazon cloudWatch en tant que statistiques personnalisées de surveillance du cloud. Vous pouvez créer un déclencheur d'échelonnement basé sur l'alarme cloudwatch surveillant cette métrique.

Certaines sections de la technique ci-dessus peuvent même être chevauchées pour les rails.

1

En fait, je pense que vous devriez essayer de régler votre configuration Passenger en fonction du type d'instance que vous utilisez (voici un article à ce sujet: http://blog.scoutapp.com/articles/2009/12/08/production-rails-tuning-with-passenger-passengermaxprocesses). Cela devrait vous assurer qu'à pleine charge, vous utilisez toute la RAM disponible, mais vous ne générez pas plus d'instances de passagers que de RAM disponibles. Cela, dans mon expérience conduit à saturer toutes les ressources (CPU & RAM) et vous pouvez déclencher une politique de l'échelle automatique en fonction de l'utilisation de l'UC. Vous devez également modifier le type d'instance afin d'obtenir les meilleures performances (j'ai utilisé l'instance cc1.xlarge avec beaucoup de succès). Si vous définissez la mise à l'échelle automatique en fonction de la RAM, vous devriez être en mesure de créer une mesure sur CloudWatch qui surveille l'utilisation de la RAM et la mise à l'échelle automatique à l'aide de cette mesure. La création d'une mesure consiste simplement à publier les données de mesure à intervalles réguliers à l'aide de l'API CloudWatch (http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/CloudWatch/Metric.html). Vous pouvez créer une tâche d'arrière-plan rails qui s'exécute toutes les minutes et publie les données de mesure.