Projects/Cloudstone

From RAD Lab

Revision as of 19:48, 11 August 2009; view current revision
←Older revision | Newer revision→
Jump to: navigation, search
Screenshot of Olio
Enlarge
Screenshot of Olio

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:

  1. Initializing Amazon EC2 Instances
  2. 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.

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.

Useful Links