Askalon

Cloud Application Development and Computing Environment

--> GridARM: Askalon's Grid Resource Management System

Installation

GT4 (WSRF Core)

  • The GridARM system is WSRF complaint, implemented in Java-Core [JCORE] framework. Therefore atleast WSRF Java core framework is required for it. Downlaod WSRF Java core from here and install it as follows:
    • Untar the distribution in a temporary folder and change directory to it.
    • Set GLOBUS_LOCATION envorinment variable, pointing to the location where you want to install GT4 core.
    • Run the command: ant deploy.
  • If you want to install entire GT4 distribution or need more information about GT4, follow the link http://www-unix.globus.org/toolkit/downloads/development/ Note that for client side usage, core distribution is sufficient.

GridARM

  • Download: You can download GridARM source from the CVS repository,  for it following steps are required:
    • setenv CVSROOT <your_user_name>@138.232.66.163:/var/cvs
    • setenv CVS_RSH ssh
    • cvs checkout grms;  This will download the GridARM code in 'grms' directory, situated in your current working directory.
  • Configure: You need to change discoverer driver parameters according to the MDS/NWS services running in your grid infrastructure. Atleast on MDS2 or NWS service should be running in order to make GridARM working. Each discoverer (GIS service like MDS2, NWS) is deployed as JNDI resources and you can modify these resource in deploy-jndi-config.xml. Change directory to grms/discovery and edit the file deploy-jndi-config.xml, by making following changes:
    • In resource 'home' change drivers parameters according to the GIS services you have installed, for example dpsgrid, agrid and nws.
    • <resource
                  name="home"
                  type="org.askalon.grms.discovery.DiscoveryHome">
                  <resourceParams>
                      <parameter>
                          <name>factory</name>
                          <value>org.globus.wsrf.jndi.BeanFactory</value>
                      </parameter>
                      <parameter>
                          <name>resourceClass</name>
                          <value>org.askalon.grms.discovery.Discovery</value>
                      </parameter>
                      <parameter>
                          <name>resourceKeyName</name>
                          <value>{http://discovery.grms.askalon.org}DiscoveryKey</value>
                      </parameter>
                      <parameter>
                          <name>resourceKeyType</name>
                          <value>java.lang.String</value>
                      </parameter>
                      <parameter>
                          <name>drivers</name>
                          <value>dpsgrid,agrid,nws</value>
                      </parameter>
                  </resourceParams>
              </resource>

    • Now proceed by modifying each specific parameters of each driver, for example service host, port, baseDn etc. as shown below:
    • <!-- DPSGRID Driver RESOURCE ---------
      ------------------------------------------->
      <resource name="dpsgrid"  <!-- Should match with the name given in drivers param-->
                  type="org.askalon.grms.DiscovererContext">
                  <resourceParams>
                      <parameter>
                          <name>
                                factory
                          </name>
                          <value>
                                org.globus.wsrf.jndi.BeanFactory
                          </value>
                      </parameter>
                      <parameter>
                          <name>
                              name
                          </name>
                          <value>
                              mds2
                          </value>
                      </parameter>
                      <parameter>
                          <name>
                              type
                          </name>
                          <value>
                              mds2
                          </value>
                      </parameter>
                      <parameter>
                          <name>
                              address
                          </name>
                          <value>
                              olperer.dps.uibk.ac.at
                          </value>
                      </parameter>
                      <parameter>
                          <name>
                              port
                          </name>
                          <value>
                              2135
                          </value>
                      </parameter>
                      <parameter>
                          <name>
                              baseName
                          </name>
                          <value>
                              Mds-Vo-name=dpsgrid, o=Grid
                          </value>
                      </parameter>
                      <parameter>
                          <name>
                              schemaType
                          </name>
                          <value>
                              default
                          </value>
                      </parameter>
                      <parameter>
                          <name>
                              queryType
                          </name>
                          <value>
                              Basic
                          </value>
                      </parameter>
                  </resourceParams>
              </resource>
      <!-- AGRID Driver RESOURCE ---------
      ------------------------------------------->
              <resource
                  name="agrid"
                  type="org.askalon.grms.DiscovererContext">
                  <resourceParams>
                      <parameter>
                          <name>
                                factory
                          </name>
                          <value>
                                org.globus.wsrf.jndi.BeanFactory
                          </value>
                      </parameter>
                      <parameter>
                          <name>
                              type
                          </name>
                          <value>
                              mds2
                          </value>
                      </parameter>
                      <parameter>
                          <name>
                              address
                          </name>
                          <value>
                              agrid
                          </value>
                      </parameter>
                      <parameter>
                          <name>
                              port
                          </name>
                          <value>
                              2135
                          </value>
                      </parameter>
                      <parameter>
                          <name>
                              baseName
                          </name>
                          <value>
                              Mds-Vo-name=site, o=Grid
                          </value>
                      </parameter>
                      <parameter>
                          <name>
                              schemaType
                          </name>
                          <value>
                              glue
                          </value>
                      </parameter>
                      <parameter>
                          <name>
                              queryType
                          </name>
                          <value>
                              Basic
                          </value>
                      </parameter>
                  </resourceParams>
              </resource>

      <!-- NWS DRIVER RESOURCE -------------
      ----------------------------------------------->
              <resource
                  name="nws"
                  type="org.askalon.grms.DiscovererContext">
                  <resourceParams>
                      <parameter>
                          <name>
                                factory
                          </name>
                          <value>
                                org.globus.wsrf.jndi.BeanFactory
                          </value>
                      </parameter>
                      <parameter>
                          <name>
                              name
                          </name>
                          <value>
                              nws
                          </value>
                      </parameter>
                      <parameter>
                          <name>
                              type
                          </name>
                          <value>
                              nws
                          </value>
                      </parameter>
                      <parameter>
                          <name>
                              address
                          </name>
                          <value>
                              olperer.dps.uibk.ac.at
                          </value>
                      </parameter>
                      <parameter>
                          <name>
                              baseName
                          </name>
                          <value>
                              Mds-Vo-name=dpsgrid, o=Grid
                          </value>
                      </parameter>
                      <parameter>
                          <name>
                              schemaType
                          </name>
                          <value>
                              default
                          </value>
                      </parameter>
                      <parameter>
                          <name>
                              queryType
                          </name>
                          <value>
                              Basic
                          </value>
                      </parameter>
                  </resourceParams>
              </resource>


  • Deploy: Change the directory to 'grms' i.e. where you downloaded the source code, and do the following:
    • make deploy

This will deploy GridARM basic brokerage service. See Usage.

Distributed Deployment

Instead of installing entire GridARM system on a single machine, we can install its services on different distributed machines. Also referrals can be configured in the broker service. Here is the procedure. TBD

Usage

For Simple MDS/NWS API Usage:  html, PDF

User's Perspective

Starting service container
  • Change directory to $GLOBUS_LOCATION/bin
  • Run the command globus-start-container [-p port]

Invoking Broker:
  • Change directory to $GLOBUS_LOCATION/bin
  • Run the command gridarm-broker, Here is the usage of the command.

    Usage:

    gridarm-broker <select | allocate | confirm> [OPTIONS]

    Commands:

    • select: This command selects resource based on given constraints in the form of relations, and returns list of selected resources
    • allocate:This command performs resource selection and allocation, and returns reservation instances for all selected resources
    • confirm:This command performs resource selection, allocation and then confirmation as an atomic transaction and returns tickets for all reservation of resources.

    OPTIONS:

    • -service: broker service url for example: -service http://olperer.dps.uibk.ac.at:8141/wsrf/services/Broker

    • -type: resource type

    • -relations: Collon separated list of relations/constraints in the format "count >= 2:availableCpu > 2.5"

    • -name: Resource name

    • -count: Number of resources to be selected,allocated or confirmed


Programmer's Perspective

org.askalon.grms.broker.GridResourceBroker is the main client class which can be used to interact with the GridARM system. See API for the class overivew.

The user need to know broker service EndpointReferenceType or URL, which can be used to initialize the GridResourceBroker class.

For method invocation, client programmer needs to manipulate ResourceRequest, the usage of the ResourceRequest class is given in the  api-usage.

People

Mumtaz Siddiqui
Prof. Dr Thomas Fahringer
Group Members