Version 21 (modified by 14 years ago) (diff) | ,
---|
OnTimeMeasure-GENI Installation Document
Prasad Calyam, Kunpeng Zhu
Original: May 31, 2010
Revised: July 16, 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 geographically distributed experiment nodes.
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:
- Operating System: Fedora
- Pre-requisite Software: MySQL, Graphite, Perl, Python, Iperf, Ruby, Bwctl-server, Bwctl-client, Python_Twisted, Python_Piddle, perl-CPAN
- 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.
- Open ports: For RootBeacon server: MySQL TCP/3306, Graphite TCP/2003 and TCP/17280, Collector TCP/7777, HTTP TCP/17290; For NodeBeacon server: BWCTL TCP/4823, Nodescheduler TCP/17249, HTTP TCP/17290
- 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.2"> <!-- 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
createsliver.py –n <slice name> <rspec file>
- 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.tar.gz
- RootBeacon.tar.gz
- README.txt
Next, login using SSH to each of the servers, copy the appropriate tar files over, and run the following commands to setup the measurement instance environment:
Centralized/Distributed 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> o conf urllist push ftp://cpan.uchicago.edu/pub/CPAN/ cpan> o conf prerequisites_policy follow cpan> o conf commit cpan> exit chmod +x ontime_perlmodule_install.sh ./ontime_perlmodule_install.sh
MySQL Initialization
mysqladmin -u root password '<new-password>'
Graphite and Twisted Installation
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> o conf urllist push ftp://cpan.uchicago.edu/pub/CPAN/ cpan> o conf prerequisites_policy follow cpan> o conf commit cpan> 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'@'%'; exit
Note 1: Please use the <collector password> provided as part of the Slice information at Step 2 in the Researcher Web-portal.
Note 2: 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
screen cd /opt/graphite/ python bin/carbon-cache.py start sudo chmod -R 777 /opt/graphite/storage /opt/graphite/bin/run-graphite-devel-server.py /opt/graphite
Then open <root_beacon_ip_address>:8080 in browser. If no error is reported, press '<CTRL>+a, d' sequence in the SSH window to keep the service running in the background.
Root Beacon invocation options configuration
cd RootBeacon/InstallScript perl config_wizard.pl
Follow the steps as directed by the wizard script.
On a Node Beacon Server:
Node Beacon invocation options configuration
cd NodeBeacon/InstallScript perl config_wizard.pl
Follow the steps as directed by the wizard script.
Distributed Case:
On a Node Beacon Server:
NTP Configuration
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
Restart BWCTL:
sudo /etc/init.d/bwctld restart
Note: For more detailed instructions to configure NTP and BWCTL, please refer to the BWCTL Tool website. (http://www.internet2.edu/performance/bwctl/)
Node Beacon invocation options configuration
cd NodeBeacon/InstallScript perl config_wizard.pl
Follow the steps as directed by the wizard script.
2.6 Software Invocation
Centralized Case:
On the Root Beacon Server:
Go to "Collector/" and run
chmod +x ../AnalysisScripts/Plateau/plateau.exe chmod +x ../AnalysisScripts/Forecast/forecaster/add_forecast screen perl collector.pl
If no error is reported, press '<CTRL>+a, c' sequence to open a new blank command window. Then, go to "../RootScheduler/"
perl file_server.pl
If no error is reported, press '<CTRL>+a, c' sequence to open a new blank command window.
perl action_script.pl
If no error is reported, press '<CTRL>+a, d' sequence in the SSH window to keep the service running in the background.
On a Node Beacon Server:
Go to 'Datagen/certs' run
chmod +x createSSL.sh ./createSSL.sh cd .. screen perl file_server.pl
If no error is reported, press '<CTRL>+a, c' sequence to open a new blank command window.
perl node_scheduler.pl
If no error is reported, press '<CTRL>+a, d' sequence in the SSH window to keep the service running in the background.
Distributed Case:
On a Node Beacon Server:
Go to 'Datagen/' and run
screen perl file_server.pl
If no error is reported, press '<CTRL>+a, c' sequence to open a new blank command window.
Note:Centralize and distributed share the same file server script. If you run both centralized and distributed on the same machine, you only need to run the file_server.pl once.
perl dist_scheduler.pl
If no error is reported, press '<CTRL>+a, d' sequence in the SSH window to keep the service running in the background.