wiki:OnTime-Installv1

Version 10 (modified by Prasad Calyam, 9 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 rpm --import http://software.internet2.edu/rpms/RPM-GPG-KEY-Internet2 
wget http://software.internet2.edu/Internet2-repo-0.1-2.noarch.rpm
sudo rpm -ivh Internet2-repo-0.1-2.noarch.rpm
sudo yum install perl-CPAN iperf ruby bwctl-server

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
conf urllist push ftp://cpan.uchicago.edu/pub/CPAN/
conf commit
install YAML
install Sys::HostIP
install IO::Socket
force install Net::SSLeay
install IO::Socket::SSL
install Log::Log4perl
install Config::Natural
install Math::Random
exit

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

sudo yum install mysql-server mysql-devel
sudo /sbin/service mysqld start
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

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

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

sudo yum install Django mod_python python-memcached Twisted MySQL-python
sudo python setup.py install

Graphite Configuration

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

sudo mv /opt/graphite/webapp/graphite/local_settings.py.example /opt/graphite/webapp/graphite/local_settings.py
sudo vim /opt/graphite/webapp/graphite/local_settings.py 

Uncomment and change TIME_ZONE='US/Eastern', also Uncomment MEMCACHE_HOSTS

To initialize the Graphite database, type

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

Create the root user if asked. Then start the Graphite server -

sudo chmod -R 777 /opt/graphite/storage
screen
/opt/graphite/bin/run-graphite-devel-server.py /opt/graphite
Ctrl-a-d (key press sequence)

Move the Carbon folder to opt
Software configuration on: [(Centralized: root beacon)]

sudo cp -r carbon-0.9.6/* /opt/graphite/

Go to /opt/graphite. Install and config Carbon by typing

sudo python setup.py install
sudo chmod -R 777 /opt/graphite/storage
sudo mv /opt/graphite/conf/carbon.conf.example /opt/graphite/conf/carbon.conf
sudo mv /opt/graphite/conf/storage-schemas.conf.example /opt/graphite/conf/storage-schemas.conf
sudo vim /opt/graphite/conf/storage-schemas.conf

Change retentions to: retentions = 600:259200

Run Carbon by typing -

python bin/carbon-cache.py --debug start

2.5 Software Invocation

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

On Node Beacons

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

Edit NodeScheduler/etc/node.conf 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 Root Beacon

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

Edit NodeScheduler/etc/root.conf 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)]

Go to Distributed/Scheduler/ and type

perl node_scheduler.pl