rubber/rubber — pull request #368 by unlimit (2013-06-13 13:53:53+00:00)
Title: Resque Autoscale Beta

What is Rubber::AutoScale ?
Rubber Autoscale provides a way to use the existing Rubber Framework to automatically bring up or shut down instances based upon load. The load properties are configurable and can be changed from one application to another based on their specific needs. Rubber::AutoScale provides an easy way to scale resque workers with rubber.

Why Rubber::Autoscale ?
Saves Time - No need for manual intervention in bringing up or shutting down instances
Improves Application reliability and performance
Standardized Platform - Build on top of proven technology framework - Rubber

Rubber :: AutoScale Setup

Here is are the steps to set up Rubber autoscale:

1) You need vulcanize resque autoscale template.
It include following:
1.1 Autoscale web
1.2 Autoscale rake tasks
1.3 Autoscale Notifier(Mailer)
1.4 Cron
2) You need upload ssh keys on server and add paths to these keys into rubber-resque_autoscale.yml
3) After deploy you can setup all basic configuration via Web UI

How it works

1. Every 20 minutes starting Autoscale rake task. It check how many workers exist and how many workers are busy.
Depends on loading autoscale doing 3 things:
- bring up new instance
- destroying instance
- idling

2. Every 5 minutes Autoscale save loading information into db(redis). This information will be displayed in web UI and daily report.

3. Web part of Autoscale based on Sinatra App. It allow:
- configure autoscale settings(number of instances, thresholds, email)
- enable, disable autoscale
- check autoscale status, see loading graph, logs..
4. Once day, Autoscale sending report to admin, with information about resque worker loading, status and graphs.