Version 11 (modified by 13 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:
- Operating System: Fedora
- Software: MySQL, Graphite, Perl, Python, Iperf, Ruby, Bwctl-server, Bwctl-client, Twisted
- 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' folder
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