Grids and clouds are separate but equal players in the modern distributed computing environment. This talk will introduce Crunch Cloud, a .Crunch grid application designed to manage collections of virtual machines. Later we'll demonstrate Crunch Cloud in action, and close with summary comments.
Virtualization allows running multiple system images (virtual machine guests) on a single machine (the virtual machine host). Data centers provide racks of hardware capable of virtualizing systems. So how do you manage all those virtual machine hosts and guests? Crunch Cloud provides a single interface to all your virtual hosts in order to access all of your virtual guests.
Crunch Cloud is management software for Intel compatible 64bit CPUs capable of virtualization: the AMD-V and Intel VT-x family of processors. Each virtual system is a guest operating system image that runs on top of a host operating system. Host systems run 64bit Fedora Linux while guest systems can be 32- or 64-bit Linux or Windows. Virtual machines are managed through Red Hat's Virtual Machine Manager software. The web interface allows management of guests and direct access to running guests through a VNC-based browser interface.
A Crunch Cloud consist of master and slave systems. The master acts as the web-based management interface to the slaves. The slaves provide the virtual machines. Slaves operate only if the Virtual Machine Manager software is installed on that node and there is at least one virtual machine guest configured for it. Both masters and slaves run on nodes within a grid community.
Crunch Cloud is an application within a .Crunch grid. The grid is a collection of compute resources, referred to as nodes. Nodes can be associated to form named communities. If a community has one node designated as a Cloud Master then that community can be used as a Crunch Cloud. In this picture, Team Blue can be used as a Crunch Cloud. The grid manages the communities by sending workflows to them. A workflow is a description of processing the nodes in the community will perform. For Crunch Cloud, each node is told to either start or stop the slave web server. If it is the master node it is also told to start or stop the master web server.
To use Crunch Cloud you must first understand how to use the .Crunch grid to setup a community. Crunch Cloud is an application within a .Crunch grid, an application agnostic client/server environment for resource sharing and node management. The server side is built using standard workflow interfaces implemented over a JBoss application server container. The client side provides an API library and a plugin-extensible Java reference client. The .Crunch grid operates with users submitting programs (known as toolsets) to the grid that perform specific operations. These toolsets are then configured in workflows along with requirements for the computing resources such as CPU types. The grid breaks workflows into smaller components (jobs and tasks) and schedules them for worker nodes to retrieve. Workers run command line versions of the client software to retrieve tasks and toolsets, run the toolsets and return status back to the grid. .Crunch is data agnostic meaning that workers are given URLs to data to download. This allows existing data investments to be easily integrated into grid processing.
Nodes in the grid run the worker client software. This software registers the node with the grid for a grid subscriber. When a node is registered it belongs to the default community named The Commons . The first step to creating a Crunch Cloud is to create a named community. This example shows an Organization named CloudHosts . When the Worker icon next to the hostworker userid is clicked, the nodes registered for that subscriber are displayed. Click and drag each one to the community name to enroll the nodes in the named community. Nodes can belong to more than one community. The grid determines if the node can be used by that community. Each node can work on a single task at a time. Once the current task is complete, the node can accept a task from any other community for which it is enrolled. When using Crunch Cloud it is advisable that nodes belong only to The Commons and one other community – the community that will be the cloud. To remove a node from a community, double click its icon and select the community whose enrollment is to be canceled. At this point, the nodes have been associated as a community. But the community is not yet an actual cloud.
In the .Crunch reference client, the Crunch Cloud specific tabs can be found in the Workflow menu, under the Cloud submenu. The first step is to set the master node. Double click the community that is to be made into a cloud. Double click on the node that will be the master. Click on the Set Master button to make it the master. Click on the Save button to save this cloud configuration. Now the community is configured as a cloud.
To start the cloud, first select the community that has been configured as a cloud. The initial Cloud State should be Not Running . Set the port the master server should run on. Add or change the userid and passwords that will be allowed to login to the cloud. Then click on the Start Cloud button. The grid will tell the nodes to start the master and slave web servers. Check the Manage Workflow tab to see when the workflow is complete – this means the nodes should be ready to use. In the Manage Clouds tab, click on the Connect to Master button to open a browser window to the master node. To stop the cloud select the community again to update its status, then click on the Stop Cloud button. Stopping a cloud will stop all virtual machines managed by the hosts within the cloud.
Crunch Cloud is now ready for use. The master server will provide a login page. Use one of the userid/password pairs configured when the cloud was started. From here you'll find a simple menu based interface for managing the virtual machine hosts and guests within the cloud.
The Main Menu lists global functions for the cloud. The initial release of Crunch Cloud has only one main menu function: list the available virtual machine hosts. Each virtual machine host is a cloud slave that started and was able to identify at least one virtual machine guest under its control. Note that Crunch Cloud sessions are cookie based and that the userid and passwords configured for them are not stored permanently on the master's disk. This allows the master to use different userids and passwords each time the cloud is started.
The list of available hosts shows each slave by its configured node name and its reported IP address. Click on any entry in the list to view the available virtual machine images that host manages.
The names of the virtual machine images managed by a host are based on their libVirt/QEMU configuration. Select any image to display a page of functions for managing the virtual machine image. These include start, stop, connect and info, where the latter will show the current virtual machine state.
When you connect to a virtual machine the browser starts a Firefox plugin that opens a VNC connection to the running virtual machine image. If the image is not running then the window will show a large black box. The Firefox plugin is included with the Crunch Cloud distribution. It is currently only delivered for Fedora systems but may be made available for Ubuntu upon request. Windows and Mac systems are not currently supported. That concludes the overview. Now lets see Crunch Cloud in action. (No slides for demo)
Crunch Cloud is a work in progress. There are a number of features that CEI plans to address in the future. This includes file uploads to allow image management through the web interface, extend the set of virt-manager controls supported by the web interface and improve scaling issues for large numbers of hosts and guests. Additionally, CEI is investigating extending the Firefox plugin to be supported on multiple platforms.
Crunch Cloud is a relatively simple example of a long running .Crunch application. It uses off the shelf technology to provide a simple to use browser-based control of virtualized systems. This has been a brief introduction to Crunch Cloud. Complete configuration and usage details are available in the Crunch Cloud Users Guide.
For more information, feel free to contact CEI by email or mail or give us a call at 719-388-8582.
Introduction to Crunch Cloud
Cloud Management in a Grid
Why Crunch Cloud? <ul><li>Distributed VM (Virtual Machine) hosts
Summary <ul><li>Simple .Crunch application </li><ul><li>Power behind the grid </li></ul><li>COTS technology </li><ul><li>Mongoose / Python embedded web servers
Red Hat Virtual Machine Manager </li></ul><li>Browser-based cloud control </li></ul>
Colorado Engineering, Inc. 1310 United Heights Colorado Springs, Co 80921 719-388-8582 Michael J. Hammel, Principle Software Engineer [email_address] Michael J. Bonato, Director of Business Development [email_address] Larry Scally, President [email_address]