Cooling Tower

This is the main page for documentation regarding the CoolingTower project components. Very much a work in progress, as is the documentation itself. Jump in !

 

Components and status

Deployment service:

Deployment service automates the creation of servers, and deploys applications based on rules for configuration and customisation.

Status: ALPHA, WIP CoolingTower deployment service design.

 

Naming service:

The naming service provides a RESTful api for mapping application names to server IPs/addresses.

Status: BETA. CoolingTower Naming service configuration and usage.

 

Elastic scaler:

Rules based application scaling.

Status: WIP Elastic Scaler Design.

 

Server minimiser:

Uses a constraint solver/planner to try and compact the number of applications on as few a number of instances as possible

Status: PROTOTYPE (on hold for the moment).

 

 

 

Installation and building from source

You will require maven installed: clone/obtain the source from the link above, and run "mvn package" or "mvn -Dmaven.test.skip package" to build cooling-tower. Cooling-tower is currently a war application - so the result of this will be a war file (and exploded version) in the /target directory of the project.

Project source: currently hosted at github. You can download the source as a tar from there, or (preferably) have git installed whence you can clone the repository

 

Running the application: can be done via deployment into a servlet container, or via "mvn jetty:run". Configuration options can either be system properties (for example passing via the command line -D) or via a configuration file - the path to the configuration file can be set by setting the system property called "cooling.tower.conf" - there is a prototype/sample config in the war file that you can base this off called cooling-tower.config.

 

Securing the application: certain sections of the RESTful api should be secured very carefully - so you should configure the application to ensure all access is authorised. Deployment apis under /api/deployment should be secured for valid end users, /api/naming should be restricted to "system" accounts only.

 

Customisation and extending: inside the exploded war file, you can locate .drl files which contain rules (with defaults) for deployment etc. Specifically, server-assignment.drl - for allocating applications to instances, and server-management.drl, containing rules pertaining to the lifecycle of instances. These are written in the drools rule language and should have documentation inside them to explain more.

Naming service

See CoolingTower Naming service configuration and usage for details.

API usage

Deployment API usage: TBD

Naming service API usage: CoolingTower Naming service configuration and usage.