|
Distributed Service Management Toolkit
An open platform for managing planetary-scale services. |
|
|
|
|
Documentation Publications Services |
Contents
1 OverviewThe Distributed Services Management Toolkit (DSMT) provides the tools for easy deployment and operation of an application on multiple PlanetLab nodes. DSMT contains make it easy to create PlanetLab slices, create slivers on PlanetLab nodes, install an application on the multiple nodes and monitor the operation on the nodes. DSMT will:
This guide gives step-by-step instructions on using DSMT to get an application installed and run on PlanetLab. Some references that you will find useful:
2 Getting Your Application DistributedThe steps to use DSMT are:
Using # Assuming the PI has created a slice 'my_slice' for user 'me@example.com' > dsmtc --cli --slice my_slice dsmtc me@example.com [user] my_slice> manage dsmtc me@example.com [user] my_slice> depot put my-application.rpm dsmtc me@example.com [user] my_slice> setagent --agent deployment-agent dsmtc me@example.com [user] my_slice> plan set --plan goodNodes --base minus left=all_nodes right=failed dsmtc me@example.com [user] my_slice> plan set --plan only10 --base limit parent=goodNodes count=10 dsmtc me@example.com [user] my_slice> setplan --plan only10 dsmtc me@example.com [user] my_slice> dsmtc me@example.com [user] my_slice> status ... DSMT is for building a service on PlanetLab. A service is made up of instances that run on multiple PlanetLab nodes. Independent of these instances is a (possibly distributed) Service Planner. The Service Planner makes placement and control decisions for the overall service. For instance, the service planner would decide that, because of an increased load on the service, new instances need to be created. DSMT does not implement a Service Planner -- later versions will include the tools for building these (this is an interesting research area that we hope will be filled by someone) but it does provide a command line interface for an individual to act as the service planner. Additionally, DSMT includes a Container Manager that can allocate and install the service instances on PlanetLab nodes. For instance, the Container Manager can install a service on 10 geographically dispersed PlanetLab nodes and re-install the instances and nodes go down. 2.1 Creation of SlicePlanetLab requires a slice to be created by a site's principle investigator ("PI"). If you don't know the PI for your site, visit the PlanetLab institiutions page.
There are two ways to create a slice that will be
managed by DSMT: the PI can use the 2.1.1 PI Creation of a Managed Slice
After installing
dsmtc create --user PIACCOUNT --password PIPASSWORD --role PI
--user SLICEUSER --slice SLICENAME
This will create the slice named 2.1.2 Making an Existing Slice Managed
If the site's PI has already created a slice for
a user, that user can make the slice managed by
dsmtc manage -slice SLICENAME
2.2 Setting Accounts and Passwords
The PlanetLab account and password can be entered
everytime
dsmtc op --user ACCOUNT --password PASSWORD --role user otherParameters
One can save this input by creating a file named
account: planetlabuser@user.example.com
password: PASSWORD
role: user
Where
2.3 Preparing Application
The installation of your application on the PlanetLab
nodes is done by the installation agent you set.
These are instructions for using
Once the rpms are created, they are uploaded to
the repositry using the 2.3.1 Deploying Your Application RPM2.3.2 Deploying Your Application with rpmgen
One way of building your application is to place
the application in a deployment tree and
add to that tree the files
Assume the application is named
tar -tzf pinger-1.8.tgz
pinger-1.8/
pinger-1.8/pinger
pinger-1.8/start.sh
pinger-1.8/stop.sh
pinger-1.8/status.sh
...
The
Then the following invocation of
rpmgen --installdir /usr/local --file pinger-1.8.tgz
--start /usr/local/pinger/start.sh
--stop /usr/local/pinger/stop.sh
--status /usr/local/pinger/status.sh
This invocation of
dsmtc depot put pinger-1.8.i386.rpm
dsmtc depot put dsmtw_pinger-1.8.i386.rpm
You can view the contents of the repository with
2.4 Selecting Nodes
Once you have your application in the repository,
you give the Here are some examples of node selection: Selecting all nodes: dsmtc setplan --plan all_nodes Selecting 10 random nodes. Here we define our own plan ("only10") and then set it to the slice. dsmtc plan set --plan only10 --base limit count=10 dsmtc setplan --plan only10 Selecting 10 nodes but removing nodes that 'fail'. This uses the 'failed' set which collects nodes that timeout for various reasons. This creates the set 'goodNodes' which are all the nodes minus the failed ones, then chooses 10 from that set. dsmtc plan set --plan myFailed --base failed dsmtc plan set --plan goodNodes --base minus left=all_nodes right=myFailed dsmtc plan set --plan only10GoodNodes --base limit parent=goodNodes count=10 dsmtc setplan --plan only10GoodNodes One can select nodes based on geographic location, operational status and more complex rulesets by using query systems like SWORD . Refer to the DSMTC Reference Guide for detailed descriptions of all the functions available. 2.5 Monitoring Deployment
As the containers are created and the application is
installed, status events are created.
These
status events
are sent over
The 2.6 Monitoring Application
Once the application is installed, the
deployment-agent periodically invokes
This does not preclude the application having it's own status reporting and operation management function. |