This is an incubation project for Cloud Foundry. You can follow the development progress on [Pivotal Tracker][t].
The CF-AutoScaler provides the capability to adjust the computation resources for CloudFoundry applications through
- Dynamic scaling based on application performance metrics
- Scheduled scaling based on time
The CF-AutoScaler is provided as a Cloud Foundry service offering. Any application bound with CF-AutoScaler service will be able to use it.
System requirements:
- Java 7 or above
- [Apache Maven][b] 3
- [Apache couchdb][c]
- cf command line version 6
Database requirement:
The CF-AutoScaler uses Apache couchdb as the backend data store. You can have your own database installation from [here][c] or use an exisiting couchdb service, for example [Cloudant][e]
Requirements of Cloudfoudry access:
- To register
CF-AutoScalerservice, you need a valid Cloudfoundry UAA user id. CF-AutoScalerwill invoke Cloud controller API to trigger scaling on target application. To achieve this, a UAA client id with authoritiescloud_controller.read,cloud_controller.adminis needed. You can create it using UAA command line tool:
uaac target https://uaa.<cf-domain>
uaac token client get admin -s <cf uaa admin secret>
uaac client add cf-autoscaler-client \
--authorized_grant_types client_credentials \
--authorities cloud_controller.read,cloud_controller.admin \
--secret cf-autoscaler-client-secretThen you can start with cloning this project:
$ git clone git://github.com/cfibmers/open-Autoscaler
$ cd open-AutoscalerThe CF-AutoScaler is offered as an Java Web Application. You need the following steps to get it running.
- Package
CF-AutoScalerwith Maven - Launch
CF-AutoScalerruntime - Register
CF-AutoScalerservice broker on CloudFoundry
The script ./bin/getStart.sh will help you to complete all these steps. The manual guide is also listed as below.
The AutoScaler has three components, all of them are Java Web Application:
api: provides public APIs to manage scaling policy, retrive application metrics and scaling history. See details in [API_usage.rst][a]servicebroker: implements the [Cloudfoundry service broker API] (http://docs.cloudfoundry.org/services/api.html) to offerCF-AutoScaleras a service.server: the backend engine ofCF-AutoScaler
All these 3 components are configured through Maven profiles. You need to create your own profile according to your runtime environment, and then package the projects to .war file. Here is an example:
- Assuming you are using "sample" profile, edit the properties in {project}/profiles/sample.properties for
api,servicebroker,server - Run
mvn clean package -Psample -DskipTeststo create *.war file which would be found in folder {project}/target
As an Java web application, you can launch the components of CF-AutoScaler with Tomcat directly or push to CloudFoundry.
Please note the runtime environment must use the below settings you configured in servicebroker/profiles/{profile}.properties.
serverURIList=AutoScaling.bosh-lite.com
apiServerURI=AutoScalingAPI.bosh-lite.comIf you launch CF-AutoScaler with Tomcat server in Eclispe & plugin [M2eclipse][d], the following steps will help you to enable your customized configuration :
1. Run mvn eclipse:eclipse -Dwtpversion=2.0 for each projects
2. Activate <profile> in eclipse by Right-click the project -> Properties -> Maven -> Fill in the <profile> name you want to activate.You can register CF-AutoScaler with command:
cf create-service-broker CF-AutoScaler brokerUserName brokerPassword brokerURI
cf enable-service-access CF-AutoScalerNow, you can play with CF-AutoScaler.
Firstly create a CF-AutoScaler service, and bind to you application
cf create-service CF-AutoScaler free <service_instance>
cf bind-service <app> <service_instance>Then define scaling policy using the APIs described in [API_usage.rst][a]
This project is released under version 2.0 of the [Apache License][l]. [a]: https://github.com/cfibmers/open-Autoscaler/blob/master/docs/API_usage.rst [b]: https://maven.apache.org/ [c]: http://couchdb.apache.org/ [d]: http://www.eclipse.org/m2e/ [e]: http://www.cloudant.com [l]: LICENSE [t]: https://www.pivotaltracker.com/projects/1566795