Changes between Version 13 and Version 14 of Internal/BuildingStandaloneOrbit


Ignore:
Timestamp:
Jul 31, 2006, 11:07:22 PM (18 years ago)
Author:
Surya Satyavolu
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Internal/BuildingStandaloneOrbit

    v13 v14  
    99[[Image(9nodesandbox.png)]]
    1010
    11 ''We need to add some more text here, but right now we are just collecting various bits and pieces and I hope somebody will do some Wiki gardening when it gets unwieldy.''
    12 
    13 == Support Services ==
    14 
    15  * [wiki:HowTo/Building/PXE PXE] -- Bootstrap Orbit nodes
    16 
    17 == Developer Notes ==
    18 
    19  * [wiki:HowTo/Building/Notes/PXE Comments on the PXE Makefile]
    20  * [wiki:Orbit/Design/Notes/cm2cmcCommunication CM <-> CMC communication protocol]
    21 
    22 
    23 
    24 
     11The following naming convention and IP addressing have been configured.
     12
     13'''Services''': The machine “services” station is used to host various services such as DHCP, DNS, NTP, NFS, mysql, OML, repository etc. We have different aliases for the management host to segregate the services that it hosts
     14
     15||'''Station (services.orbit-lab.org)'''||'''IP Address (on eth1)'''||'''IP address (on eth0)'''||
     16||dhcp.orbit-lab.org ||10.10.0.9 (fixed) || 10.1.200.2 (fixed)||
     17||ntp.orbit-lab.org||||||
     18||idb1.orbit-lab.org||||||
     19||edb1.orbit-lab.org||||||
     20||repository1.orbit-lab.org||||||
     21||repository2.orbit-lab.org||||||
     22
     23'''Console''': The machine ''console'' is used to run the experiments as well as host the CMC service. Hence, console machine has nodeHandler and CMC in order to support the above functionality. The aliases for this machine are
     24
     25||'''Station (console.orbit-lab.org)'''||'''IP Address (on eth1)'''||'''IP address (on eth0)'''||
     26||cmc.orbit-lab.org ||10.10.0.21 (fixed) || 10.1.200.1 (fixed)||
     27||console.orbit-lab.org||||||
     28||consolec.orbit-lab.org||||||
     29
     30
     31= Installation Common to both machines =
     32
     33The following procedure applies to both services and console. On a clean machine,
     34 * install debian using CD
     35   * Download the net-install ISO image (about 104 MB) from [http://cdimage.debian.org/pub/cdimage-testing/sarge_d-i/i386/rc3/sarge-i386-netinst.iso here]
     36   * Burn this onto a CD, make sure that you burn it as an ISO image and not a file; otherwise the CD will not be bootable. You can use the shareware utility UltraISO (http://www.ezbsystems.com/ultraiso/) to burn this image onto a CD
     37   * Use this CD to boot the new machine up (make sure that you have the correct boot sequence in the BIOS settings)
     38   * Ensure that you have a network connection to outside
     39   * At the boot prompt: type linux26 to instruct the installer to use kernel 2.6 for the installation. This will ensure that most of the hardware (including serial ATA harddisks) will be recognized without any problems.
     40   * Follow instructions on the installer to proceed with the installation
     41
     42 * Run apt-get install kernel-image-2.6.10-1-i686
     43    * In order to do this make sure you have the debian sources pointing to unstable in the /etc/apt/sources.list file
     44 * Run update-grub
     45 * Reboot into 2.6.10
     46
     47Setting up the networking for these machines can be done as follows
     48 * Edit /etc/network/interfaces
     49
     50For services.orbit-lab.org
     51{{{
     52auto lo eth0 eth1
     53
     54iface lo inet loopback
     55
     56iface eth0 inet static
     57        address 10.1.200.2
     58        netmask 255.255.0.0
     59
     60iface eth1 inet static
     61address 10.10.0.9
     62     netmask 255.255.0.0
     63
     64}}}
     65For Console.orbit-lab.org 
     66{{{
     67auto lo eth0 eth1
     68
     69iface lo inet loopback
     70
     71iface eth0 inet static
     72        address 10.1.200.1
     73        netmask 255.255.0.0
     74
     75iface eth1 inet static
     76address 10.10.0.21
     77     netmask 255.255.0.0
     78}}}
     79
     80== Software and Services ==
     81The services and software running on each of the two servers is listed below. Configuration of individual services is explained in detail as well
     82||'''(services.orbit-lab.org)'''||'''(console.orbit-lab.org)'''||
     83|| DHCP || CMC ||
     84|| DNS || NodeHandler ||
     85|| NTP ||  ||
     86|| TFTP ||  ||
     87|| PXE ||  ||
     88|| Frisbee ||  ||
     89|| NFS ||  ||
     90|| Apt ||  ||
     91|| Mysql ||  ||
     92|| OML collection server ||  ||
     93|| Apache ||  ||
     94
     95=== DHCP ===
     96'''Purpose''': This software runs a DHCP server that assigns IP addresses to clients on demand
     97
     98'''Installation and Configuration: ''':
     99 * apt-get install dhcp3-server : select eth1 as interface
     100 * Edit /etc/dhcp3/dhcpd.conf
     101 * Make sure that /etc/default/dhcp3-server has eth1 as interface
     102 * First line is use-host-decl-names on which means DNS has actual IP mappings, DHCP just gives out hostnames. This means only IP to name updates need to be done only at DNS.
     103
     104'''To Run: ''':
     105/etc/init.d/dhcp3-server start  -- errors go to /var/log/daemon.log
     106
     107'''Configuration ''':
     108{{{
     109#############dhcpd.conf################
     110ddns-update-style interim;
     111authoritative;
     112use-host-decl-names on;
     113
     114allow booting;
     115allow bootp;
     116
     117default-lease-time 259200;
     118max-lease-time 259200;
     119
     120filename "/pxelinux.bin";
     121option vendor-encapsulated-options 09:0f:80:00:0c:4e:65:74:77:6f:72:6b:20:62:6f:6f:74:0a:07:00:50:72:6f:6d:70:74:06:01:02:08:03:80:00:00:47:04:80:00:00:00:ff;
     122option option-150 code 150 = text;
     123
     124#
     125#Grid Control
     126subnet 10.10.0.0 netmask 255.255.0.0 {
     127        range  10.10.250.1 10.10.250.255;
     128        option domain-name "orbit-lab.org";
     129        ddns-updates off;
     130        ddns-domainname "orbit-lab.org";
     131        ddns-rev-domainname "in-addr.arpa";
     132        option domain-name-servers 10.10.0.9;
     133        next-server 10.10.0.9;
     134        option routers 10.10.0.1;
     135
     136        host services.orbit-lab.org {hardware ethernet 00:40:63:DA:12:0E; fixed-address services.orbit-lab.org ;}
     137        #replace the MAC addresses here with those of the new machine
     138        host console.orbit-lab.org  {hardware ethernet 00:40:63:C9:F6:D5; fixed-address console.orbit-lab.org ;}
     139       
     140        #Nodes 10.10.x.y
     141        group {
     142        host node1-1.orbit-lab.org {hardware ethernet 00:0F:EA:4C:A6:B7; fixed-address node1-1;}
     143        host node1-2.orbit-lab.org {hardware ethernet 00:0F:EA:4A:8B:5B; fixed-address node1-2;}
     144        host node1-3.orbit-lab.org {hardware ethernet 00:0F:EA:47:6C:87; fixed-address node1-3;}
     145        host node2-1.orbit-lab.org {hardware ethernet 00:0F:EA:4C:A6:C1; fixed-address node2-1;}
     146        host node2-2.orbit-lab.org {hardware ethernet 00:0F:EA:4C:B7:5D; fixed-address node2-2;}
     147        host node2-3.orbit-lab.org {hardware ethernet 00:0F:EA:4B:FE:C7; fixed-address node2-3;}
     148        host node3-1.orbit-lab.org {hardware ethernet 00:0F:EA:4A:8A:F7; fixed-address node3-1;}
     149        host node3-2.orbit-lab.org {hardware ethernet 00:0F:EA:4C:B7:53; fixed-address node3-2;}
     150        host node3-3.orbit-lab.org {hardware ethernet 00:0F:EA:4A:8B:63; fixed-address node3-3;}
     151        }
     152}
     153}}}
     154
     155 === DNS ===
     156'''Purpose''': Services.orbit-lab.org” hosts the primary DNS service for the zone orbit-lab.org. The DNS server is the standard BIND9 software packaged with Linux
     157
     158
     159'''Installation and Configuration: ''':
     160 * apt-get install bind
     161 * You need to create the following files under /etc/bind
     162   * Named.conf : Configuration for DNS as shown below
     163   * Orbit.zone: Forward lookup
     164   * Zone.orbit: Reverse lookup
     165   * In named.conf, edit destination directory to /etc/bind
     166 * Make sure there are dots at the end of the domains
     167 * Add the highlighted blue line to /etc/hosts file as follows
     168 ||127.0.0.1    || localhost||
     169|| 10.10.0.9    || services.orbit-lab.org       ||      services ||
     170
     171 '''To Run: ''':
     172/etc/init.d/bind start  -- errors go to /var/log/daemon.log
     173
     174''' Configuration '''
     175{{{
     176########################/etc/bind/named.conf##############################
     177options {
     178        directory "/etc/bind";
     179        /*
     180         * If there is a firewall between you and nameservers you want
     181         * to talk to, you might need to uncomment the query-source
     182         * directive below.  Previous versions of BIND always asked
     183         * questions using port 53, but BIND 8.1 uses an unprivileged
     184         * port by default.
     185         */
     186};
     187
     188Controls {
     189       inet 127.0.0.1 port 953
     190       allow { 127.0.0.1; };
     191};
     192
     193// a caching only nameserver config
     194 
     195zone "." IN {
     196        type hint;
     197        file "named.ca";
     198};
     199
     200zone "localhost" IN {
     201        type master;
     202        file "localhost.zone";
     203};
     204
     205
     206zone "orbit-lab.org" IN {
     207        type master;
     208        file "orbit.zone";
     209       
     210};
     211
     212zone "in-addr.arpa" IN {
     213        type master;
     214        file "zone.orbit";
     215       
     216};
     217
     218zone "0.0.127.in-addr.arpa" IN {
     219        type master;
     220        file "named.local";
     221};
     222#####EOF#########
     223
     224###############/etc/bind/orbit.zone#################
     225$ORIGIN .
     226$TTL 3600       ; 1 hour
     227orbit-lab.org   IN SOA  orbit-lab.org services.orbit-lab.org (
     228                                2005041903 ; serial
     229                                3600       ; refresh (1 hour)
     230                                600        ; retry (10 minutes)
     231                                10000       ; expire (2 hours)
     232                                3600       ; minimum (1 hour)
     233                                )
     234        IN      NS      services.orbit-lab.org.
     235                               
     236$ORIGIN orbit-lab.org.
     237$TTL 129600     ; 1 day 12 hours
     238node1-1         A       10.10.1.1
     239node1-2         A       10.10.1.2
     240node1-3         A       10.10.1.3
     241node2-1         A       10.10.2.1
     242node2-2         A       10.10.2.2
     243node2-3         A       10.10.2.3
     244node3-1         A       10.10.3.1
     245node3-2         A       10.10.3.2
     246node3-3         A       10.10.3.3
     247services                A       10.10.0.9
     248console         A       10.10.0.21
     249dhcp            CNAME   services.orbit-lab.org.
     250cmc             CNAME   console.orbit-lab.org.
     251consolec        CNAME   console.orbit-lab.org.
     252frisbee CNAME   services.orbit-lab.org.
     253pxe             CNAME   services.orbit-lab.org.
     254oml             CNAME   services.orbit-lab.org.
     255repository      CNAME   services.orbit-lab.org.
     256repository1     CNAME   services.orbit-lab.org.
     257repository2     CNAME   services.orbit-lab.org.
     258ntp             CNAME   services.orbit-lab.org.
     259loghost CNAME   console.orbit-lab.org.
     260idb1            CNAME   services.orbit-lab.org.
     261edb1            CNAME   services.orbit-lab.org.
     262#####EOF#########
     263
     264######################/etc/bind/zone.orbit##################
     265
     266$ORIGIN .
     267$TTL 3600       ; 1 hour
     268in-addr.arpa            IN SOA  orbit-lab.org. services.orbit-lab.org. (
     269                                33354      ; serial
     270                                28800      ; refresh (8 hours)
     271                                900        ; retry (15 minutes)
     272                                604800     ; expire (1 week)
     273                                86400      ; minimum (1 day)
     274                                )
     275        IN              NS      services.orbit-lab.org.
     276$ORIGIN in-addr.arpa.
     277$ORIGIN 10.in-addr.arpa.
     278$ORIGIN 0.10.10.in-addr.arpa.
     279$TTL 129600     ; 1 day 12 hours
     2809       IN      PTR             services.orbit-lab.org.
     28121      IN      PTR             console.orbit-lab.org.
     282
     283$ORIGIN 1.10.10.in-addr.arpa.
     2841       IN      PTR             node1-1.orbit-lab.org.
     2852       IN      PTR             node1-2.orbit-lab.org.
     2863       IN      PTR             node1-3.orbit-lab.org.
     287
     288$ORIGIN 2.10.10.in-addr.arpa.
     2891       IN      PTR             node2-1.orbit-lab.org.
     2902       IN      PTR             node2-2.orbit-lab.org.
     2913       IN      PTR             node2-3.orbit-lab.org.
     292
     293$ORIGIN 3.10.10.in-addr.arpa.
     2941       IN      PTR             node3-1.orbit-lab.org.
     2952       IN      PTR             node3-2.orbit-lab.org.
     2963       IN      PTR             node3-3.orbit-lab.org.
     297
     298#####EOF#########
     299
     300}}}
     301=== Apache Web Server ===
     302'''Purpose:'''
     303Apache server is required for maintaining the ORBIT local repository for debian packages and also to view the results of the experiment
     304
     305'''Installation:'''
     306apt-get install apache2
     307Note that no additional configuration is needed for apache
     308
     309'''To run:'''
     310 *  Make sure that /var/www/cgi-bin points to /usr/lib/cgi-bin (or create a soft link if one does not exist using cd /var/www/; ln –s /usr/lib/cgi-bin cgi-bin)
     311
     312'''To run'''
     313/etc/init.d/apache2 start -- errors go to /var/log/daemon.log
     314
     315Make sure that you have latest version of libgd and the perl modules for GD available. This is needed to view the results of the experiment. To do that:
     316
     317 * wget http://www.boutell.com/gd/http/gd-2.0.33.tar.gz
     318 * tar xfzv gd-2.0.33.tar.gz; cd gd-2.0.33;
     319 * ./configure –prefix=/usr ; make ; make install
     320Once this is done, download the latest GD perl module that depends on the previously installed libgd library using the following commands
     321
     322 * wget http://search.cpan.org/CPAN/authors/id/L/LD/LDS/GD-2.19.tar.gz
     323 * tar xfzv GD-2.19.tar.gz; cd gd-2.19;
     324 * perl Makefile.PL; make; make install
     325
     326The above two steps should install the GD library and perl modules correctly.
     327
     328=== Repository ===
     329'''Purpose:'''
     330This serves as the debian package repository for local ORBIT packages (such as OML, OTG, Libmac, nodeAgent etc). It uses apache services to fetch and distribute debian packages. For this service, it is sufficient to install just the ORBIT packages. There is no need to mirror the entire debian repository which can be easily accessed by syncing with the external debian repository
     331
     332'''Configuration:'''
     333 * mkdir /var/www/winlab
     334 * chmod 755 /var/www/winlab
     335 * mkdir /var/www/winlab/binary
     336Under the above directory, make sure you have the following packages
     337 * Frisbee_1.0.0-1.i386.deb  = This has the Frisbeed, Frisbee client
     338 * Gridservices_3.0.0-1_all.deb = This has Frisbee and pxe webservices (http wrapper to initialize frisbeed while frisbeeing)
     339 * Oml-client_2.0_0_i386.deb = oml client
     340 * Otg_1.1.0-1_i386.deb = traffic generator
     341 * OML_server, CMC will be integrated into the gridservices packages soon
     342
     343Edit the /etc/apt/sources.list file as follows
     344{{{
     345deb http://repository1.orbit-lab.org/winlab/ binary/
     346
     347deb http://http.us.debian.org/debian/ testing main
     348 deb-src http://http.us.debian.org/debian/ testing main
     349deb http://security.debian.org/ stable/updates main
     350}}}
     351
     352=== NTP ===
     353
     354'''Purpose:'''
     355 All the machines synchronize their time using the time server as the reference.
     356
     357'''Installation and Configuration:'''
     358 * apt-get install ntp-server
     359 * Edit /etc/ntpd.conf
     360   * Point the server to pool.ntp.org
     361
     362'''To run:'''
     363 * /etc/init.d/ntpd start -- errors go to /var/log/daemon.log
     364
     365=== TFTP Server ===
     366'''Purpose:'''
     367TFTP is needed to install PXE images whenever you need to install an image onto the node (using Frisbee). It is also used to load a memory based image that can be used to fetch the current image of the node into the repository
     368
     369'''Installation and Configuration:'''
     370 * apt-get install atftpd
     371
     372There are two options here: either to run atftpd as a standalone daemon or run it under inetd. For heavy duty tftp services, you can choose to run is as a standalone daemon.
     373For our installation, we choose the standalone daemon.
     374
     375 * Point the tftp directory to /tftpboot
     376 * Copy /tftpboot directory from repository2.orbit-lab.org
     377
     378In case of problems, make sure that lo interface is up
     379
     380=== NFS Service ===
     381
     382'''Purpose:'''
     383This service is used to remotely mount directories on the nodes while fetching their image using imagezip utility. Also, Frisbee service makes use of this directory to install images onto nodes.
     384
     385'''Installation and Configuration:'''
     386
     387 * apt-get install nfs-kernel-server
     388
     389 * Edit the /etc/exports file as follows
     390Probably should be sync here
     391
     392'''To run:'''
     393 * /etc/init.d/nfs-kernel-server start -- errors go to /var/log/daemon.log
     394
     395=== Mysql Server ===
     396
     397'''Purpose:'''
     398This service is used to store the results of the experiments conducted on ORBIT
     399
     400''' Installation and Configuration:'''
     401 * apt-get install mysql-server-4.1
     402 * Edit /etc/mysql/my.cnf and replace bind-address from 127.0.0.1 to 10.10.0.9
     403type mysql  and at the prompt, enter the following
     404
     405 * Replace the password by an appropriate one. Basically, this creates a new account called orbit with the password specified and allows access to mysql databases from localhost and any other machine on the network.
     406
     407'''To run:'''
     408 * /etc/init.d/mysql start -- errors go to /var/log/mysql.log
     409
     410=== OML Server (Collection Server) ===
     411'''Purpose:'''
     412 This service is used to collect the measurements of the experiments at runtime from the nodes and store them into the mysql database.
     413
     414''' Installation and Configuration:'''
     415 * Apt-get install tcl8.4
     416 * Apt-get install mysqltcl
     417 * Install libghthash-0.5.3 from source and point /etc/ld.so.conf to /usr/local/lib
     418 * Copy /etc/init.d/collectionwebService2.0  from idb1
     419 * Copy /opt/nodeAgent/bin/ from idb1
     420 * Copy /opt/nodeAgent/lib/ from idb1
     421 * Copy /opt/oml_server/bin/collection_server from idb1
     422 * Copy /usr/local/lib/oml from idb1
     423
     424'''To run:'''
     425 * /etc/init.d/collectionWebService2.0 start -- errors go to /var/log/daemon.log
     426
     427Note that that will be packaged soon as a complete deb package with all dependency checks
     428
     429=== Gridservices (PXE and Frisbee) ===
     430
     431'''Purpose:'''
     432 This service is for fetching and installing images from and to the nodes and used the Frisbee utility from University of Utah to distribute the image in the form of chunks using multicast.
     433
     434'''Installation and Configuration:'''
     435 * Apt-get install gridservices
     436 * Apt-get install frisbee
     437 * /opt/gridservices/services/frisbee.rb has 10.10.0.40 hardcoded for Frisbee server. Make sure you change that to 10.10.0.9 which is our Frisbee server
     438 * Frisbeed installs under /usr/sbin when you apt-get it, however /opt/gridservices/services/Frisbee.rb points to /opt/Frisbee/bin .Make sure , you change that or create a soft link from /opt/frisbee/bin/frisbee to /usr/sbin/frisbee
     439
     440'''To run:'''
     441/etc/init.d/gridservices start -- errors go to /var/log/gridservices.log
     442
     443=== CMC (Runs on console.orbit-lab.org) ===
     444'''Purpose:'''
     445CMC service talks to the individual Chassis Managers on the nodes and can be used to remotely power on, power off nodes, reset them and also provided access serial console of the nodes to the users. This is done using a http interface (Make sure that you do not run this service and apache on the same machine, since they will both need port 80)
     446
     447'''Installation and Configuration:'''
     448 * apt-get install libmysqlclient12
     449 * apt-get install libx11-6
     450 * Make sure that the interface eth0  is set to 10.1.200.1 netmask 255.255.0.0
     451 * Copy /usr/local/sbin/cmc on to local machine
     452 * Copy /etc/init.d/cmc
     453
     454'''To run:'''
     455 * /etc/init.d/cmc start
     456
     457Note that that will be packaged soon as a complete deb package with all dependency checks
     458
     459=== Node Handler (runs on console.orbit-lab.org) ===
     460
     461'''Purpose:'''
     462NodeHandler is used to run the experiments from the console using reliable multicast to disseminate commands to the nodes. It also initializes measurement collection appropriately. It primarily uses ruby scripts to do the same. 
     463
     464'''Installation and Configuration:'''
     465Make sure that you apt-get install the following packages
     466 * liblog4r-ruby  1.0.5-3       
     467 * librexml-ruby  3.1.2.1+ruby1.
     468 * libruby1.8     1.8.2-3       
     469 * libwebrick-rub 1.3.1+ruby1.8.
     470 * ruby           1.8.2-1       
     471 * ruby1.8        1.8.2-3       
     472Copy /opt/nodeAgent3 from console.grid.orbit-lab.org to this machine
     473
     474Note that that will be packaged soon as a complete deb package with all dependency checks
     475
     476== Switch Configuration ==
     477 
     478 * Partition switch into two VLAN’s
     479 * 1st 12 ports for control, next 12 for CM
     480
     481== Useful Tips ==
     482 * /etc/init.d/ifupdown should have ifup –a so that all the interfaces are up at system boot
     483 * To bring up all the services automatically after a reboot, use sysv-rc-conf utility
     484 * To have modules load at boot time (put them in /etc/modules)
     485 * Use tzconfig to change your time zone if required
     486
     487
     488
     489
     490