wiki:OnTime-Installv1

Version 12 (modified by Prasad Calyam, 14 years ago) (diff)

--

OnTimeMeasure-GENI Installation Document

Prasad Calyam, Weiping Mandrawa, Kunpeng Zhu
May 31, 2010

Software License: 'GENI Project License (GPL)'

1. System Requirements:

  1. Operating System: Fedora
  1. Software: MySQL, Graphite, Perl, Python, Iperf, Ruby, Bwctl-server, Bwctl-client, Twisted
  1. Perl Modules: Config::Natural, POSIX, Sys::HostIP, DBD::MySQL, IO::SOCKET::SSL, Log::Log4perl:Net::SSLeay, Math::Random

2. OnTimeMeasure-GENI Installation:

OnTimeMeasure-GENI is a prototype measurement service for the GENI facility users. The measurement service can be used to perform centralized and distributed orchestration and provisioning of active measurements within experiment slices for purposes such as:

  • Network paths monitoring
  • Network weather forecasting
  • Network performance anomaly detection
  • Network-bottleneck fault-location diagnosis

The 'OnTimeMeasure researcher web-portal' enables a ProtoGENI/Emulab user to register, create and monitor experiment slices on a geographically distributed backbone encompassing Internet2 resources with experiment nodes at Kansas, Washington and Utah locations.

An example deployment of centralized OnTimeMeasure-GENI could feature 1 Root Beacon at Kansas, and 2 Node Beacons at Washington and Utah locations, respectively.

An example deployment of distributed OnTimeMeasure-GENI could feature Node Beacons at Kansas, Washington and Utah locations, respectively.

2.1 ProtoGENI Slice Creation and Configuration

To obtain detailed information about ProtoGENI slice creation, please refer to the 'ProtoGENI Tutorial'

In order to create a ProtoGENI slice, we need to define the corresponding RSpec. An example of a centralized orchestration RSpec that consists of 3 nodes is as follows:

<rspec type="request" xmlns="http://www.protogeni.net/resources/rspec/0.1">

<!-- Fedora Backbone Node -->
<!-- Washington Location -->
<node component_uuid="urn:publicid:IDN+emulab.net+node+pg41" component_manager_uuid="urn:publicid:IDN+emulab.net+authority+cm" 
virtual_id="ontime_nodebeacon1" virtualization_type="emulab-vnode" exclusive="1">
    <node_type type_name="pc" type_slots="1"/>
    <interface virtual_id="virt-0"/>
</node>

<!-- Fedora Backbone Node -->
<!-- Kansas Location -->
<node component_uuid="urn:publicid:IDN+emulab.net+node+pg43" component_manager_uuid="urn:publicid:IDN+emulab.net+authority+cm" 
virtual_id="ontime_rootbeacon" virtualization_type="emulab-vnode" exclusive="1">
    <node_type type_name="pc" type_slots="1"/>
    <interface virtual_id="virt-0"/>
    <interface virtual_id="virt-1"/>
</node>

<!-- Fedora Backbone Node -->
<!-- Utah Location -->
<node component_uuid="urn:publicid:IDN+emulab.net+node+pg45" component_manager_uuid="urn:publicid:IDN+emulab.net+authority+cm" 
virtual_id="ontime_nodebeacon2" virtualization_type="emulab-vnode" exclusive="1">
        <node_type type_name="pc" type_slots="1"/>
        <interface virtual_id="virt-1"/>
</node>

<!-- Create link between root beacon located in Kansas to node beacon-1 located in  Washington -->
 <link virtual_id="root_beacon_to_node_beacon-1" link_type="ethernet">
    <interface_ref virtual_node_id="ontime_rootbeacon" virtual_interface_id="virt-0"/>
    <interface_ref virtual_node_id="ontime_nodebeacon1" virtual_interface_id="virt-0"/>
    <bandwidth>1000000</bandwidth>
  </link>


<!-- Create link between root beacon located in Kansas to node beacon-2 located in Utah -->
 <link virtual_id="root_beacon_to_node_beacon-2" link_type="ethernet">
    <interface_ref virtual_node_id="ontime_rootbeacon" virtual_interface_id="virt-1"/>
    <interface_ref virtual_node_id="ontime_nodebeacon2" virtual_interface_id="virt-1"/>
    <bandwidth>1000000</bandwidth>
  </link>

</rspec>

To check availability of nodes to include in an RSpec, please refer to the 'Emulab web-page'. Note that you will need to have an Emulab account to access the web-page.

2.2 Sliver Creation and Management

  • Register a slice
    registerslice.py –n <slice name>
    
  • Create sliver inside slice
    createssliver.py –n <slice name> <rspec file>
    
  • Start sliver
    startsliver –n <slice name>
    
  • Check sliver status
    sliverstatus –n <slice name>
    

Note: You may need to renew your sliver just after successful creation. For this,

renewsliver –n <slice name> <time>

2.3 Software Installation

When all the slivers are "Ready", login to each of the servers and run the following commands to setup the environment:

Get RPM key from Internet2
Note: RPM key is needed to allow software installation through Internet2 network

Software install on: [(Centralized: root beacon, node beacon), (Distributed: node beacon)]

sudo ./ontime_software_install.sh

Perl CPAN Module Installation
Note: Installation must point to Internet2 Perl CPAN repository

Software install on: [(Centralized: root beacon, node beacon), (Distributed: node beacon)]

sudo perl -MCPAN -e shell
o conf urllist push ftp://cpan.uchicago.edu/pub/CPAN/
o conf prerequisites_policy follow
o conf commit
exit
sudo ./ontime_perlmodule_install.sh

Additional software install only on the [(Centralized: root beacon)] -

mysqladmin -u root password 'new-password'

OnTimeMeasure-GENI Software Installation

Software install on: [(Centralized: root beacon, node beacon), (Distributed: node beacon)]

To obtain download information about the OnTimeMeasure-v1.0.tar.gz software, please email - Prasad Calyam

Once you have downloaded the tar file, untar/unzip on root beacon and node beacons.

2.4 Software Configuration

NTP Configuration

Software configuration on: [(Distributed: node beacon)]

sudo vim /etc/ntp.conf Edit the last line to:

server owamp.newy.net.internet2.edu

Restart ntpd service

sudo /etc/init.d/ntpd restart

BWCTL Configuration

Software configuration on: [(Distributed: node beacon)]

Edit the BWCTL config: /etc/bwctl/bwctl.conf

Remove the comments on the below lines and edit them as:

allow_unsync
sync_fuzz 5

Edit the BWCTL limits: /etc/bwctl/bwctl.limits Change the regular limit to:

limit regular with parent=root, \
        duration=30, \
        allow_tcp=on, \
        allow_udp=on, \
        allow_open_mode=on

Note: For more detailed instructions to configure NTP and BWCTL, please refer to the BWCTL Tool website. (http://www.internet2.edu/performance/bwctl/)

Database Configuration

Software configuration on: [(Centralized: root beacon)]

mysql -u root -p < BuildWebServicesDatabase.sql
mysql -u root -p < BuildMeasurementDatabase.sql
mysql -u root –p

At the mysql prompt, type

CREATE USER 'collector'@'%' IDENTIFIED BY '<collector password>';
GRANT ALL PRIVILEGES ON `Measurements` .  * TO 'collector'@'%';
GRANT ALL PRIVILEGES ON `WebServices` .  * TO 'collector'@'%';

Graphite and Twisted Installation

Go to install script fold and run: [(Centralized: root beacon)]

sudo ./ontime_graphite_install.sh

Graphite Configuration and daemon start

Initialize the graphite: [(Centralized: root beacon)]

cd /opt/graphite/webapp/graphite/
sudo python manage.py syncdb

Note: For the first time execution, you will be prompted for creating a 'root' user

Run the graphite and carbon deamon: [(Centralized: root beacon)]

cd /opt/graphite/
python bin/carbon-cache.py start
nohup /opt/graphite/bin/run-graphite-devel-server.py /opt/graphite &

2.5 Software Invocation

Once all necessary software has been installed, please follow instructions as described below:

On Root Beacons in the Centralized Orchestration Case -

Software invocation on: [(Centralized: node beacon)]

Edit NodeScheduler/etc/node.conf to configure the node scheduler, and go to 'Datagen/certs' run and type

chmod +x createSSL.sh
./createSSL.sh

Then go to the 'Datagen' folder and type

perl node_scheduler.pl

On Node Beacons in the Centralized Orchestration Case -

Software invocation on: [(Centralized: root beacon)]

Edit NodeScheduler/etc/root.conf to configure the root scheduler, and go to "Collector/" and type

perl collector.pl

Next, go to "RootScheduler/"

perl action_script.pl

On Node Beacons in the Distributed Orchestration Case -

Software invocation on: [(Distributed: node beacon)]

Edit Distributed/etc/node.conf to configure the node scheduler, and go to Distributed/Scheduler/ and type

perl node_scheduler.pl