wiki:OnTime-Installv1

Version 16 (modified by Prasad Calyam, 9 years ago) (diff)

--

OnTimeMeasure-GENI Installation Document

Prasad Calyam, Kunpeng Zhu
May 31, 2010

Software License: 'GENI Project License (GPL)'

1. Getting Started

This document describes the installation, configuration and usage of OnTimeMeasure-v1.0, which 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.

Before proceeding further, we highly recommend reading the Early Experimenter Tutorial.

2. OnTimeMeasure Installation:

2.1 Requirements

The OnTimeMeasure software package has the following requirements:

  1. Operating System: Fedora
  1. Pre-requisite Software: MySQL, Graphite, Perl, Python, Iperf, Ruby, Bwctl-server, Bwctl-client, Python_Twisted, Python_Piddle, perl-CPAN
  1. Perl Modules: Config::Natural, POSIX, Sys::HostIP, DBI, IO::SOCKET::SSL, Log::Log4perl:Net::SSLeay, Math::Random, YAML

Note: The Pre-requisite Software and Perl Modules installation is handled by the scripts delivered in the OnTimeMeasure-v1.0 package. See following sections for details.

  1. Open ports: For RootBeacon server: MySQL TCP/3306, Graphite TCP/2003 and TCP/8080, Collector TCP/7777; For NodeBeacon server: BWCTL TCP/4823, Nodescheduler TCP/17249
  1. User Accounts: User must have registered accounts in the OnTimeMeasure Researcher Web-portal and Emulab Network Testbed

2.2 ProtoGENI Slice Creation and Configuration

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

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 'ProtoGENI Flash Interface'.

2.3 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.4 Software Installation

When all the slivers are "Ready", login to the OnTimeMeasure Researcher Web-portal and provide the Slice RSpec information before proceeding to install the measurement instance within the ProtoGENI slice.

Note: Slice RSpec should include reservation of any required measurement resources.

Once you have provided the RSpec information, you will have received download information about the OnTimeMeasure-v1.0.tar.gz software.
In case you have not received this information, please email - Prasad Calyam

Once you have downloaded the tar file, untar/unzip to see that OnTimeMeasure-v1.0.tar.gz contains:

  • NodeBeacon/Centralized.tar.gz
  • NodeBeacon/Distributed.tar.gz
  • RootBeacon/RootBeacon.tar.gz
  • README.txt

Next, login using SSH to each of the servers, copy the appropriate tar files over, untar them, and run the following commands to setup the measurement instance environment:

Centralized Case:

On the Root Beacon Server:

Software installation:

tar xzf RootBeacon.tar.gz
cd RootBeacon/InstallScript
chmod +x ontime_software_install.sh
./ontime_software_install.sh

Perl CPAN Module Installation

The Comprehensive Perl Archive Network (CPAN) tools is used to install the Perl modules listed in the System Requirement section and is installed by the ontime_software_install.sh script.

Note: The CPAN configuration must point to Internet2 Perl CPAN repository

$ sudo perl -MCPAN -e shell 
 	cpan[1]>  o conf urllist push ftp://cpan.uchicago.edu/pub/CPAN/ 
cpan[1]>  o conf prerequisites_policy follow 
cpan[1]>  o conf commit 
cpan[1]>  exit
$ chmod +x ontime_perlmodule_install.sh 
$ ./ontime_perlmodule_install.sh 

MySQL Initialization

$ mysqladmin -u root password 'new-password'

Graphite and Twisted Installation

cd RootBeacon/InstallScript
chmod +x ontime_graphite_install.sh
sudo ./ontime_graphite_install.sh

On a Node Beacon Server:

Software installation:

tar xzf NodeBeacon.tar.gz
cd NodeBeacon/InstallScript
chmod +x ontime_software_install.sh
./ontime_software_install.sh

Perl CPAN Module Installation

The Comprehensive Perl Archive Network (CPAN) tools is used to install the Perl modules listed in the System Requirement section and is installed by the ontime_software_install.sh script.

Note: The CPAN configuration must point to Internet2 Perl CPAN repository

$ sudo perl -MCPAN -e shell 
 	cpan[1]>  o conf urllist push ftp://cpan.uchicago.edu/pub/CPAN/ 
cpan[1]>  o conf prerequisites_policy follow 
cpan[1]>  o conf commit 
cpan[1]>  exit
$ chmod +x ontime_perlmodule_install.sh 
$ ./ontime_perlmodule_install.sh 

Distributed Case:

On a Node Beacon Server:

Software installation:

tar xzf Distributed.tar.gz
cd Distributed/InstallScript
chmod +x ontime_software_install.sh
./ontime_software_install.sh

Perl CPAN Module Installation

The Comprehensive Perl Archive Network (CPAN) tools is used to install the Perl modules listed in the System Requirement section and is installed by the ontime_software_install.sh script.

Note: The CPAN configuration must point to Internet2 Perl CPAN repository

$ sudo perl -MCPAN -e shell 
 	cpan[1]>  o conf urllist push ftp://cpan.uchicago.edu/pub/CPAN/ 
cpan[1]>  o conf prerequisites_policy follow 
cpan[1]>  o conf commit 
cpan[1]>  exit
$ chmod +x ontime_perlmodule_install.sh 
$ ./ontime_perlmodule_install.sh 

2.5 Software Configuration

Centralized Case:

On the Root Beacon Server:

MySQL configuration

cd RootBeacon/InstallScript
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'@'%';

Note: If remote access to MySQL on the Root Beacon is disabled, please open the port TCP/3306 and follow the tutorial at http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html

Graphite Configuration

Initialize the graphite:

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 daemons

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

SCP configuration

ssh-keygen -t rsa
cat .ssh/id_rsa.pub | ssh uploader@ontime.oar.net "cat >> .ssh/authorized_keys"

Use the default settings and the password for user uploader is 'uploader'

On a Node Beacon Server:

SCP configuration

ssh-keygen -t rsa
cat .ssh/id_rsa.pub | ssh uploader@ontime.oar.net "cat >> .ssh/authorized_keys"

Use the default settings and the password for user uploader is 'uploader'

Distributed Case:

On a Node Beacon Server:

NTP Configuration

Software configuration on

$ 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

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

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

allow_unsync
sync_fuzz 5

Edit the BWCTL limits: /etc/bwctld/bwctld.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/)

SCP configuration

ssh-keygen -t rsa
cat .ssh/id_rsa.pub | ssh uploader@ontime.oar.net "cat >> .ssh/authorized_keys"

Use the default settings and the password for user uploader is 'uploader'

2.6 Software Invocation

Centralized Case:

On the Root Beacon Server:

Edit RootBeacon/etc/root.conf and measurement.conf as guided by in-file comments, and then go to "Collector/" and run

nohup perl collector.pl &

Next, go to "RootScheduler/"

nohup perl action_script.pl &

On a Node Beacon Server:

Edit NodeBeacon/etc/node.conf and runtool.conf as guided by in-file comments, and then go to 'Datagen/certs' run

chmod +x createSSL.sh
./createSSL.sh
cd ..
nohup perl node_scheduler.pl &

Distributed Case:

On a Node Beacon Server:

Edit Distributed/etc/node.conf as guided by in-file comments, and then go to Distributed/Datagen/ and run

nohup perl node_scheduler.pl &