Projects/Cloudstone
From RAD Lab
←Older revision | Newer revision→
Contents |
Introduction
Cloudstone is a multi-platform, multi-language performance measurement tool for Web 2.0 and Cloud Computing. It was presented at the CCA 08 Cloud Computing Workshop.
The goal of the project is to serve as a benchmark generating reproducible and consistent results, allowing systematic exploration of deployment and optimization choices. The approach involves using a flexible, realistic workload generator (i.e. Faban) to generate load against a realistic Web 2.0 application (i.e. Olio). The stack is deployed on Amazon EC2 instances.
- Olio, a Web 2.0 social-events application with PHP and Ruby implementations.
- Faban, a Markov-chain-based workload generator that can be used with Olio.
For more up-to-date information, read this.
Architecture
The Cloudstone stack can be divided into three subcategories: web application, database, and load generator. When running benchmarks, the load generator generates load against the web application, which in turn makes use of the database.
Web Application
The Web 2.0 application used in Cloudstone is Olio, an open source social-events application with both PHP and Ruby implementations. Cloudstone uses the Ruby implementation. Nginx and HAProxy are used to load balance between the many Rails servers (i.e. Thin servers).
Database
Cloudstone supports the use of either MySQL or PostgreSQL. Replication when using MySQL is supported using the built-in master-slave replication features. Replication when using PostgreSQL is supported using PGPool-II, a type of load balancer for PostgreSQL database servers.
Load Generator
Cloudstone generates load using Faban, a Markov-based workload generator.
Deployment
The deployment of Cloudstone involves deploying and configuring all the services mentioned in the previous section. This process is split into two parts:
- Initializing Amazon EC2 Instances
- Deploying the Services
Initializing Amazon EC2 Instances
There are two methods of requesting and initializing Amazon EC2 instances (besides the trivial manual method) that are currently under development:
- Manager Script, a Ruby script for managing Cloudstone clusters.
- Deployment Library, a Scala (i.e. Java-compatible) library for managing Cloudstone instances and services.
Deploying the Services
Once the Amazon EC2 instances have been obtained, Cloudstone deploys and starts the necessary services using Chef, a systems integration framework written in Ruby.
- Cloudstone Chef Recipes and Configurations
- Instructions for Deploying Cloudstone Manually
- Chef Documentation
Benchmarks
- Database Performance
- Compare the performance between a single server and a replicated cluster.
- Compare the performance between MySQL and PostgreSQL.
- Discover the bottlenecks of configurations varying in the number of databases and application processes.
