|
1
|
NOTE: Yellow Box only
|
|
2
|
- eth1 is interface located higher, above the two usb.
|
|
3
|
- eth1 is the one PXE enabled, however if PXE link is on eth0's address, node will still
|
|
4
|
boot PXE when the link is present. This is currently the case in our new install. Might
|
|
5
|
want to reverse dhcp.conf to reflect that at some stage...
|
|
6
|
(i.e. at the moment our eth0 on nodes have 192.168.1.10x addresses, and NA use eth0 for
|
|
7
|
control message, while PXE is enabled only on eth1.... what we should have is NA using
|
|
8
|
eth1 with PXE and IP 192.168.1.10x and eth0 having other such as 10.0.0.x for the fixed
|
|
9
|
experimental network)
|
|
10
|
|
|
11
|
|
|
12
|
FIRST THING:
|
|
13
|
- Install fresh Linux distribution on a server machine
|
|
14
|
and at least one experimental machines (here we used Ubuntu)
|
|
15
|
- The server machine will have the hostname 'theserver'
|
|
16
|
- The first experimental machine will have the hostname 'node001', etc...
|
|
17
|
|
|
18
|
- Remove annoying network-manager on 'theserver' and any 'node00X'
|
|
19
|
|
|
20
|
$ sudo apt-get remove network-manager
|
|
21
|
|
|
22
|
------------------ ------------------ -----------------
|
|
23
|
------------------ ------------------ -----------------
|
|
24
|
------------------ ------------------ -----------------
|
|
25
|
|
|
26
|
STEP 1 - Installation of Supporting Services on 'theserver'
|
|
27
|
|
|
28
|
|
|
29
|
|
|
30
|
------------------ Network and DHCP -----------------
|
|
31
|
|
|
32
|
- OPTIONAL: in this example, this machine is connected to the
|
|
33
|
outside world via its 'eth0' interface. This short step configures
|
|
34
|
this eth0 interface and is not necessary if this machine is only
|
|
35
|
connected to the MNet.
|
|
36
|
|
|
37
|
$ sudo vi /etc/network/interfaces
|
|
38
|
|
|
39
|
Add lines:
|
|
40
|
auto eth0
|
|
41
|
iface eth0 inet dhcp
|
|
42
|
|
|
43
|
$ sudo apt-get install resolvconf
|
|
44
|
$ sudo /etc/init.d/networking restart
|
|
45
|
|
|
46
|
- Configure IP address on MNet interface:
|
|
47
|
In this example, the machine is attached to MNet via eth1
|
|
48
|
and will have the IP 192.168.1.1 on the MNet 192.168.1.0
|
|
49
|
(also in this example, this machine is connected to the
|
|
50
|
outside world via another interface 'eth0' configured via
|
|
51
|
dhcp info from another server out of MNet)
|
|
52
|
|
|
53
|
$ sudo vi /etc/network/interfaces
|
|
54
|
|
|
55
|
Add lines:
|
|
56
|
auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
|
|
57
|
# This line should be commented if this machine
|
|
58
|
# is connected to the outside world via another
|
|
59
|
# interface, such as 'eth0' in our case
|
|
60
|
#gateway 192.168.1.1
|
|
61
|
|
|
62
|
- Restart networking service:
|
|
63
|
$ sudo /etc/init.d/networking restart
|
|
64
|
|
|
65
|
- Install DHCP server:
|
|
66
|
$ sudo apt-get install dhcp3-server
|
|
67
|
|
|
68
|
- Configure DHCP server to serve request on the MNet:
|
|
69
|
In this example the machine is attached to MNet via eth1
|
|
70
|
|
|
71
|
$ sudo vi /etc/default/dhcp3-server
|
|
72
|
|
|
73
|
Add lines:
|
|
74
|
INTERFACES="eth1"
|
|
75
|
|
|
76
|
- Configure DHCP server parameters:
|
|
77
|
$ sudo vi /etc/dhcp3/dhcpd.conf
|
|
78
|
|
|
79
|
Comment lines:
|
|
80
|
# option domain-name ...
|
|
81
|
# option domain-name-servers ...
|
|
82
|
|
|
83
|
Add lines:
|
|
84
|
# Optional: tell DHCP not to operate on any existing subnet
|
|
85
|
# you might have on the network attached to 'eth1'
|
|
86
|
subnet xxx.xxx.xxx.xxx netmask yyy.yyy.yyy.yyy { }
|
|
87
|
|
|
88
|
Add lines:
|
|
89
|
# These are the DHCP config parameter for
|
|
90
|
# the 192.168.1.0 subnet.
|
|
91
|
# This machine will also be the router, name server, and
|
|
92
|
# repository for PXE boot for that subnet.
|
|
93
|
# Experimental machines will be given IP incremental addresses
|
|
94
|
# starting with 192.168.1.101
|
|
95
|
#
|
|
96
|
subnet 192.168.1.0 netmask 255.255.255.0 {
|
|
97
|
range 192.168.1.100 192.168.1.250;
|
|
98
|
option domain-name-servers 192.168.1.1;
|
|
99
|
option domain-name "yourtestbed.yourdomain.com";
|
|
100
|
use-host-decl-names on;
|
|
101
|
option routers 192.168.1.1;
|
|
102
|
option broadcast-address 192.168.1.255;
|
|
103
|
filename "/pxelinux.0";
|
|
104
|
next-server 192.168.1.1;
|
|
105
|
|
|
106
|
# First experimental machine - 001
|
|
107
|
# Replace 'xx' with the MAC address of the network interface
|
|
108
|
# connected to the MNet on that machine
|
|
109
|
host node001 {
|
|
110
|
hardware ethernet xx:xx:xx:xx:xx:xx;
|
|
111
|
fixed-address 192.168.1.101;
|
|
112
|
}
|
|
113
|
|
|
114
|
etc....
|
|
115
|
}
|
|
116
|
|
|
117
|
- Restart the DHCP service:
|
|
118
|
$ sudo /etc/init.d/dhcp3-server restart
|
|
119
|
|
|
120
|
- Add hostnames in your '/etc/hosts'
|
|
121
|
$ sudo vi /etc/hosts
|
|
122
|
|
|
123
|
Add lines:
|
|
124
|
127.0.0.1 localhost
|
|
125
|
127.0.1.1 theserver.yourtestbed.yourdomain.com theserver
|
|
126
|
192.168.1.1 theserver.yourtestbed.yourdomain.com theserver
|
|
127
|
# Names for our Experimental nodes
|
|
128
|
192.168.1.101 node001.yourtestbed.yourdomain.com node001
|
|
129
|
etc...
|
|
130
|
|
|
131
|
- TEST:
|
|
132
|
Reboot your experimental machine node001 and check that it has the
|
|
133
|
correct IP, according to the config you entered in dhcpd.conf
|
|
134
|
|
|
135
|
We assume that node001 is the "at least one experimental machine" on
|
|
136
|
which you installed a fresh copy of ubuntu at the beginning of this
|
|
137
|
log book.
|
|
138
|
|
|
139
|
$ ping 192.168.1.101
|
|
140
|
$ ping node001
|
|
141
|
|
|
142
|
(if you have more experimental machine installed...)
|
|
143
|
$ ping 192.168.1.102
|
|
144
|
etc...
|
|
145
|
|
|
146
|
|
|
147
|
------------------ TFTP Server and PXE Boot -----------------
|
|
148
|
|
|
149
|
- install a TFTP server with support for RFC-1784 and RFC-2349, e.g. 'atftpd' or 'tftpd-hpa'
|
|
150
|
|
|
151
|
$ sudo apt-get install tftpd-hpa
|
|
152
|
|
|
153
|
- configure the TFTP server
|
|
154
|
|
|
155
|
$ sudo vi /etc/default/tftpd-hpa
|
|
156
|
|
|
157
|
Change lines:
|
|
158
|
RUN_DAEMONS="yes"
|
|
159
|
OPTIONS="-l -s -v /tftpboot"
|
|
160
|
|
|
161
|
- create "/tftpboot" directory
|
|
162
|
|
|
163
|
$ sudo mkdir /tftpboot
|
|
164
|
|
|
165
|
- start tftpd daemon
|
|
166
|
|
|
167
|
$ sudo /etc/init.d/tftpd-hpa start
|
|
168
|
|
|
169
|
- retrieve 'pxelinux.0' bootloader for your distribution
|
|
170
|
|
|
171
|
$ wget http://archive.ubuntu.com/ubuntu/dists/hardy/main/installer-i386/current/images/netboot/pxelinux.0
|
|
172
|
$ sudo mv pxelinux.0 /tftpboot
|
|
173
|
|
|
174
|
- create "/tftpboot/pxelinux.cfg" directory
|
|
175
|
|
|
176
|
$ sudo mkdir /tftpboot/pxelinux.cfg
|
|
177
|
|
|
178
|
- create your own Kernel and Disk image for PXE boot
|
|
179
|
|
|
180
|
SEE Appendix on HOW-TO create Kernel and Disk Image for PXE boot
|
|
181
|
|
|
182
|
- copy your Kernel and Disk Image to "/tftpboot"
|
|
183
|
|
|
184
|
$ sudo cp mykernel-pxe-2.6 /tftpboot
|
|
185
|
$ sudo cp myinitrd-pxe-2.6 /tftpboot
|
|
186
|
|
|
187
|
- create a PXE boot configuration file for this particular kernel+disk image
|
|
188
|
|
|
189
|
$ sudo vi /tftpboot/pxelinux.cfg/mypxeconfig
|
|
190
|
|
|
191
|
Add lines:
|
|
192
|
DEFAULT linux
|
|
193
|
LABEL linux
|
|
194
|
KERNEL mykernel-pxe-2.6
|
|
195
|
APPEND rw init=/sbin/init initrd=myinitrd-pxe-2.6 console=ttyS0,9600
|
|
196
|
DISPLAY message.txt
|
|
197
|
PROMPT 1
|
|
198
|
TIMEOUT 1
|
|
199
|
|
|
200
|
- create a default PXE boot configuration, where default boot = boot from local hard-drive:
|
|
201
|
|
|
202
|
$ sudo vi /tftpboot/pxelinux.cfg/default
|
|
203
|
|
|
204
|
Add lines:
|
|
205
|
DEFAULT harddrive
|
|
206
|
LABEL harddrive
|
|
207
|
localboot 0
|
|
208
|
|
|
209
|
- TEST:
|
|
210
|
Check that tftp daemon is running:
|
|
211
|
|
|
212
|
$ sudo ps ax | grep tftp
|
|
213
|
|
|
214
|
We will now try PXE boot for node001 which has IP 192.168.1.101.
|
|
215
|
|
|
216
|
We assume that node001 is the "at least one experimental machine" on
|
|
217
|
which you installed a fresh copy of ubuntu at the beginning of this
|
|
218
|
log book.
|
|
219
|
|
|
220
|
Create link with node001's IP address in '/tftpboot/pxelinux.cfg'
|
|
221
|
|
|
222
|
$ cd /tftpboot/pxelinux.cfg
|
|
223
|
$ sudo ln -s mypxeconfig C0A80165
|
|
224
|
|
|
225
|
Note: to PXE-boot a node with IP address XX, one has to create a symoblic
|
|
226
|
link in /tftpboot/pxelinux.cfg towards the PXE config file to boot from. The
|
|
227
|
name of this link should be the node's IP address in hexadecimal.
|
|
228
|
|
|
229
|
More info on PXE-boot at: http://syslinux.zytor.com/pxe.php
|
|
230
|
|
|
231
|
Reboot node001 and check that it effectively boots via PXE using the
|
|
232
|
kernel 'mykernel-pxe-2.6' and disk image 'myinitrd-pxe-2.6'
|
|
233
|
(e.g. plug a display and visually check, or a console, etc...)
|
|
234
|
|
|
235
|
Then remove the link in '/tftpboot/pxelinux.cfg'
|
|
236
|
|
|
237
|
$ sudo rm -f C0A80165
|
|
238
|
|
|
239
|
Reboot node001 and check that it effectively boots from its local
|
|
240
|
hard-drive
|
|
241
|
|
|
242
|
|
|
243
|
------------------ MySQL Server and Berkeley DB -----------------
|
|
244
|
|
|
245
|
- Install MySQL server:
|
|
246
|
|
|
247
|
$ sudo apt-get install mysql-server
|
|
248
|
|
|
249
|
(after install, apt-get goes to configure the server, nothing special
|
|
250
|
should be done there apart from setting a passwd for the 'root' mysql user)
|
|
251
|
|
|
252
|
- Create the 'orbit' account in mysql:
|
|
253
|
|
|
254
|
$ mysql -u root -p
|
|
255
|
|
|
256
|
Inside mysql:
|
|
257
|
> use mysql;
|
|
258
|
> create user orbit;
|
|
259
|
> grant all on *.* to 'orbit';
|
|
260
|
> quit;
|
|
261
|
|
|
262
|
$ mysql -u orbit -p
|
|
263
|
|
|
264
|
Inside mysql:
|
|
265
|
> set password=password('orbit');
|
|
266
|
> quit;
|
|
267
|
|
|
268
|
NOTE: for unknown reason the mysql v5 on ubuntu hardy did not correctly
|
|
269
|
set the password for orbit when using the command:
|
|
270
|
> create user orbit identified by 'orbit'
|
|
271
|
|
|
272
|
NOTE: On some distro, you might have to specify the domain 'localhost' in
|
|
273
|
addition to the user, i.e. 'orbit'@'localhost' instead of just 'orbit'
|
|
274
|
|
|
275
|
- Check that the MySQL socket is correctly installed in '/tmp':
|
|
276
|
|
|
277
|
Ruby's MySQL implementation is looking for the MySQL socket at the
|
|
278
|
following path:
|
|
279
|
'/tmp/mysql.sock'
|
|
280
|
|
|
281
|
However, MySQL v5 install on ubuntu hardy places that socket file at:
|
|
282
|
'/var/run/mysqld/mysqld.sock'
|
|
283
|
|
|
284
|
If this is the case, you have to create a symlink:
|
|
285
|
$ sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock
|
|
286
|
|
|
287
|
NOTE: This symlink might be removed on reboot of your system... if so
|
|
288
|
place the above symlink creation line in one of your system's startup scripts.
|
|
289
|
|
|
290
|
NOTE: If the above link is not created, the GS Inventory will return the following
|
|
291
|
errors when it tries to connect to the Inventory database:
|
|
292
|
' Cannot connect to the Inventory Database '
|
|
293
|
' No such file or directory - /tmp/mysql.sock: '
|
|
294
|
|
|
295
|
|
|
296
|
- Install Berkeley DB libraries. These libraries should be installed by default
|
|
297
|
with most install config (check if /usr/lib/libdb-X.Y.so exist on your machine).
|
|
298
|
However, if not, install it using:
|
|
299
|
|
|
300
|
$ sudo apt-get install libdbX.Y
|
|
301
|
|
|
302
|
- TEST:
|
|
303
|
Login into mysql as user 'orbit' with password 'orbit',
|
|
304
|
then create a database, play with it, then delete it.
|
|
305
|
|
|
306
|
$ mysql -u orbit -p
|
|
307
|
|
|
308
|
Inside mysql:
|
|
309
|
> create database mytest;
|
|
310
|
> use mytest;
|
|
311
|
> create table mytable (myfield varchar(20));
|
|
312
|
> show tables;
|
|
313
|
etc...
|
|
314
|
> drop mytest;
|
|
315
|
> quit;
|
|
316
|
|
|
317
|
|
|
318
|
------------------ Install Frisbee -----------------
|
|
319
|
|
|
320
|
- Download the Frisbee source code from Emulab:
|
|
321
|
|
|
322
|
Go to Emulab webpage and retrieve the URL for the latest source
|
|
323
|
code release (in this example, the release of 30/06/08)
|
|
324
|
|
|
325
|
Emulab webpage: http://www.emulab.net/software.php3
|
|
326
|
|
|
327
|
$ wget http://www.emulab.net/downloads/emulab-080630.tar.gz
|
|
328
|
|
|
329
|
$ tar xzf emulab-080630.tar.gz
|
|
330
|
|
|
331
|
- If you do not have the libC headers and ZLib headers currently
|
|
332
|
installed, you need to install them:
|
|
333
|
|
|
334
|
$ sudo apt-get install libc6-dev
|
|
335
|
$ sudo apt-get install zlib1g-dev
|
|
336
|
|
|
337
|
|
|
338
|
- Compile the stand-alone imagezip software
|
|
339
|
|
|
340
|
$ cd testbed-080630/os/imagezip
|
|
341
|
|
|
342
|
$ vi Makefile-linux.sa
|
|
343
|
|
|
344
|
Comment lines:
|
|
345
|
|
|
346
|
#ifdef WITH_NTFS
|
|
347
|
...
|
|
348
|
#endif
|
|
349
|
|
|
350
|
Add 'disksize.o' to targets 'imagezip' and 'imageunzip'
|
|
351
|
|
|
352
|
imagezip: disksize.o imagezip.o (etc...)
|
|
353
|
$(CC) $(CFLAGS) disksize.o imagezip.o (etc..)
|
|
354
|
|
|
355
|
(Do the same for 'imageunzip' target)
|
|
356
|
|
|
357
|
$ make -f Makfile-linux.sa
|
|
358
|
|
|
359
|
$ sudo cp imagezip imageunzip imagedump /usr/bin
|
|
360
|
|
|
361
|
- Compile the stand-alone frisbee software
|
|
362
|
|
|
363
|
$ cd testbed-080630/os/frisbee.redux
|
|
364
|
|
|
365
|
$ vi Makefile-linux.sa
|
|
366
|
|
|
367
|
Add 'disksize.o' to the list of objects to link in the targets
|
|
368
|
'frisbee' and 'frisbeed'
|
|
369
|
|
|
370
|
frisbee: $(CLIENTOBJS)
|
|
371
|
$(CC) $(IMAGEZIPDIR)/disksize.o (etc...)
|
|
372
|
|
|
373
|
frisbeed: $(SERVEROBJS)
|
|
374
|
$(CC) $(IMAGEZIPDIR)/disksize.o (etc...)
|
|
375
|
|
|
376
|
$ make -f Makefile-linux.sa
|
|
377
|
|
|
378
|
$ sudo cp frisbee frisbeed /usr/sbin
|
|
379
|
|
|
380
|
|
|
381
|
|
|
382
|
------------------ Install and Configure NFS Server -----------------
|
|
383
|
|
|
384
|
- Install the packages:
|
|
385
|
|
|
386
|
$ sudo apt-get install nfs-kernel-server nfs-common portmap
|
|
387
|
|
|
388
|
- Configure portmap:
|
|
389
|
|
|
390
|
Make sure that portmap do NOT bind on loopback:
|
|
391
|
|
|
392
|
$ sudo dpkg-reconfigure portmap
|
|
393
|
|
|
394
|
$ sudo /etc/init.d/portmap restart
|
|
395
|
|
|
396
|
- Create a directory to be exported via NFS. This directory will
|
|
397
|
contain the saved disk images from the experimental machines.
|
|
398
|
|
|
399
|
$ sudo mkdir /export/
|
|
400
|
$ sudo mkdir /export/omf
|
|
401
|
$ sudo mkdir /export/omf/image
|
|
402
|
$ sudo chmod 777 /export/omf
|
|
403
|
$ sudo chmod 777 /export/omf/image
|
|
404
|
|
|
405
|
- Configure NFS:
|
|
406
|
|
|
407
|
$ sudo vi /etc/exports
|
|
408
|
|
|
409
|
Add lines:
|
|
410
|
/export/omf/image *(rw,async)
|
|
411
|
|
|
412
|
$ sudo /etc/init.d/nfs-kernel-server restart
|
|
413
|
|
|
414
|
- TEST:
|
|
415
|
Install NFS client on another machine connected to MNet.
|
|
416
|
Mount the remote shared directory '/export/omf/image' on that
|
|
417
|
machine.
|
|
418
|
|
|
419
|
$ sudo apt-get install nfs-common portmap
|
|
420
|
$ cd /tmp
|
|
421
|
$ mkdir test_mount_point
|
|
422
|
$ sudo mount 192.168.1.1:/export/omf/image test_mount_point
|
|
423
|
$ touch test_mount_point/testing_nfs.txt
|
|
424
|
$ umount test_mount_point
|
|
425
|
|
|
426
|
Check on the server side that the 'testing_nfs.txt' file created
|
|
427
|
remotely is indeed present:
|
|
428
|
|
|
429
|
$ ls /export/omf/image
|
|
430
|
|
|
431
|
|
|
432
|
|
|
433
|
------------------ ------------------ -----------------
|
|
434
|
------------------ ------------------ -----------------
|
|
435
|
------------------ ------------------ -----------------
|
|
436
|
|
|
437
|
|
|
438
|
STEP 2 - Installation of Grid Services (GS) Software on 'theserver'
|
|
439
|
|
|
440
|
|
|
441
|
------------------ Install the GS Daemon Software -----------------
|
|
442
|
|
|
443
|
- Install the required 'libruby1.8' and 'libldap-ruby1.8' libraries:
|
|
444
|
|
|
445
|
$ sudo apt-get install libruby1.8 libldap-ruby1.8
|
|
446
|
|
|
447
|
- Install the GS software package from the OMF release:
|
|
448
|
|
|
449
|
$ sudo dpkg --force-depends --install gridservices2_2.1.0_all.deb
|
|
450
|
|
|
451
|
(The '--force-depends' option is there to turn into warning the error
|
|
452
|
about the dependency on 'frisbee' package. Since we already compiled
|
|
453
|
and installed the Frisbee software from source earlier, there is no
|
|
454
|
need to install the 'frisbee' package.
|
|
455
|
We did show how to compile Frisbee from source because the binaries
|
|
456
|
inside the winlab 'frisbee' package might not be compatible with all
|
|
457
|
linux installs).
|
|
458
|
|
|
459
|
------------------ Configure the GS Daemon Software -----------------
|
|
460
|
|
|
461
|
- Configure the main GS daemon:
|
|
462
|
|
|
463
|
$ sudo vi /etc/gridservices2/gridservices.cfg
|
|
464
|
|
|
465
|
Change following line to use your own preferred port:
|
|
466
|
|
|
467
|
OPTS="--port 5022"
|
|
468
|
|
|
469
|
- Enable the cmcStub GS service:
|
|
470
|
|
|
471
|
$ sudo mkdir /etc/gridservices2/enabled
|
|
472
|
$ cd /etc/gridservices2/enabled
|
|
473
|
$ sudo ln -s /etc/gridservices2/available/cmcStub.yaml
|
|
474
|
|
|
475
|
- Start the GS daemon:
|
|
476
|
|
|
477
|
$ sudo /etc/init.d/gridservices2 start
|
|
478
|
|
|
479
|
- TEST:
|
|
480
|
The outputs of the following commands should show a 'ruby' process
|
|
481
|
running the GS software on port 5022:
|
|
482
|
$ sudo ps ax | grep ruby
|
|
483
|
$ sudo lsof -i | grep ruby
|
|
484
|
|
|
485
|
The outputs of the following commands should show you the following
|
|
486
|
message from the GS daemon:
|
|
487
|
$ wget http://192.168.1.1:5022/ -O output.txt
|
|
488
|
$ more output.txt
|
|
489
|
|
|
490
|
<?xml version='1.0'?>
|
|
491
|
<serviceGroups>
|
|
492
|
<serviceGroup path='/cmc' name='cmc'>
|
|
493
|
<info> Information on available testbed (etc..)
|
|
494
|
</info>
|
|
495
|
</serviceGroup>
|
|
496
|
</serviceGroups>
|
|
497
|
|
|
498
|
|
|
499
|
You can also try the same 'wget' command from the machine 'node001'.
|
|
500
|
|
|
501
|
The log file at '/var/log/gridservices2.log' gives you some information
|
|
502
|
about the recent GS activities:
|
|
503
|
$ tail /var/log/gridservices2.log
|
|
504
|
|
|
505
|
|
|
506
|
------------------ Configure the CMC Stub GS service -----------------
|
|
507
|
|
|
508
|
- Configure 'cmcStub.yaml'
|
|
509
|
|
|
510
|
$ sudo vi /etc/gridservices2/enabled/cmcStub.yaml
|
|
511
|
|
|
512
|
Change following lines:
|
|
513
|
|
|
514
|
listAll : |
|
|
515
|
(101..150)..to_a.map {|i| [i, 0]}
|
|
516
|
listStatus: |
|
|
517
|
(101..150).to_a.map {|i| [i, 0, 'POWERON']}
|
|
518
|
|
|
519
|
NOTE: Use spaces to indent and NOT tabs!
|
|
520
|
NOTE: The above assumes we have 50 experimental nodes, which were
|
|
521
|
allocated IP addresses from 192.168.1.101 to 192.168.1.150 by
|
|
522
|
the DHCP server we configured earlier.
|
|
523
|
|
|
524
|
- Restart the GS daemon:
|
|
525
|
|
|
526
|
$ sudo /etc/init.d/gridservices2 restart
|
|
527
|
|
|
528
|
(if you get some errors about 'check_config', do a stop then start)
|
|
529
|
|
|
530
|
- TEST:
|
|
531
|
Query the cmcStub GS service for the status of all nodes (aka experimental
|
|
532
|
machines). Since it is a stub, it should reply that all nodes are in the
|
|
533
|
'POWERON' state).
|
|
534
|
|
|
535
|
$ wget http://192.168.1.1:5022/cmc/allStatus -O states.txt
|
|
536
|
$ more states.txt
|
|
537
|
|
|
538
|
$ sudo /etc/init.d/gridservices2 start
|
|
539
|
|
|
540
|
<TESTBED_STATUS>
|
|
541
|
<detail>
|
|
542
|
<node name='n_101_0' x='101' y='0' state='POWERON'/>
|
|
543
|
|
|
544
|
(etc... for other nodes)
|
|
545
|
</detail>
|
|
546
|
</TESTBED_STATUS>
|
|
547
|
|
|
548
|
|
|
549
|
|
|
550
|
------------------ Configure the Inventory GS service -----------------
|
|
551
|
|
|
552
|
NOTE: if you have this error in the GS log:
|
|
553
|
Cannot connect to the Inventory Database - No such file or directory - /tmp/mysql.sock:
|
|
554
|
You need to do this:
|
|
555
|
/tmp/mysql.sock -> /var/run/mysqld/mysqld.sock
|
|
556
|
(stupid Ruby-mysql has hardcoded path to mysql.sock....)
|
|
557
|
|
|
558
|
|
|
559
|
|
|
560
|
------------------ ------------------ -----------------
|
|
561
|
------------------ ------------------ -----------------
|
|
562
|
------------------ ------------------ -----------------
|
|
563
|
|
|
564
|
|
|
565
|
STEP 3 - Installation of Node Handler (NH) Software on 'theserver'
|
|
566
|
|
|
567
|
|
|
568
|
------------------ Install and Configure the NH Software -----------------
|
|
569
|
|
|
570
|
- Install the NH software package from the OMF release:
|
|
571
|
|
|
572
|
$ sudo dpkg --force-depends --install nodehandler4_4.2.0_all.deb
|
|
573
|
|
|
574
|
- Configure the NH software:
|
|
575
|
|
|
576
|
$ cd /etc/nodehandler4/
|
|
577
|
$ sudo cp nodehandler.yaml.nicta nodehandler.yaml
|
|
578
|
|
|
579
|
$ sudo vi nodehandler.yaml
|
|
580
|
|
|
581
|
Change lines (again use spaces instead of tabs):
|
|
582
|
|
|
583
|
default:
|
|
584
|
|
|
585
|
X_MAX: 255
|
|
586
|
Y_MAX: 1
|
|
587
|
|
|
588
|
oml:
|
|
589
|
local_host: '192.168.1.1'
|
|
590
|
|
|
591
|
frisbee:
|
|
592
|
default_disk: '/dev/sda'
|
|
593
|
|
|
594
|
controlIP: |
|
|
595
|
|x, y|
|
|
596
|
"192.168.1.#{x}"
|
|
597
|
|
|
598
|
coord2IP: |
|
|
599
|
|x, y|
|
|
600
|
name = "192.168.1.#{x}"
|
|
601
|
|
|
602
|
- TEST:
|
|
603
|
|
|
604
|
Call the NH to request the status of the experimental machine 'node001'
|
|
605
|
|
|
606
|
$ omf stat [101,0]
|
|
607
|
|
|
608
|
The output should look like:
|
|
609
|
-----------------------------------------------
|
|
610
|
Testbed : indoor
|
|
611
|
Node n_101_0 - State: POWERON
|
|
612
|
-----------------------------------------------
|
|
613
|
|
|
614
|
(NOTE: with our particular notation, if we want 'omf stat all' to
|
|
615
|
|
|
616
|
|
|
617
|
------------------ ------------------ -----------------
|
|
618
|
------------------ ------------------ -----------------
|
|
619
|
------------------ ------------------ -----------------
|
|
620
|
|
|
621
|
|
|
622
|
STEP 3 - Installation of Node Agent (NA) Software on 'node001' machine
|
|
623
|
|
|
624
|
|
|
625
|
------------------ Install and Configure supporting services -----------------
|
|
626
|
|
|
627
|
- After fresh ubuntu install, remove and add some services:
|
|
628
|
|
|
629
|
$ sudo apt-get remove network-manager
|
|
630
|
$ sudo apt-get install ssh
|
|
631
|
|
|
632
|
- Configure some system parameters:
|
|
633
|
|
|
634
|
$ sudo vi /etc/hosts
|
|
635
|
|
|
636
|
Add lines:
|
|
637
|
127.0.0.1 localhost
|
|
638
|
127.0.1.1 node001.yourtestbed.yourdomain.com node001
|
|
639
|
192.168.1.101 node001.yourtestbed.yourdomain.com node001
|
|
640
|
# Names for our Server with GS
|
|
641
|
192.168.1.1 yourserver.yourtestbed.yourdomain.com yourserver
|
|
642
|
|
|
643
|
- Make sure that the interface which supports PXE boot is ALWAYS assigned 'eth1'
|
|
644
|
(Persistent naming of PXE-enabled interface to 'eth1')
|
|
645
|
|
|
646
|
You need to install 'udev' (rule-based device node and kernel event manager)
|
|
647
|
(if not already installed by default)
|
|
648
|
|
|
649
|
$ sudo apt-get install udev
|
|
650
|
|
|
651
|
Then configure udev to permanently assign 'eth1' to PXE-enabled interface
|
|
652
|
|
|
653
|
$ sudo vi /etc/udev/rules.d/70-persistent-net.rules
|
|
654
|
|
|
655
|
Change lines so that 'eth1' is paired with the MAC address of the PXE-enabled interface:
|
|
656
|
|
|
657
|
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="XX:XX:XX:XX:XX:XX", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
|
|
658
|
|
|
659
|
|
|
660
|
------------------ Install and Configure the NA Software -----------------
|
|
661
|
|
|
662
|
- Install required dependencies packages from the OMF release:
|
|
663
|
|
|
664
|
$ sudo dpkg --install liboml-transport_2.0.3_i386.deb
|
|
665
|
$ sudo dpkg --install liboml-client_2.0.4_i386.deb
|
|
666
|
$ sudo dpkg --install liboml-filters_2.0.3_i386.deb
|
|
667
|
|
|
668
|
- Install the NA software from the OMF release
|
|
669
|
|
|
670
|
$ sudo dpkg --force-depends --install nodeagent4_4.3.0_all.deb
|
|
671
|
|
|
672
|
(force-depends is used here to ignore warning about dependency on 'ruby'
|
|
673
|
package. The NA package carries its own ruby interpreter)
|
|
674
|
|
|
675
|
- Configure the NA daemon:
|
|
676
|
|
|
677
|
$ sudo vi /etc/nodeagent4/nodeagent.yaml
|
|
678
|
|
|
679
|
Comment lines for option i) "Multicast Communicator".
|
|
680
|
|
|
681
|
Uncomment lines for option ii) "TCP Server Communicator".
|
|
682
|
|
|
683
|
If needed, modify 'local_if' value to the interface connected to MNet:
|
|
684
|
|
|
685
|
local_if: eth0
|
|
686
|
|
|
687
|
- Restart the NA Daemon:
|
|
688
|
|
|
689
|
$ sudo /etc/init.d/nodeagent4 restart
|
|
690
|
|
|
691
|
(if you get some errors about 'check_config', do a stop then start)
|
|
692
|
|
|
693
|
- TEST:
|
|
694
|
1) The outputs of the following commands should show a 'ruby' process
|
|
695
|
running the NA software on port 9026:
|
|
696
|
$ sudo ps ax | grep ruby
|
|
697
|
$ sudo lsof -i | grep ruby
|
|
698
|
|
|
699
|
2) The log file at '/var/log/nodeAgent4.log' gives you some information
|
|
700
|
about the recent NA activities:
|
|
701
|
$ tail /var/log/nodeAgent4.log
|
|
702
|
|
|
703
|
3) Run the sample experiment script exp1.rb. This experiment run the
|
|
704
|
'ls -la' command on the experimental node. The command output (the list
|
|
705
|
of files on the node) is forwarded to the server running the NH.
|
|
706
|
|
|
707
|
- First, edit the experiment script to set the node to use
|
|
708
|
|
|
709
|
$ vi exp1.rb
|
|
710
|
|
|
711
|
Change the lines (if using 'node001' then use '[101,1]'):
|
|
712
|
|
|
713
|
defGroup('mygroup', [101,1])
|
|
714
|
|
|
715
|
- Second, execute the experiment on the NH machine:
|
|
716
|
|
|
717
|
$ omf exec exp1
|
|
718
|
|
|
719
|
- The output should display messages from the experiment execution and
|
|
720
|
the list of files present on the experimental node 'node001'.
|
|
721
|
|
|
722
|
|
|
723
|
------------------ Install the OTG/OTR applications -----------------
|
|
724
|
|
|
725
|
- Install required dependencies packages from the OMF release:
|
|
726
|
|
|
727
|
|
|
728
|
------------------ ------------------ -----------------
|
|
729
|
------------------ ------------------ -----------------
|
|
730
|
------------------ ------------------ -----------------
|
|
731
|
|
|
732
|
|
|
733
|
STEP 4 - Installation of other GS services on the GS server machine
|
|
734
|
|
|
735
|
------------------ Install the OML collection server -----------------
|
|
736
|
|
|
737
|
|
|
738
|
- Install the OML Collection Server and required dependency from the OMF release
|
|
739
|
|
|
740
|
$ sudo dpkg --install liboml-transport_2.0.3_i386.deb
|
|
741
|
$ sudo dpkg --install oml-collection-server_2.0.3_i386.deb
|
|
742
|
|
|
743
|
- If require, create symlinks for current versions of libraries:
|
|
744
|
|
|
745
|
$ sudo ln -s /usr/lib/libdb-4.6.so /usr/lib/libdb-4.2.so
|
|
746
|
$ sudo ln -s /usr/lib/mysqlclient.so.15 /usr/lib/mysqlclient.so.12
|
|
747
|
|
|
748
|
|
|
749
|
|
|
750
|
|
|
751
|
|
|
752
|
|
|
753
|
|