Navigation


Integration of Globus Nimbus and OpenNEbula

This page contains download information and instructions about the integration of Globus Nimbus (formerly known as Virtual Workspace Service) and OpenNEbula. On the Nimbus side, changes have been made on Workspace Service component. (Read the Nimbus FAQ to learn about its components)

Note that although the current version of Nimbus is TP2.0, all changes have been made on v. 1.3.3.1

This integration was developed by William Voorsluys from GRIDS Lab at the University of Melbourne, Australia during Google Summer of Code 2008

Please have at look at Nimbus and OpenNEbula before going further on this integration.

Download

Packages

Nimbus Workspace Service | Source code

Changes on OpenNEbula (see Ticket 33) | Download

Sample configuration files

VM template example

OpenNEbula Java API | jar Source code

This API is required only if you are planning to develop a new Java application on top of OpenNEbula. If you are only interested in the Nimbus Workspace Service, you don't need to download this package

SVN access

The OpenNEbula Java API http://svn.opennebula.org/contrib/onejava/trunk

Modified Nimbus Workspace Service v. 1.3.3.1 http://svn.globus.org/repos/gsoc/william/virtual-workspaces/trunk

Installation instructions

Prerequisites

For a basic testing installation on a single machine: Xen, Java 1.5 and Globus Toolkit 4.0.8. See OpenNEbula's prerequisites for a full installation. Also check Globus Nimbus prerequisites

Steps

  1. Install OpenNEbula

Follow OpenNEbula documentation for this purpose.

  1. Install the Nimbus Workspace Service frontend

No Nimbus backends need to be installed, since ONE replaces them completely.

Package is available from this page.

Follow the Nimbus admin docs. In summary, basic steps are:

Log in as 'globus' and enter:

export GLOBUS_LOCATION=/path/to/globus-location cd workspace-service-nebula-TP1.3.3.1-src ant deploy

Download and copy sample configuration files to conf directory:

cd /path/to/globus-location/etc/workspace-service tar xzf ws-one-sample-config.tar.gz (contains jndi-config.xml and ONE configuration folder)

The above commands will also install the workspace client at /path/to/globus-location/bin/workspace

Run

  1. Start Globus container

  1. Run client

grid-proxy-init

workspace --deploy --file workspace.epr --metadata hellonebula.xml -s https://localhost:8443/wsrf/services/WorkspaceFactoryService --deploy-duration 120 --deploy-mem 128 --numnodes 1 --deploy-state

Issues/Limitations

  1. Sometimes it is necessary to go to the base installation directory

(workspace-service-nebula-TP1.3.3.1-src) and type 'ant resetDB'. I don't know why but sometimes after shutting the container down it can't be restarted unless the DB is reset.

  1. Networking

Like in a regular OpenNebula installation, DHCP configuration must be manually done. I prepared the code to deal with network associations, but to make networking fully automatic, some python scripts from the original workspace backend should be ported to our integration code.

Changed code

Workspace Service

I will include here a description of all changes made in the Workspace Service.

  1. New Tasks

I have extended WorkspaceRequest to create various ONE VM specific tasks, such as start, suspend, resume, etc. Tasks related to propagation have been completely disabled since ONE relies on NFS for propagation image to cluster nodes.

  1. New Slot Management implementation

I have extended DefaultSlotManagement and adapted it to ONE needs to create OpenNebulaSlotManagement. The new slot manager queries ONE's XML-RPC API to figure out whether there are enough resources for a request or not. If more that one cluster can handle the request, it chooses the least loaded.

  1. New BindingAdapter

I have extended DefaultBindingAdapter to create OpenNebulaBindingAdapter.

  1. Changes on negotiable.xsd

I have also modified the this XML schema to allow passing generic "name, value" parameters to the scheduler. This additions have been already discusses on this list.

OpenNEbula

Some changes were made according to ticket 33

To Do

Some improvements are needed on this integration, including:

  1. Port the integration code to Nimbus Workspace Service TP 2.0, taking advantage of the new RM API
  1. Improve the Slot Management implementation by handling CPU percentage as well (it currently handles memory restrictions only)

Attachments