Skip to content
Daniel Moldovan edited this page Jun 17, 2014 · 10 revisions

This pilot elastic cloud service runs a distributed NOSQL data end on top of Cassandra. We configure Cassandra in a master-slave fashion, in which we have a fixed Cassandra Seed, and a variable number of Cassandra Node instances. Thus,the elasticity of the data end is given by the ability of adding and removing at run-time nodes for holding data.

The second tier of the elastic cloud service handles client requests and accesses the data end. The request are received by a Load Balancer running HAProxy, which distributes them to instances of an Event Processing Service, which in turn processes the request and writes/reads data from the data end. Thus, the elasticity of this tier is achieved by adding/removing Event Processing Service instances at run-time.

DaaS M2M is an elastic application containing:

  • scripts to install Cassandra NoSQL distributed data store , and configure Cassandra Nodes to automatically add to existing Cassandra ring, and the Cassandra Seed nodes for removing Data Nodes.
  • a Java WEB application exposing RESTful services which interact with Cassandra Seed, which builds as executable war (embedded Tomcat), and scripts for automatically starting more Web Server instances and registering them in a load balancer
  • scripts for installing and configuring HAPRoxy HTTP load balancer for easy addition and removal of application servers
  • python scripts which generate random read/write requests, to act as a base for a simple workload generator.


Fig1. DaaS Logical Structure

Note: the scripts were tested from Ubuntu 11.10 upwards.

UPDATE (30.01.2014): The scripts have been updated such that when a Cassandra Node is stopped gracefully (OS shuts down), the node will decommission itself from the cluster, without the need of running decommission on Cassandra Seed. The same behavior applies to DaaS WebServices which decommission themselves from LoadBalancer. Note that this behavior will be invoked only if the IaaS provider shuts down the VM OS before decommissioning the VM.

To deploy:
– run a maven package command over the main pom of the project, which will create .tar.gz distributions for each module.
– All modules have in ./scripts an Install_Guide which is also packaged with their distributions.

Follow Demos below (if possible try to watch at least at 720p). Please note that the demo videos where shot during a live deployment of the application. Also, please note that application development might took place since the videos were shot. Thus, please check carefully the configuration parameters in the configuration files targeted by the video, as the configuration files might have additional or miss some configuration options.

1. Building and distributing DaaSM2M code in a cloud environment (demo video)
Demo video

1. Configuring an Elastic Cassandra Seed (acts as data controller and Cassandra access point) (demo video)
Demo video

1. Configuring a Cassandra Node to automatically join the Seed (demo video)
Demo video

1. Configuring a HAproxy http load balancer with scripts for easy addition/removal of hosts (demo video)
Demo video

1. Configuring the DaaSM2M Web Application exposing RESTful services which interact with Cassandra Seed (demo video)
Demo video

1. Configuring and running the Workload generator (demo video)

Demo video

Clone this wiki locally