InstallationGuide » History » Version 20

Anonymous, 09/07/2007 04:13 PM

1 1 Anonymous
= Installation Guide =
2 1 Anonymous
3 1 Anonymous
This guide describes the installation procedure for ''ProCKSI''. 
4 1 Anonymous
5 4 Anonymous
 ||'''Release'''     ||procksi_8-2
6 4 Anonymous
 ||'''Environment''' ||Cluster with one head node and two compute nodes 
7 1 Anonymous
         
8 1 Anonymous
All installations must be done with ''root'' access.
9 1 Anonymous
10 1 Anonymous
11 1 Anonymous
12 1 Anonymous
13 1 Anonymous
= System Design and Requirements =
14 1 Anonymous
15 1 Anonymous
== Cluster Design ==
16 1 Anonymous
The cluster is assumed to have a ''head node'' and several ''compute nodes''. 
17 1 Anonymous
18 1 Anonymous
 * The head node runs the webserver, the file server, the central database server, the email server, and the server for the queuing system. It can be used as a compute node itself. 
19 1 Anonymous
 * The compute nodes run the calculations.
20 1 Anonymous
 
21 1 Anonymous
22 3 Anonymous
[[Image(ClusterDesign.png)]]
23 2 Anonymous
24 1 Anonymous
== Software Requirements ==
25 4 Anonymous
We are assuming the following software components to be already installed the '''head node''':
26 1 Anonymous
27 20 Anonymous
 ||'''Operating system''' ||''Centos5'' (''RHEL5'')
28 4 Anonymous
 ||'''Webserver''' 	  ||Apache2 
29 4 Anonymous
 ||'''Database'''	  ||MySQL
30 4 Anonymous
 ||'''Email server'''	  ||Postfix (SMTP) 
31 4 Anonymous
 ||'''Queuing system'''	  ||PBS torque + maui
32 1 Anonymous
33 1 Anonymous
34 4 Anonymous
The '''compute nodes''' only requires the following components:
35 1 Anonymous
36 19 Anonymous
 ||'''Operating system'''||	''Centos5'' (''RHEL5'')
37 4 Anonymous
 ||'''Queuing system  '''||	PBS torque
38 1 Anonymous
39 1 Anonymous
40 1 Anonymous
The configuration for these components will be described later in this installation guide.
41 1 Anonymous
42 1 Anonymous
43 1 Anonymous
44 1 Anonymous
= URL and Email Forwarding =
45 1 Anonymous
ProCKSI uses URL and email forwarding in order to provide a stable internet address and corresponding email addresses.
46 1 Anonymous
47 1 Anonymous
48 1 Anonymous
49 1 Anonymous
== Provider ==
50 4 Anonymous
These are data for the domain and email domain provider.
51 1 Anonymous
52 4 Anonymous
 ||'''Provider'''  ||	[http://www.planetdomain.com/ukcheap/home.jsp www.planetdomain.com/ukcheap/home.jsp]
53 4 Anonymous
 ||'''Login'''     || 	nkrasnogor
54 4 Anonymous
 ||'''Password'''  || 	[BBSRC GRANT NUMBER]
55 1 Anonymous
56 4 Anonymous
57 1 Anonymous
== Domains ==
58 4 Anonymous
ProCKSI's main domain name is [http://www.procksi.net www.procksi.net], which is redirected to [http://procksi.cs.nott.ac.uk procksi.cs.nott.ac.uk], which is an alias for [http://procksi0.cs.nott.ac.uk procksi0.cs.nott.ac.uk]. All other domain names are redirected to its main domain name.
59 1 Anonymous
60 1 Anonymous
  	
61 1 Anonymous
62 4 Anonymous
 ||'''Domain Name''' ||'''Redirected to'''                                  ||'''Expires at'''
63 4 Anonymous
 ||www.procksi.net   ||[http://procksi.cs.nott.ac.uk procksi.cs.nott.ac.uk] ||11-01-2011 
64 4 Anonymous
 ||www.procksi.org   ||[http://www.procksi.net/ www.procksi.net]            ||11-01-2011 
65 4 Anonymous
 ||www.procksi.com   ||[http://www.procksi.net/ www.procksi.net]            ||11-01-2011 
66 4 Anonymous
 ||www.procksi.info  ||[http://www.procksi.net/ www.procksi.net]            ||11-01-2008 
67 1 Anonymous
68 1 Anonymous
 
69 1 Anonymous
70 1 Anonymous
71 1 Anonymous
== DNS Settings	 ==
72 1 Anonymous
The primary and secondary DNS servers must be set as follows:
73 1 Anonymous
74 4 Anonymous
 {{{
75 4 Anonymous
 Primary	ns1.iprimus.com.au
76 4 Anonymous
 Secondary	ns2.iprimus.com.au 
77 4 Anonymous
 }}}
78 1 Anonymous
79 1 Anonymous
80 1 Anonymous
The following changes must be made manually in ''Advanced DNS settings'':
81 1 Anonymous
82 4 Anonymous
 {{{
83 4 Anonymous
 CNAME    *.procksi.net	    procksi.cs.nott.ac.uk.
84 4 Anonymous
 CNAME    *.procksi.org	    www.procksi.net.
85 4 Anonymous
 CNAME    *.procksi.com	    www.procksi.net.
86 4 Anonymous
 CNAME    *.procksi.info    www.procksi.net.
87 4 Anonymous
 }}}
88 1 Anonymous
      
89 1 Anonymous
90 1 Anonymous
91 1 Anonymous
== Email Settings ==
92 1 Anonymous
The following email addresses must be created and redirected to ''procksi@cs.nott.ac.uk'', which must be available:
93 1 Anonymous
 	
94 4 Anonymous
 ||'''Email Address'''  ||'''Redirected to'''	
95 4 Anonymous
 ||admin@procksi.net	||procksi@cs.nott.ac.uk
96 4 Anonymous
 ||develop@procksi.net	||procksi@cs.nott.ac.uk   
97 4 Anonymous
 ||info@procksi.net	||procksi@cs.nott.ac.uk
98 4 Anonymous
 ||research@procksi.net	||procksi@cs.nott.ac.uk
99 4 Anonymous
 ||pbs@procksi.net	||procksi@cs.nott.ac.uk
100 4 Anonymous
 ||webmaster@procksi.net||procksi@cs.nott.ac.uk
101 1 Anonymous
102 1 Anonymous
The following changes must be made manually in ''Advanced DNS settings:''
103 1 Anonymous
104 4 Anonymous
 {{{
105 4 Anonymous
 MX    @.procksi.net    mailhost.planetdomain.com    10
106 4 Anonymous
 }}}
107 1 Anonymous
 
108 1 Anonymous
109 1 Anonymous
110 1 Anonymous
== Domain Usage Monitoring ==
111 1 Anonymous
The usage of ProCKSI's domains is monitored. 
112 1 Anonymous
113 8 Anonymous
 ||Provider	||[http://www.sitemeter.com www.sitemeter.com] 
114 4 Anonymous
 ||Login:	||s18procksi
115 4 Anonymous
 ||Password:	||FAKUIL
116 1 Anonymous
 
117 1 Anonymous
118 1 Anonymous
All HTML documents must contain the following code in order to be tracked correctly.
119 1 Anonymous
120 4 Anonymous
 {{{
121 1 Anonymous
<!-- Site Meter -->
122 1 Anonymous
	<script type="text/javascript" src="http://s18.sitemeter.com/js/counter.js?site=s18procksi">
123 1 Anonymous
	</script>
124 1 Anonymous
	<noscript>
125 1 Anonymous
		<a href="http://s18.sitemeter.com/stats.asp?site=s18procksi" target="_top">
126 1 Anonymous
			<img	src=[http://s18.sitemeter.com/meter.asp?site=s18procksi http://s18.sitemeter.com/meter.asp?site=s18procksi]
127 1 Anonymous
    				alt="Site Meter" border="0"/>
128 1 Anonymous
		</a>
129 1 Anonymous
	</noscript>
130 1 Anonymous
131 1 Anonymous
<!-- Copyright (c)2006 Site Meter -->
132 4 Anonymous
 }}}
133 1 Anonymous
 
134 1 Anonymous
135 1 Anonymous
136 1 Anonymous
= Data Management and Exchange  =
137 20 Anonymous
The master node and all slave nodes must be able to communicate with each other and exchange data. Therefore, a common user management and shared file system is necessary.
138 1 Anonymous
139 17 Anonymous
140 17 Anonymous
== Network Configuration == 
141 17 Anonymous
Make the following changes on the head node and each compute node:
142 17 Anonymous
143 17 Anonymous
 * Modify ''/etc/sysconfig/network'' in order to enable networking, set the hostname, and disable the Zero Configuration Newtworking:
144 1 Anonymous
  {{{
145 17 Anonymous
  NETWORKING=yes
146 20 Anonymous
  NETWORKING_IPV6=no
147 17 Anonymous
  HOSTNAME=[Add Hostname]
148 1 Anonymous
  NOZEROCONF=yes
149 17 Anonymous
  }}}
150 17 Anonymous
151 20 Anonymous
 * Configure the internal network inferface (eth0) in ''/etc/sysconfig/networking/devices/ifcfg-eth0'':
152 1 Anonymous
  {{{
153 1 Anonymous
  DEVICE=eth0
154 17 Anonymous
  TYPE=Ethernet
155 17 Anonymous
  ONBOOT=yes
156 20 Anonymous
  BOOTPROTO=static
157 17 Anonymous
  HWADDR=[Add MAC Address]
158 20 Anonymous
  IPADDR=[Add Internal IP Address]
159 1 Anonymous
  BROADCAST=192.168.199.255
160 17 Anonymous
  GATEWAY=192.168.0.10
161 17 Anonymous
  NETWORK=192.168.199.0
162 17 Anonymous
  NETMASK=255.255.255.0
163 1 Anonymous
  }}}
164 1 Anonymous
165 20 Anonymous
 * Configure the external network inferface (eth1) in ''/etc/sysconfig/networking/devices/ifcfg-eth1'':
166 17 Anonymous
  {{{
167 17 Anonymous
  DEVICE=eth1
168 17 Anonymous
  TYPE=Ethernet
169 17 Anonymous
  ONBOOT=yes
170 20 Anonymous
  BOOTPROTO=static
171 17 Anonymous
  HWADDR=[Add MAC Address]
172 20 Anonymous
  IPADDR=[Add External IP Address]
173 17 Anonymous
  BROADCAST=128.243.21.255
174 17 Anonymous
  GATEWAY=128.243.21.1
175 17 Anonymous
  NETWORK=128.243.21.0
176 17 Anonymous
  NETMASK=255.255.255.0
177 17 Anonymous
  }}}
178 17 Anonymous
179 20 Anonymous
 * Add a default gateway, and routes to the internal and external networks to the Routing Table (if not done automatically yet):
180 17 Anonymous
  {{{
181 17 Anonymous
  /sbin/route add -net 192.168.199.0 netmask 255.255.255.0 dev eth0
182 17 Anonymous
  /sbin/route add -net 128.243.21.0  netmask 255.255.255.0 dev eth1
183 17 Anonymous
  /sbin/route add default gw 128.243.21.1 dev eth1
184 17 Anonymous
  }}}
185 1 Anonymous
186 1 Anonymous
187 1 Anonymous
== User Management ==
188 4 Anonymous
Make the following changes on the head node and each compute node:
189 1 Anonymous
190 4 Anonymous
 * Add a new user into ''/etc/passwd'': 
191 4 Anonymous
   {{{
192 4 Anonymous
   procksi:x:510:510:ProCKSI-Server:/home/procksi:/bin/bash
193 4 Anonymous
   }}}
194 4 Anonymous
 * Add an entry for the new user into ''/etc/shadow'' if desired: 
195 4 Anonymous
   {{{
196 4 Anonymous
   procksi:[ENCRYPTED_PASSWORD]:13483:0:99999:7:::
197 4 Anonymous
   }}}
198 1 Anonymous
 * Add a new group into ''/etc/group'', and add all users who should have access:
199 4 Anonymous
   {{{
200 1 Anonymous
   procksi:x:510:dxb
201 1 Anonymous
   }}} 
202 4 Anonymous
   The members for group procksi are now: ''procksi'', ''dxb''
203 1 Anonymous
 * Generate home directory for ''procksi''
204 1 Anonymous
  
205 1 Anonymous
206 1 Anonymous
207 1 Anonymous
== Firewall ==
208 20 Anonymous
 All network traffic using the internal (private) network is trusted and considered to be secure. So no firewall is needed on the internal network interface (''eth0'').
209 1 Anonymous
210 4 Anonymous
 * Modify ''/etc/sysconfig/iptables'' on the head node and on each compute node. [[BR]] 
211 20 Anonymous
   If ''eth0'' is on the private network, add
212 4 Anonymous
   {{{
213 20 Anonymous
   -A RH-Firewall-1-INPUT -i eth0 -j ACCEPT
214 4 Anonymous
   }}}
215 4 Anonymous
   directly after
216 4 Anonymous
   {{{
217 4 Anonymous
    -A RH-Firewall-1-INPUT -i lo -j ACCEPT 
218 4 Anonymous
   }}}
219 4 Anonymous
 * Restart the firewall on the head node and on each compute node:
220 4 Anonymous
   {{{
221 4 Anonymous
   /sbin/service iptables restart
222 4 Anonymous
   }}}
223 1 Anonymous
224 20 Anonymous
 Changes in the firewall settings regarding the external network interface (''eth1'') will be described in other sections where necessary.
225 1 Anonymous
226 1 Anonymous
 
227 1 Anonymous
228 1 Anonymous
== Host Name Resolution ==
229 1 Anonymous
As each node consists of two network interfaces (= multihomed host), the host name resolution must be configured correctly in order to prioritize the internal, trusted network for communication between different nodes.
230 1 Anonymous
231 1 Anonymous
 * The official hostname for each node must be set to the ''internal'' name of the machine in ''/etc/sysconfig/network''. This is an example for the head node:
232 1 Anonymous
 {{{
233 4 Anonymous
 HOSTNAME=procksi0-priv.cs.nott.ac.uk
234 4 Anonymous
 }}}
235 1 Anonymous
236 1 Anonymous
 The compute nodes must be named and configured accordingly.
237 20 Anonymous
 * Add the following to ''/etc/hosts'' on the master node:
238 1 Anonymous
 {{{
239 20 Anonymous
 127.0.0.1       master01.procksi.local  master01        localhost.localdomain   localhost
240 1 Anonymous
 }}}
241 20 Anonymous
 and alter the line for each slave node (slave01 ... slaveXX) accordingly.
242 1 Anonymous
 * Add the following to ''/etc/hosts'' on the head node and each compute node:
243 4 Anonymous
 {{{
244 20 Anonymous
  192.168.199.10  master01.procksi.local master01 m01
245 20 Anonymous
  192.168.199.11  slave01.procksi.local  slave01  s01
246 20 Anonymous
  192.168.199.12  slave02.procksi.local  slave02  s02
247 20 Anonymous
  192.168.199.13  slave03.procksi.local  slave03  s03
248 20 Anonymous
  192.168.199.14  slave04.procksi.local  slave04  s04
249 4 Anonymous
 }}}
250 4 Anonymous
 Edit ''/etc/host.conf'' so that local setting in ''/etc/hosts'' take precedence over DNS:
251 4 Anonymous
 {{{
252 4 Anonymous
 order hosts,bind
253 1 Anonymous
 }}}
254 1 Anonymous
255 1 Anonymous
== Data Access ==
256 20 Anonymous
 The head node hosts a RAID system of hard disks that will store all data generated by ProCKSI on all slave nodes and the master node itself. This partition must be accessible by all nodes and is exported as a network file system (NFS) therefore. Executables used by ProCKSI must be installed locally on each slave node for better performance.
257 4 Anonymous
258 20 Anonymous
 * Add the following to the end of ''/etc/exports'' on the master node (''master01''):
259 4 Anonymous
   {{{
260 20 Anonymous
   /home  192.168.199.0/4(rw,async,no_subtree_check,no_root_squash)
261 4 Anonymous
   }}}
262 20 Anonymous
 * Add the following to the end of ''/etc/fstab'' on each slave node (''slave01'' ... ''slaveXX''): 
263 4 Anonymous
   {{{
264 20 Anonymous
   master01:/home   /home   nfs   bg,hard,intr,tcp   0 0
265 11 Anonymous
   }}}
266 20 Anonymous
 * Tune NFS by increasing the number of nfsd threads. Modify ''/etc/sysconfig/nfs'' on the master node:
267 11 Anonymous
   {{{
268 20 Anonymous
   RPCNFSDCOUNT=16
269 4 Anonymous
   }}}
270 20 Anonymous
 * Make the NFS daemons start at bootup. Enter at the command line of the master node and each slave node: 
271 4 Anonymous
   {{{
272 4 Anonymous
   /sbin/chkconfig  nfs  on
273 4 Anonymous
   }}}
274 20 Anonymous
 * Start the NFS daemons. Enter at the command line on the master node and on each slave node:
275 4 Anonymous
   {{{
276 4 Anonymous
   /sbin/service  nfsd  start
277 4 Anonymous
   }}}
278 20 Anonymous
 * Generate the following temp directory on the master node and each slave node, at best on a separate partition:
279 4 Anonymous
   {{{ 
280 4 Anonymous
   mkdir /scratch
281 1 Anonymous
   }}}
282 1 Anonymous
283 1 Anonymous
284 4 Anonymous
== Time Synchronisation ==
285 4 Anonymous
 The system time on all nodes must be synchronized as 
286 4 Anonymous
 a) data is written/read on/from a common, shared file system or even expires after a certain period of time and must be deleted, and 
287 1 Anonymous
 b) system logs are maintained independently but entries must be able to be associated with each other.
288 4 Anonymous
289 4 Anonymous
 * Add your own time server to ''/etc/ntp/ntpservers'': 
290 15 Anonymous
   {{{   
291 15 Anonymous
   128.243.21.16 #marian.cs.nott.ac.uk
292 15 Anonymous
   128.243.21.17 #robin.cs.nott.ac.uk
293 15 Anonymous
   128.243.21.18 #tuck.cs.nott.ac.uk
294 1 Anonymous
   128.243.21.19 #pat.cs.nott.ac.uk
295 15 Anonymous
   }}}
296 15 Anonymous
297 1 Anonymous
 * Modify ''/etc/ntp.conf'' in order to permit systems on the subnet to synchronise with this time service:
298 15 Anonymous
   {{{
299 15 Anonymous
   # -- CLIENT NETWORK -------
300 15 Anonymous
   restrict 192.168.199.0 mask 255.255.255.0 nomodify notrap
301 15 Anonymous
   broadcastclient
302 15 Anonymous
   }}}
303 15 Anonymous
 * Modify ''/etc/ntp.conf'' and add further time servers:
304 15 Anonymous
   {{{
305 15 Anonymous
   # --- OUR TIMESERVERS -----
306 15 Anonymous
   server 128.243.21.16 #marian.cs.nott.ac.uk
307 15 Anonymous
   restrict 128.243.21.16 mask 255.255.255.255 nomodify notrap noquery
308 15 Anonymous
   server 128.243.21.17 #robin.cs.nott.ac.uk
309 15 Anonymous
   restrict 128.243.21.17 mask 255.255.255.255 nomodify notrap noquery
310 15 Anonymous
   server 128.243.21.18 #tuck.cs.nott.ac.uk
311 15 Anonymous
   restrict 128.243.21.18 mask 255.255.255.255 nomodify notrap noquery
312 15 Anonymous
   server 128.243.21.19 #pat.cs.nott.ac.uk
313 4 Anonymous
   restrict 128.243.21.19 mask 255.255.255.255 nomodify notrap noquery
314 4 Anonymous
   }}}
315 4 Anonymous
 * Make the NTP daemon start at bootup. Enter at the command line:
316 4 Anonymous
   {{{
317 4 Anonymous
   /sbin/chkconfig  ntpd  on
318 4 Anonymous
   }}}
319 4 Anonymous
 * Start the NTP daemon. Enter at the command line:
320 4 Anonymous
   {{{
321 1 Anonymous
   /sbin/service ntpd start
322 1 Anonymous
   }}}
323 1 Anonymous
324 1 Anonymous
325 1 Anonymous
326 1 Anonymous
= Queuing System =
327 1 Anonymous
 The queueing system (resource manager) is the heart of the distributed computing on a cluster. It consists of three parts, the server, the scheduler, and the machine-oriented mini-server (MOM) executing the jobs.
328 1 Anonymous
329 1 Anonymous
 
330 1 Anonymous
331 1 Anonymous
 We are assuming the following configuration:
332 1 Anonymous
333 1 Anonymous
 ||PBS TORQUE|| version 2.1.6           ||server, basic scheduler, mom 
334 1 Anonymous
 ||MAUI      || version 3.2.6.p18	||scheduler
335 1 Anonymous
336 1 Anonymous
337 1 Anonymous
 The sources can be obtained from:
338 1 Anonymous
339 1 Anonymous
 ||PBS TORQUE ||http://www.clusterresources.com/pages/products/torque-resource-manager.php
340 1 Anonymous
 ||MAUI       ||http://www.clusterresources.com/pages/products/maui-cluster-scheduler.php
341 1 Anonymous
 
342 1 Anonymous
343 1 Anonymous
 The install directories for ''TORQUE'' and ''MAUI'' will be:
344 1 Anonymous
345 1 Anonymous
 ||PBS TORQUE ||''/usr/local/torque''
346 1 Anonymous
 ||MAUI       ||''/usr/local/maui''
347 1 Anonymous
 
348 1 Anonymous
349 1 Anonymous
350 1 Anonymous
== TORQUE ==
351 1 Anonymous
352 4 Anonymous
=== Register new services ===
353 1 Anonymous
  Edit ''/etc/services'' and add at the end:
354 1 Anonymous
  {{{
355 1 Anonymous
  # PBS/Torque services
356 1 Anonymous
357 1 Anonymous
  pbs           15001/tcp    # pbs_server
358 1 Anonymous
  pbs           15001/udp    # pbs_server
359 1 Anonymous
  pbs_mom       15002/tcp    # pbs_mom <-> pbs_server
360 1 Anonymous
  pbs_mom       15002/udp    # pbs_mom <-> pbs_server
361 1 Anonymous
  pbs_resmom    15003/tcp    # pbs_mom resource management
362 1 Anonymous
  pbs_resmom    15003/udp    # pbs_mom resource management
363 4 Anonymous
  pbs_sched     15004/tcp    # pbs scheduler (pbs_sched)
364 1 Anonymous
  pbs_sched     15004/udp    # pbs scheduler (pbs_sched)
365 1 Anonymous
  }}}
366 1 Anonymous
  
367 1 Anonymous
368 1 Anonymous
  
369 1 Anonymous
370 4 Anonymous
371 4 Anonymous
=== Setup and Configuration on the Head Node ===
372 4 Anonymous
Extract and build the distribution TORQUE on the head node. Configure server, monitor and clients to use secure file transfer (scp).
373 4 Anonymous
{{{
374 4 Anonymous
export TORQUECFG=/usr/local/torque
375 4 Anonymous
tar -xzvf TORQUE.tar.gz
376 4 Anonymous
cd TORQUE
377 4 Anonymous
}}}
378 13 Anonymous
Configuration for a 64bit machine with the following compiler options:
379 13 Anonymous
{{{
380 13 Anonymous
FFLAGS   = "-m64 -march=nocona -O3 -fPIC"
381 13 Anonymous
CFLAGS   = "-m64 -march=nocona -O3 -fPIC"
382 4 Anonymous
CXXFLAGS = "-m64 -march=nocona -O3 -fPIC"
383 4 Anonymous
LDFLAGS  = "-L/usr/local/lib -L/usr/local/lib64"
384 4 Anonymous
}}}
385 4 Anonymous
Configure, build, and install:
386 4 Anonymous
{{{
387 4 Anonymous
./configure  --enable-server  --enable-monitor  --enable-clients
388 4 Anonymous
             --with-server-home=$TORQUECFG  --with-server-name
389 4 Anonymous
             --with-rcp=scp  --disable-filesync
390 4 Anonymous
make
391 1 Anonymous
make install 
392 1 Anonymous
}}}
393 4 Anonymous
 
394 4 Anonymous
395 1 Anonymous
If not configures otherwise, binaries are installed in ''/usr/local/bin'' and ''/usr/local/sbin''. You should have these directories included in your path. But you can configure TORQUE to have the binaries in the default system directory with
396 4 Anonymous
{{{
397 1 Anonymous
./configure --bindir=/usr/bin --sbindir=/usr/sbin
398 1 Anonymous
}}}
399 4 Anonymous
 
400 4 Anonymous
401 4 Anonymous
Initialise/configure the queueing system's server daemon (pbs_server):
402 4 Anonymous
{{{
403 1 Anonymous
pbs_server -t create
404 4 Anonymous
}}}
405 4 Anonymous
406 4 Anonymous
Set the PBS operator and manager (must be a valid user name). 
407 4 Anonymous
{{{
408 4 Anonymous
qmgr
409 4 Anonymous
> set server_name = procksi0-priv.cs.nott.ac.uk
410 4 Anonymous
> set server scheduling = true
411 4 Anonymous
> set server operators += “root@procksi.cs.nott.ac.uk"
412 4 Anonymous
> set server operators += “procksi@ procksi.cs.nott.ac.uk"
413 4 Anonymous
> set server managers  += “root@ procksi.cs.nott.ac.uk"
414 1 Anonymous
> set server managers  += “procksi@ procksi.cs.nott.ac.uk"
415 4 Anonymous
}}}
416 4 Anonymous
417 4 Anonymous
Allow only ''procksi'' and ''root'' to submit jobs into the queue:
418 4 Anonymous
{{{
419 4 Anonymous
> set server acl_users = “root, procksi" 
420 1 Anonymous
> set server acl_user_enable = true
421 4 Anonymous
}}}
422 4 Anonymous
 
423 4 Anonymous
Set the default queue to ''batch''
424 4 Anonymous
{{{
425 1 Anonymous
> set server default_queue=batch
426 1 Anonymous
}}}
427 4 Anonymous
 
428 4 Anonymous
429 4 Anonymous
Set email address for email that is sent by PBS:
430 4 Anonymous
{{{
431 1 Anonymous
> set mail_from = pbs@procksi.net	
432 1 Anonymous
}}}
433 4 Anonymous
 
434 4 Anonymous
435 4 Anonymous
Allow submissions from compute hosts (only):
436 4 Anonymous
{{{
437 4 Anonymous
> set server allow_node_submit = true
438 4 Anonymous
> set server submit_hosts = procksi0-priv.cs.nott.ac.uk
439 4 Anonymous
                            procksi1-priv.cs.nott.ac.uk
440 1 Anonymous
                            procksi2-priv.cs.nott.ac.uk
441 1 Anonymous
}}}
442 4 Anonymous
 
443 1 Anonymous
444 4 Anonymous
Restrict nodes that can access the PBS server:
445 4 Anonymous
{{{
446 4 Anonymous
> set server acl_hosts = procksi0-priv.cs.nott.ac.uk
447 4 Anonymous
                         procksi1-priv.cs.nott.ac.uk                           
448 1 Anonymous
                         procksi2-priv.cs.nott.ac.uk
449 4 Anonymous
> set acl_host_enable = true
450 4 Anonymous
}}}
451 4 Anonymous
And set in ''torque.cfg'' in order to use the internal interface:
452 4 Anonymous
{{{
453 4 Anonymous
SERVERHOST              procksi0-priv.cs.nott.ac.uk
454 1 Anonymous
ALLOWCOMPUTEHOSTSUBMIT  true
455 1 Anonymous
}}}
456 4 Anonymous
 
457 4 Anonymous
458 4 Anonymous
Configure the main queue ''batch'':
459 4 Anonymous
{{{
460 4 Anonymous
> create queue batch queue_type=execution
461 4 Anonymous
> set queue batch started=true
462 4 Anonymous
> set queue batch enabled=true
463 1 Anonymous
> set queue batch resources_default.nodes=1
464 4 Anonymous
}}}
465 1 Anonymous
466 4 Anonymous
Configure queue ''test ''accordingly''. 
467 4 Anonymous
468 4 Anonymous
Configure default node to be used (see below):
469 4 Anonymous
{{{
470 1 Anonymous
> set server default_node = slave
471 4 Anonymous
}}}
472 1 Anonymous
473 4 Anonymous
Specify all compute nodes to be used by creating/editing ''$TORQUECFG/server_priv/nodes.'' This may include the same machine where pbs_server will run. If the compute nodes have more than one processor, just add np=X after the name with X being the number of processors. Add node attributes so that a subset of nodes can be requested during the submission stage.
474 4 Anonymous
{{{
475 4 Anonymous
procksi0-priv.cs.nott.ac.uk  np=1  procksi  head
476 1 Anonymous
procksi1-priv.cs.nott.ac.uk  np=2  procksi  slave  slave1
477 1 Anonymous
procksi2-priv.cs.nott.ac.uk  np=2  procksi  slave  slave2
478 4 Anonymous
}}}
479 1 Anonymous
480 1 Anonymous
Although the head node (''procksi0'') has two processors as well, we only allow one processor to be used for the queueing system as the other processor will be used for handling all frontend communication and I/O. (Make sure that hyperthreading technology is disabled on the head node and all compute nodes!)
481 4 Anonymous
482 4 Anonymous
 
483 4 Anonymous
Build packages for the compute nodes and copy them to each compute node:
484 1 Anonymous
{{{
485 4 Anonymous
cd $TORQUE
486 4 Anonymous
make packages
487 4 Anonymous
scp torque-package-mom-linux-i686.sh     procksi1|procksi2
488 13 Anonymous
scp torque-package-clients-linux-i686.sh procksi1|procksi2
489 1 Anonymous
}}}
490 1 Anonymous
ATTENTION: Does only work for the same architecture! Thus, building on the Intel head node and deploying to AMD slaves does not work!
491 1 Anonymous
492 4 Anonymous
493 4 Anonymous
=== Setup and Configuration on the Compute Nodes ===
494 13 Anonymous
Install prepared packes. A directory similar to ''$TORQUECFG'' will be automatically created.
495 13 Anonymous
{{{
496 4 Anonymous
pdsh torque-package-mom-linux-i686.sh --install
497 1 Anonymous
pdsh torque-package-clients-linux-i686.sh --install
498 1 Anonymous
}}}
499 4 Anonymous
500 4 Anonymous
 
501 4 Anonymous
Check if the nodes know the head node
502 4 Anonymous
{{{
503 4 Anonymous
$TORQUECFG/server_name
504 1 Anonymous
#procksi0-priv.cs.nott.ac.uk
505 4 Anonymous
}}}
506 1 Anonymous
507 1 Anonymous
Configure the compute nodes by creating/editing ''$TORQUECFG/mom_priv/config''. The first line specifies the PBS server, the second line specifies hosts which can be trusted to access mom services as non-root, and the last line allows to copy data via NFS without using SCP.
508 4 Anonymous
509 4 Anonymous
{{{
510 4 Anonymous
$pbsserver   procksi0-priv.cs.nott.ac.uk
511 4 Anonymous
$loglevel    255
512 1 Anonymous
$restricted  procksi?-priv.cs.nott.ac.uk
513 1 Anonymous
$usecp       procksi0-priv.cs.nott.ac.uk:/home/procksi  /home/procksi
514 4 Anonymous
}}}
515 4 Anonymous
516 4 Anonymous
Start the queueing system (manually) in the correct order:
517 4 Anonymous
 * Start the mom:
518 4 Anonymous
 {{{
519 4 Anonymous
 /usr/local/sbin/pbs_mom
520 4 Anonymous
 }}}
521 4 Anonymous
 * Kill the server:
522 4 Anonymous
 {{{
523 4 Anonymous
 /usr/local/sbin/qterm -t quick
524 4 Anonymous
 }}}
525 4 Anonymous
 * Start the server:
526 4 Anonymous
 {{{ 
527 4 Anonymous
 /usr/local/sbin/pbs_server
528 4 Anonymous
 }}}	
529 4 Anonymous
 * Start the scheduler:		
530 4 Anonymous
 {{{
531 1 Anonymous
 /usr/local/sbin/pbs_sched
532 4 Anonymous
 }}} 
533 1 Anonymous
534 1 Anonymous
If you want to use MAUI as the final scheduler, keep in mind to kill ''pbs_sched'' after testing the TORQURE installation.
535 4 Anonymous
536 4 Anonymous
537 4 Anonymous
Check that all nodes are properly configured and correctly reporting
538 4 Anonymous
{{{
539 4 Anonymous
qstat  -q
540 1 Anonymous
pbsnodes -a
541 1 Anonymous
}}}
542 1 Anonymous
543 1 Anonymous
 
544 1 Anonymous
545 4 Anonymous
546 4 Anonymous
=== Prologue and Epilogue Scripts ===
547 4 Anonymous
The ''prologue'' script is executed just before the submitted job starts. Here, it generates a unique temp directory for each job in ''/scratch''. It must be installed on each node:
548 4 Anonymous
{{{
549 4 Anonymous
cp $PROCKSI/install/prologue $TORQUECFG/mom_priv
550 1 Anonymous
chmod 500 $TORQUECFG/mom_priv/prologue
551 4 Anonymous
}}}
552 4 Anonymous
 
553 4 Anonymous
The ''epilogue'' script is executed right after the submitted job has ended. Here, it deletes the job's temp directory from ''/scratch.'' It must be installed on each node:
554 4 Anonymous
{{{
555 4 Anonymous
cp $PROCKSI/install/epilogue $TORQUECFG/mom_priv
556 4 Anonymous
chmod 500 $TORQUECFG/mom_priv/epilogue
557 1 Anonymous
}}}
558 1 Anonymous
  
559 1 Anonymous
560 1 Anonymous
561 1 Anonymous
== MAUI ==
562 4 Anonymous
563 1 Anonymous
=== Register new services ===
564 4 Anonymous
Edit ''/etc/services'' and add at the end:
565 4 Anonymous
{{{ 
566 4 Anonymous
# PBS/MAUI services
567 1 Anonymous
pbs_maui  42559/tcp    # pbs scheduler (maui)
568 1 Anonymous
pbs_maui  42559/udp    # pbs scheduler (maui)
569 1 Anonymous
}}}
570 1 Anonymous
571 4 Anonymous
572 4 Anonymous
=== Setup and Configuration on the Head Node ===
573 4 Anonymous
Extract and build the distribution MAUI.
574 4 Anonymous
{{{
575 4 Anonymous
export MAUIDIR=/usr/local/maui
576 4 Anonymous
tar -xzvf MAUI.tar.gz
577 1 Anonymous
cd TORQUE
578 4 Anonymous
}}}
579 4 Anonymous
580 4 Anonymous
Configuration for a 64bit machine with the following compiler options:
581 18 Anonymous
{{{
582 18 Anonymous
FFLAGS   = “-m64 -march=[Add Architecture] -O3 -fPIC"
583 18 Anonymous
CFLAGS   = “-m64 -march=[Add Architecture] -O3 -fPIC"
584 4 Anonymous
CXXFLAGS = “-m64 -march=[Add Architecture] -O3 -fPIC"
585 4 Anonymous
LDFLAGS	 = “-L/usr/local/lib -L/usr/local/lib64"
586 18 Anonymous
}}}
587 4 Anonymous
Attention: For Intel Xenon processors use ''-march=nocona'', for AMD Opteron processors use ''-march=opteron''.
588 4 Anonymous
589 4 Anonymous
Configure, build, and install:
590 4 Anonymous
{{{
591 4 Anonymous
./configure --with-pbs=$TORQUECFG --with-spooldir=$MAUIDIR
592 4 Anonymous
make
593 1 Anonymous
make install 
594 4 Anonymous
}}}
595 1 Anonymous
596 4 Anonymous
Fine-tune MAUI in $''MAUIDIR/maui.cfg'':
597 1 Anonymous
{{{
598 4 Anonymous
SERVERHOST            procksi0-priv.cs.nott.ac.uk
599 4 Anonymous
600 4 Anonymous
# primary admin must be first in list
601 1 Anonymous
ADMIN1                procksi
602 4 Anonymous
ADMIN1                root
603 4 Anonymous
        
604 4 Anonymous
# Resource Manager Definition
605 4 Anonymous
RMCFG[PROCKSI0-PRIV.CS.NOTT.AC.UK]		
606 4 Anonymous
TYPE=PBS 			
607 4 Anonymous
HOST=PROCKSI0-PRIV.CS.NOTT.AC.UK 		
608 4 Anonymous
PORT=15001
609 4 Anonymous
EPORT=15004	[CAN BE ALTERNATIVELY: 15017 - TRY!!!]
610 1 Anonymous
SERVERPORT  42559
611 4 Anonymous
SERVERMODE  NORMAL
612 4 Anonymous
613 4 Anonymous
# Node Allocation:
614 1 Anonymous
NODEALLOCATIONPOLICY  PRIORITY
615 1 Anonymous
NODECFG[DEFAULT] PRIORITY='- JOBCOUNT'
616 4 Anonymous
}}}
617 4 Anonymous
618 4 Anonymous
Configure attributes of compute nodes:
619 4 Anonymous
{{{
620 4 Anonymous
qmgr
621 4 Anonymous
> set node procksi0.cs.nott.ac.uk properties = “procksi, head"
622 4 Anonymous
> set node procksi1.cs.nott.ac.uk properties = “procksi, slave"
623 1 Anonymous
> set node procksi0.cs.nott.ac.uk properties = “procksi, slave"
624 4 Anonymous
}}}
625 1 Anonymous
626 4 Anonymous
Request job to be run on specific nodes (on submission):
627 4 Anonymous
628 4 Anonymous
 * Run on any compute node: 	
629 4 Anonymous
 {{{
630 4 Anonymous
 qsub -q batch -l nodes=1:procksi
631 4 Anonymous
 }}}
632 4 Anonymous
 * Run on any slave node:	
633 4 Anonymous
 {{{
634 4 Anonymous
 qsub -q batch -l nodes=1:slave
635 4 Anonymous
 }}}
636 4 Anonymous
 * Run on head node:		
637 4 Anonymous
 {{{
638 1 Anonymous
 qsub -q batch -l nodes=1:head
639 4 Anonymous
 }}}
640 1 Anonymous
641 4 Anonymous
Start the MAUI scheduler manually. Make sure that pbs_sched is not running any longer.
642 4 Anonymous
643 4 Anonymous
 * Start the scheduler:
644 4 Anonymous
 {{{
645 1 Anonymous
 /usr/local/sbin/maui
646 1 Anonymous
 }}}
647 4 Anonymous
 
648 4 Anonymous
649 4 Anonymous
Make the entire queueing system start at bootup:
650 4 Anonymous
{{{
651 4 Anonymous
cp /home/procksi/latest/install/pbs_head-node /etc/init.d/pbs 
652 4 Anonymous
/sbin/chkconfig --add pbs
653 1 Anonymous
/sbin/chkconfig pbs on
654 1 Anonymous
}}}
655 1 Anonymous
656 4 Anonymous
657 1 Anonymous
=== Setup and Configuration on the Compute Nodes ===
658 1 Anonymous
__Attention:__ 	If the head node is a compute node itself, do NOT proceed with the following steps as the head node was configured in the previous step!
659 4 Anonymous
    
660 4 Anonymous
661 4 Anonymous
Make the entire queueing system start at bootup:
662 4 Anonymous
{{{
663 4 Anonymous
cp /home/procksi/latest/install/pbs_compute-node /etc/init.d/pbs
664 4 Anonymous
/sbin/chkconfig --add pbs
665 1 Anonymous
/sbin/chkconfig pbs on
666 1 Anonymous
}}}
667 1 Anonymous
668 1 Anonymous
669 1 Anonymous
= Cluster Monitoring =
670 4 Anonymous
671 1 Anonymous
== Ganglia ==
672 14 Anonymous
“Ganglia is a scalable distributed monitoring system for high-performance computing systems such as clusters and Grids."
673 14 Anonymous
674 14 Anonymous
 * Download the latest release of the ''Ganglia Monitoring Core'' from [http://ganglia.sourceforge.net/ http://ganglia.sourceforge.net].
675 1 Anonymous
 * Install Ganglia into ''/usr/local/ganglia'', its web frontend into ''/usr/local/ganglia/html/', and its databases into ''/usr/local/ganglia/rrds/'.
676 14 Anonymous
 * Install the ''Ganglia Monitoring Daemon'' (gmond) on each node, and the ''Ganglia Meta Daemon'' (gmetad) on the the head node.
677 14 Anonymous
678 14 Anonymous
=== Ganglia Monitoring Daemon ===
679 14 Anonymous
 * Configure the ''Ganglia Moditoring Daemon'' in ''/etc/gmond.conf'':
680 14 Anonymous
  * Set the name of the cluster: 
681 14 Anonymous
  {{{
682 14 Anonymous
  cluster {
683 14 Anonymous
    name = "ProCKSI"
684 14 Anonymous
  }
685 14 Anonymous
  }}}
686 14 Anonymous
  * Set the IP address and port for multicast data exchange:
687 14 Anonymous
  {{{
688 14 Anonymous
  udp_send_channel {
689 14 Anonymous
    mcast_join = 239.2.11.71
690 14 Anonymous
    port = 8649
691 14 Anonymous
  }
692 14 Anonymous
  udp_recv_channel {
693 14 Anonymous
    mcast_join = 239.2.11.71
694 14 Anonymous
    port = 8649
695 14 Anonymous
    bind = 239.2.11.71
696 14 Anonymous
  }
697 16 Anonymous
  }}}
698 1 Anonymous
 * Add additional route for correct data exchange via multicast using the ''internal'' interface (''eth0''). Modify ''/etc/inid.d/gmond'':
699 16 Anonymous
  {{{
700 16 Anonymous
   #Add multicast route to internal interface
701 16 Anonymous
   /sbin/route add -host 239.2.11.71 dev eth0
702 16 Anonymous
   daemon $GMOND
703 16 Anonymous
  }}}
704 16 Anonymous
  {{{
705 16 Anonymous
   #Remove multicast route to internal interface
706 16 Anonymous
   /sbin/route delete -host 239.2.11.71 dev eth0
707 14 Anonymous
   killproc gmond
708 14 Anonymous
  }}}
709 14 Anonymous
 * Make the Ganglia Monitoring Daemon start at bootup.
710 14 Anonymous
  {{{
711 14 Anonymous
   /sbin/chkconfig  gmond  on
712 14 Anonymous
  }}}
713 14 Anonymous
 * Start the Ganglia Monitoring Daemon:
714 14 Anonymous
  {{{
715 14 Anonymous
   /sbin/service  gmond  start
716 14 Anonymous
  }}}
717 14 Anonymous
  
718 14 Anonymous
=== Ganglia Meta Daemon ===
719 14 Anonymous
 * Install and configure the ''Ganglia Meta Daeomn'' (gmetad) on the head node.
720 14 Anonymous
 * Make the Ganglia Meta Daemon start at bootup.
721 14 Anonymous
  {{{
722 14 Anonymous
   /sbin/chkconfig  gmetad  on
723 14 Anonymous
  }}}
724 14 Anonymous
 * Start the Meta Meta Daemon:
725 14 Anonymous
  {{{
726 14 Anonymous
   /sbin/service  gmetad  start
727 14 Anonymous
  }}}
728 1 Anonymous
729 6 Anonymous
730 6 Anonymous
  
731 6 Anonymous
=== Further Customisation ===
732 6 Anonymous
In order to display more fine-grained time intervals, edit the following files in ''/usr/local/ganglia/html/'':
733 6 Anonymous
 * '''header.php'''
734 6 Anonymous
 {{{
735 6 Anonymous
  if (!$physical) {
736 6 Anonymous
   $context_ranges[]="10 minutes";
737 6 Anonymous
   $context_ranges[]="20 minutes";
738 6 Anonymous
   $context_ranges[]="30 minutes";
739 6 Anonymous
   $context_ranges[]="1 hour";
740 6 Anonymous
   $context_ranges[]="2 hours";
741 6 Anonymous
   $context_ranges[]="4 hours";
742 6 Anonymous
   $context_ranges[]="8 hours";
743 6 Anonymous
   $context_ranges[]="12 hours";
744 6 Anonymous
   $context_ranges[]="1 day";
745 6 Anonymous
   $context_ranges[]="2 days";
746 6 Anonymous
   $context_ranges[]="week";
747 6 Anonymous
   $context_ranges[]="month";
748 6 Anonymous
   $context_ranges[]="year";
749 6 Anonymous
 }}}
750 6 Anonymous
751 6 Anonymous
 * '''get_context.php'''
752 6 Anonymous
 {{{
753 6 Anonymous
  switch ($range) {
754 6 Anonymous
   case "10 minutes":   $start = -600; break;
755 6 Anonymous
   case "20 minutes":   $start = -1200; break;
756 6 Anonymous
   case "30 minutes":   $start = -1800; break;
757 6 Anonymous
   case "1 hour":       $start = -3600; break;
758 6 Anonymous
   case "2 hours":      $start = -7200; break;
759 6 Anonymous
   case "4 hours":      $start = -14400; break;
760 6 Anonymous
   case "8 hours":      $start = -28800; break;
761 6 Anonymous
   case "12 hours":     $start = -43200; break;
762 6 Anonymous
   case "1 day":        $start = -86400; break;
763 6 Anonymous
   case "2 days":       $start = -172800; break;
764 6 Anonymous
   case "week":         $start = -604800; break;
765 6 Anonymous
   case "month":        $start = -2419200; break;
766 1 Anonymous
   case "year":         $start = -31449600; break;
767 1 Anonymous
 }}}
768 1 Anonymous
769 4 Anonymous
770 1 Anonymous
== !JobMonarch ==
771 4 Anonymous
!JobMonarch is an add-on to Ganglia which provides PBS job monitoring through the web browser.
772 1 Anonymous
773 1 Anonymous
See [http://subtrac.rc.sara.nl/oss/jobmonarch/wiki/Documentation http://subtrac.rc.sara.nl/oss/jobmonarch/wiki/Documentation] for information on requirements, configuration and installation.
774 1 Anonymous
775 1 Anonymous
776 1 Anonymous
= Additional Software  =
777 1 Anonymous
778 1 Anonymous
== PERL Libraries ==
779 1 Anonymous
Please make sure that the following libraries are installed in the official library directory and install all depending libraries, if necessary. For ''Image::Magick'', use the corresponding libraries that come with the main installation.
780 1 Anonymous
781 18 Anonymous
782 18 Anonymous
||Error||  0.17008
783 18 Anonymous
||Config::Simple||4.58
784 18 Anonymous
||DBI||1.53||Remember to install DBD::mysql from the OS sources, too!
785 18 Anonymous
||CGI||3.25
786 18 Anonymous
||CGI::Session||4.13
787 18 Anonymous
||Data::!FormValidator||4.40
788 18 Anonymous
||HTML::Template||2.8
789 18 Anonymous
||HTML::Template::Pro||0.64
790 18 Anonymous
||MIME::Lite||
791 18 Anonymous
||!FreezeThaw||
792 18 Anonymous
||Storable||
793 18 Anonymous
||Time::Format||
794 18 Anonymous
||IMAP::Client||
795 18 Anonymous
||Time::Local||
796 18 Anonymous
||Clone||
797 18 Anonymous
||SOAP::Lite||
798 1 Anonymous
||Inline::Python||
799 1 Anonymous
800 4 Anonymous
	
801 4 Anonymous
PERL modules are installed best with the CPAN shell:
802 4 Anonymous
{{{
803 1 Anonymous
perl -MCPAN -eshell
804 1 Anonymous
}}}
805 1 Anonymous
806 1 Anonymous
807 1 Anonymous
808 1 Anonymous
809 4 Anonymous
== Third Party Executables for ProCKSI ==
810 4 Anonymous
Generate the following directories on each compute node to contain important executables:
811 5 Anonymous
{{{
812 4 Anonymous
/usr/local/procksi/Cluster/
813 5 Anonymous
/usr/local/procksi/DaliLite
814 4 Anonymous
/usr/local/procksi/MaxCMO
815 1 Anonymous
/usr/local/procksi/MolScript
816 1 Anonymous
}}}
817 4 Anonymous
818 4 Anonymous
For the following installation of the ProCKSI server components, the following executables must be present:
819 5 Anonymous
{{{
820 4 Anonymous
/usr/local/procksi/Cluster/qclust
821 4 Anonymous
/usr/local/procksi/DaliLite/DaliLite
822 4 Anonymous
/usr/local/procksi/MaxCMO/ProtCompVNS
823 4 Anonymous
/usr/local/procksi/molauto
824 1 Anonymous
/usr/local/procksi/molscript
825 1 Anonymous
}}}
826 1 Anonymous
827 1 Anonymous
828 1 Anonymous
== Image Software ==
829 4 Anonymous
830 4 Anonymous
=== Installation ===
831 1 Anonymous
   * Install ''!ImageMagick'' from [http://www.imagemagick.org www.imagemagick.org] if not already installed.
832 1 Anonymous
   * Install ''!MolScript'' from [http://www.avatar.se/molscript www.avatar.se/molscript]. Please link the MesaGL libraries instead of the OpenGL libraries; a modified makefile can be found under [source:ProCKSI/install/Makefile.molscript]
833 1 Anonymous
 
834 1 Anonymous
835 1 Anonymous
836 1 Anonymous
=== Virtual Display  ===
837 1 Anonymous
!MolScript needs an X display in order to generate images (jpg, gif, …). Its possible to use the console X display for the OpenGL bits even if it is not logged in. Therefore, ''procksi'' must be authenticated and allowed to use this X display virtually.
838 19 Anonymous
839 1 Anonymous
Get and unpack the ProCKSI x-authentication patch from [repos:Externals/Cluster/xauth.tgz].
840 4 Anonymous
841 4 Anonymous
On each node copy magic cookie file for x-authentication:
842 19 Anonymous
{{{
843 1 Anonymous
cp :0.Xauth /var/gdm/:0.Xauth
844 1 Anonymous
}}}
845 4 Anonymous
846 4 Anonymous
On each node copy scripts for automatic x-authentication:
847 19 Anonymous
{{{
848 19 Anonymous
cp procksixauth /usr/local/sbin/procksixauth
849 1 Anonymous
cp :0 /etc/gdm/Init/:0
850 1 Anonymous
}}}
851 4 Anonymous
852 4 Anonymous
Restart the X display manager for the changes to take effect:
853 4 Anonymous
{{{
854 1 Anonymous
/usr/sbin/gdm-restart
855 1 Anonymous
}}}
856 4 Anonymous
857 4 Anonymous
858 4 Anonymous
The virtual X display can be used with unix socket '':0'', e.g.:
859 4 Anonymous
{{{
860 1 Anonymous
molauto protein.pdb | DISPLAY=unix:0.0 molscript -jpeg -out protein.jpeg
861 1 Anonymous
}}}
862 1 Anonymous
863 1 Anonymous
864 1 Anonymous
= ProCKSI Server Component =
865 1 Anonymous
866 1 Anonymous
== Installation and Basic Configuration ==
867 1 Anonymous
This section describes the installation and configuration of the ProCKSI server component. This includes the configuration of the web server and the database.
868 1 Anonymous
869 1 Anonymous
The server component will be installed into the home directory of the user ''procksi''. Therefore, make sure that it is on a separate partition / hard disk with much space. In the best case, this will be a RAID system.
870 4 Anonymous
871 4 Anonymous
Get the latest release of the server component, referred to in the following as ''RELEASE'', and extract it into ''/home/procksi/RELEASE.'' 
872 4 Anonymous
{{{
873 1 Anonymous
tar -xvzf RELEASE.tgz
874 1 Anonymous
}}}
875 4 Anonymous
876 4 Anonymous
Create a softlink from ''RELEASE'' to a generic directory ''/home/procksi/latest''. This will be accessed by the web server:
877 4 Anonymous
{{{
878 1 Anonymous
ln -s /home/procksi/RELEASE /home/procksi/latest
879 1 Anonymous
}}}
880 4 Anonymous
881 4 Anonymous
In order to test new versions, referred in the following as ''TEST'', before taking them officially online, create a softlink from ''TEST'' to a generic directory ''/home/procksi/test''. This will be accessed by the web server:
882 4 Anonymous
{{{
883 1 Anonymous
ln -s /home/procksi/TEST /home/procksi/test
884 1 Anonymous
}}}
885 1 Anonymous
886 1 Anonymous
In case that you want to bring the test version online, just delete the softlinks and repeat the previous steps for the new release. Please make sure that always both softlinks exist!
887 4 Anonymous
888 4 Anonymous
Change into the administrative directory and run the installation script. Change the server settings, database settings and directory settings if necessary.
889 4 Anonymous
{{{
890 4 Anonymous
cd /home/procksi/latest/admin
891 1 Anonymous
./configure.pl
892 1 Anonymous
}}}
893 1 Anonymous
894 1 Anonymous
895 4 Anonymous
== Database Configuration ==
896 4 Anonymous
Make sure that the MySQL daemon is running, and that it will start at boot time:
897 4 Anonymous
{{{
898 4 Anonymous
/sbin/service mysqld start
899 4 Anonymous
/sbin/chkconfig --add mysqld
900 1 Anonymous
/sbin/chkconfig mysqld on
901 1 Anonymous
}}}
902 4 Anonymous
903 4 Anonymous
Make sure that you have access to the MySQL database management as ''root'' and login as user ''root ''with the corresponding password:
904 4 Anonymous
{{{
905 1 Anonymous
mysql -u root -p
906 1 Anonymous
}}}
907 4 Anonymous
908 4 Anonymous
Create new mysql users ''procksi_user ''and ''procksi_admin'':
909 4 Anonymous
{{{
910 4 Anonymous
USE mysql;
911 4 Anonymous
INSERT INTO user SET host='localhost', user='procksi_user', password=PASSWORD('''password_procksi_user''');
912 4 Anonymous
INSERT INTO user SET host='localhost', user='procksi_admin', password=PASSWORD('''password_procksi_admin''');
913 1 Anonymous
FLUSH PRIVILEGES;
914 4 Anonymous
}}}
915 1 Anonymous
916 1 Anonymous
Repeat these steps analogously for ''procksi0-priv'', ''procksi1-priv'', and ''procksi2-priv.''
917 1 Anonymous
918 1 Anonymous
919 4 Anonymous
920 4 Anonymous
Create a new database:
921 4 Anonymous
{{{
922 1 Anonymous
CREATE DATABASE procksi_latest;
923 1 Anonymous
}}}
924 1 Anonymous
925 4 Anonymous
926 4 Anonymous
Give privileges to users  ''procksi_user ''and ''procksi_admin'' for all compute nodes:
927 4 Anonymous
{{{
928 4 Anonymous
GRANT ALL ON procksi_latest.* TO procksi_admin@localhost WITH GRANT OPTION;
929 4 Anonymous
GRANT SELECT, UPDATE, INSERT, DELETE ON procksi_latest.* TO procksi_user@localhost;
930 4 Anonymous
GRANT ALL ON procksi_latest.* TO procksi_admin@procksi0.cs.nott.ac.uk WITH GRANT OPTION;
931 4 Anonymous
GRANT SELECT, UPDATE, INSERT, DELETE ON procksi_latest.* TO procksi_user@procksi0.cs.nott.ac.uk;
932 4 Anonymous
GRANT SELECT, UPDATE, INSERT, DELETE ON procksi_latest.* TO procksi_user@procksi1.cs.nott.ac.uk;
933 4 Anonymous
GRANT SELECT, UPDATE, INSERT, DELETE ON procksi_latest.* TO procksi_user@procksi2.cs.nott.ac.uk;
934 1 Anonymous
FLUSH PRIVILEGES;
935 1 Anonymous
}}}
936 1 Anonymous
937 1 Anonymous
If you change the password for ''procksi_user'', please make sure that you also change it in ''/home/procksi/latest/config/main.ini''
938 4 Anonymous
939 4 Anonymous
Import the main database ''procksi_latest'' from the backup given in ''/home/procksi/RELEASE/admin'':
940 4 Anonymous
{{{
941 1 Anonymous
msysql -u procksi_admin -p procksi_latest < procksi_latest.sql
942 1 Anonymous
}}}
943 1 Anonymous
944 1 Anonymous
In order to create a database ''procksi_test'' for the test version, repeat the previous steps and set the privileges accordingly.
945 1 Anonymous
   
946 1 Anonymous
947 1 Anonymous
948 1 Anonymous
== Web Server Configuration ==
949 4 Anonymous
Make the following changes to the Apache configuration file (''/etc/httpd/conf/httpd.conf''):
950 4 Anonymous
{{{
951 4 Anonymous
User  			procksi
952 4 Anonymous
Group 			procksi
953 4 Anonymous
ServerAdmin		procksi@cs.nott.ac.uk
954 4 Anonymous
ServerName 		procksi.cs.nott.ac.uk
955 4 Anonymous
DocumentRoot /home/procksi/latest/html
956 4 Anonymous
<Directory /home/procksi/latest/html">
957 4 Anonymous
   AllowOverride AuthConfig
958 4 Anonymous
</Directory>
959 4 Anonymous
LogFormat "%t %h %l %u \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
960 4 Anonymous
LogFormat "%t %h %l %u \"%r\" %>s %b" common
961 1 Anonymous
LogFormat "%t %{Referer}i -> %U" referer
962 4 Anonymous
LogFormat "%t %{User-agent}i" agent
963 4 Anonymous
964 1 Anonymous
#Exclude Logging of Ganglia Requests
965 4 Anonymous
SetEnvIf Request_URI "ganglia" ganglia
966 4 Anonymous
967 4 Anonymous
#
968 4 Anonymous
# The location and format of the access logfile (Common Logfile Format).
969 4 Anonymous
# If you do not define any access logfiles within a <VirtualHost>
970 4 Anonymous
# container, they will be logged here.  Contrariwise, if you *do*
971 4 Anonymous
# define per-<VirtualHost> access logfiles, transactions will be
972 1 Anonymous
# logged therein and *not* in this file.
973 5 Anonymous
#
974 1 Anonymous
975 4 Anonymous
CustomLog /home/procksi/latest/logs/access.log common env=!ganglia
976 4 Anonymous
977 4 Anonymous
#
978 4 Anonymous
# If you would like to have agent and referer logfiles, uncomment the
979 1 Anonymous
# following directives.
980 4 Anonymous
#
981 4 Anonymous
982 1 Anonymous
CustomLog /home/procksi/latest/logs/referer.log referer env=!ganglia
983 4 Anonymous
CustomLog /home/procksi/latest/logs/agent.log agent env=!ganglia
984 4 Anonymous
985 4 Anonymous
#
986 4 Anonymous
# For a single logfile with access, agent, and referer information
987 4 Anonymous
# (Combined Logfile Format), use the following directive:
988 1 Anonymous
#
989 4 Anonymous
#CustomLog logs/access_log combined env=!ganglia
990 1 Anonymous
991 4 Anonymous
ScriptAlias /cgi-bin/ /home/procksi/latest/cgi-bin/
992 4 Anonymous
993 4 Anonymous
<Directory "/home/procksi/latest/cgi-bin">
994 4 Anonymous
    AllowOverride None
995 4 Anonymous
    Options None
996 4 Anonymous
    Order allow,deny
997 1 Anonymous
    Allow from all
998 4 Anonymous
</Directory>
999 4 Anonymous
1000 4 Anonymous
Alias  /data/ 	  /home/procksi/latest/data/
1001 4 Anonymous
Alias  /images/   /home/procksi/latest/images/
1002 4 Anonymous
Alias  /styles/   /home/procksi/latest/styles/
1003 7 Anonymous
Alias  /applets/  /home/procksi/latest/applets/
1004 7 Anonymous
Alias  /scripts/  /home/procksi/latest/scripts/
1005 7 Anonymous
Alias  /ganglia/  /usr/local/ganglia/html/
1006 7 Anonymous
1007 1 Anonymous
#Redirection
1008 4 Anonymous
Redirect /trac https://psiren.cs.nott.ac.uk/projects/procksi/
1009 4 Anonymous
1010 4 Anonymous
AddLanguage de .de
1011 4 Anonymous
AddLanguage en .en
1012 4 Anonymous
AddLanguage es .es
1013 1 Anonymous
AddLanguage fr .fr 
1014 4 Anonymous
LanguagePriority en es de fr
1015 4 Anonymous
1016 4 Anonymous
Alias /errordocs/ "/home/procksi/errordocs"
1017 4 Anonymous
<IfModule mod_negotiation.c>
1018 4 Anonymous
    <IfModule mod_include.c>
1019 4 Anonymous
        <Directory /home/procksi/errordocs>
1020 4 Anonymous
            AllowOverride none
1021 4 Anonymous
            Options MultiViews IncludesNoExec FollowSymLinks
1022 5 Anonymous
            AddType text/html .shtml
1023 4 Anonymous
            <FilesMatch "\.shtml[.$]">
1024 4 Anonymous
                SetOutputFilter INCLUDES
1025 1 Anonymous
            </FilesMatch>
1026 4 Anonymous
        </Directory>
1027 4 Anonymous
1028 4 Anonymous
        ErrorDocument 400 /errordocs/400_BAD_REQUEST
1029 4 Anonymous
        ErrorDocument 401 /errordocs/401_UNAUTHORIZED
1030 4 Anonymous
        ErrorDocument 403 /errordocs/403_FORBIDDEN
1031 4 Anonymous
        ErrorDocument 404 /errordocs/404_NOT_FOUND
1032 4 Anonymous
        ErrorDocument 405 /errordocs/405_METHOD_NOT_ALLOWED
1033 4 Anonymous
        ErrorDocument 406 /errordocs/406_NOT_ACCEPTABLE
1034 4 Anonymous
        ErrorDocument 408 /errordocs/408_REQUEST_TIMEOUT
1035 4 Anonymous
        ErrorDocument 410 /errordocs/410_GONE
1036 4 Anonymous
        ErrorDocument 411 /errordocs/411_LENGTH_REQUIRED
1037 4 Anonymous
        ErrorDocument 412 /errordocs/412_PRECONDITION_FAILED
1038 4 Anonymous
        ErrorDocument 413 /errordocs/413_REQUEST_ENTITY_TOO_LARGE
1039 4 Anonymous
        ErrorDocument 414 /errordocs/414_REQUEST_URI_TOO_LARGE
1040 4 Anonymous
        ErrorDocument 415 /errordocs/415_UNSUPPORTED_MEDIA_TYPE
1041 4 Anonymous
        ErrorDocument 500 /errordocs/500_INTERNAL_SERVER_ERROR
1042 4 Anonymous
        ErrorDocument 501 /errordocs/501_NOT_IMPLEMENTED
1043 4 Anonymous
        ErrorDocument 502 /errordocs/502_BAD_GATEWAY
1044 4 Anonymous
        ErrorDocument 503 /errordocs/503_SERVICE_UNAVAILABLE
1045 4 Anonymous
        ErrorDocument 506 /errordocs/506_VARIANT_ALSO_VARIES
1046 1 Anonymous
    </IfModule>
1047 4 Anonymous
</IfModule>
1048 4 Anonymous
1049 4 Anonymous
<Location /server-status>
1050 4 Anonymous
    SetHandler server-status
1051 4 Anonymous
    Order deny,allow
1052 4 Anonymous
    Deny from all
1053 1 Anonymous
    Allow from .cs.nott.ac.uk
1054 4 Anonymous
</Location>
1055 4 Anonymous
1056 4 Anonymous
<Location /server-info>
1057 4 Anonymous
    SetHandler server-info
1058 4 Anonymous
    Order deny,allow
1059 4 Anonymous
    Deny from all
1060 1 Anonymous
    Allow from .cs.nott.ac.uk
1061 1 Anonymous
</Location>
1062 4 Anonymous
}}} 
1063 4 Anonymous
1064 4 Anonymous
Make sure that the server accepts connections to port 80. Check the firewall settings in  ''/etc/sysconfig/iptables'' for the following entry:
1065 4 Anonymous
{{{
1066 1 Anonymous
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
1067 1 Anonymous
}}}
1068 1 Anonymous
1069 4 Anonymous
1070 4 Anonymous
Make sure that the apache daemon is running, and that it will start at boot time:
1071 4 Anonymous
{{{
1072 4 Anonymous
/sbin/service httpd start
1073 4 Anonymous
/sbin/chkconfig --add httpd
1074 1 Anonymous
/sbin/chkconfig httpd on
1075 1 Anonymous
}}}
1076 1 Anonymous
1077 1 Anonymous
1078 1 Anonymous
1079 1 Anonymous
== Email Configuration ==
1080 1 Anonymous
The ProCKSI server component send emails to the user for several occasions. In order to make sure that they are delivered correctly even when the internet is temporarily not available, a local SMTP server (''postfix'') is set up. This will accect emails from the private network only, store them temporarily (if necessary), and forward them to an email relay server.
1081 1 Anonymous
1082 1 Anonymous
1083 4 Anonymous
1084 4 Anonymous
Make sure that ''postfix'' is the default mailing software (and not ''sendmail''!).
1085 4 Anonymous
{{{
1086 1 Anonymous
system-switch-mail -activate postfix
1087 1 Anonymous
}}}
1088 1 Anonymous
1089 4 Anonymous
Make the following changes to the ''postfix ''configuration file (''/etc/postfix/main.cf''):
1090 4 Anonymous
{{{
1091 4 Anonymous
myhostname = procksi0.cs.nott.ac.uk
1092 4 Anonymous
mydomain = cs.nott.ac.uk
1093 5 Anonymous
myorigin = $mydomai
1094 4 Anonymous
inet_interfaces = all
1095 4 Anonymous
mydestination = $myhostname, localhost.$mydomain, localhost
1096 4 Anonymous
mynetworks_style = subnet
1097 1 Anonymous
virtual_alias_maps = hash:/etc/postfix/virtual
1098 1 Anonymous
relayhost = marian.cs.nott.ac.uk
1099 4 Anonymous
}}}
1100 1 Anonymous
1101 4 Anonymous
Create or modify ''/etc/postfix/virtual'':
1102 4 Anonymous
{{{
1103 4 Anonymous
root        root@localhost
1104 1 Anonymous
postmaster  postmaster@localhost
1105 1 Anonymous
adm         root@localhost
1106 1 Anonymous
}}}
1107 4 Anonymous
1108 4 Anonymous
Generate the corresponding database file (''virtual.db''):
1109 4 Anonymous
{{{
1110 1 Anonymous
postmap /etc/postfix/virtual
1111 1 Anonymous
}}}
1112 4 Anonymous
1113 4 Anonymous
Make sure that the postfix daemon is running, and that it will start at boot time:
1114 4 Anonymous
{{{
1115 4 Anonymous
/sbin/service postfix start
1116 4 Anonymous
/sbin/chkconfig --add postfix
1117 1 Anonymous
/sbin/chkconfig postfix on
1118 1 Anonymous
}}}
1119 1 Anonymous
1120 1 Anonymous
Make sure that the firewall is not open for port 25 or port 28!
1121 1 Anonymous
1122 1 Anonymous
Check that the STMTP server in ''/home/procksi/latest/conf/main.ini'' is set correctly set to ''procksi0.cs.nott.ac.uk''
1123 1 Anonymous
1124 1 Anonymous
1125 1 Anonymous
1126 1 Anonymous
== Garbage Cleanup Scheduling ==
1127 1 Anonymous
After a certain period of time, given in ''/home/procksi/latest/conf/main.ini'', sessions and requests expire and must be deleted. 
1128 1 Anonymous
1129 4 Anonymous
Edit ''procksi's'' crontab file taking effect for the ''latest'' and ''test'' version:
1130 4 Anonymous
{{{
1131 4 Anonymous
crontab -e
1132 4 Anonymous
  0-59/1 * * * * /home/procksi/latest/cron/check_sessions.sh
1133 1 Anonymous
  1-59/1 * * * * /home/procksi/latest/cron/check_tasks.sh
1134 1 Anonymous
  2-59/1 * * * * /home/procksi/latest/cron/check_requests.sh
1135 4 Anonymous
}}}
1136 1 Anonymous
1137 1 Anonymous
Analogously for ''/home/procksi/test''.
1138 1 Anonymous
1139 1 Anonymous
1140 1 Anonymous
1141 4 Anonymous
== Linking External Software ==
1142 4 Anonymous
Make sure that all links in ''/home/procksi/latest/bin'' point to the correct files of the operating system: 
1143 4 Anonymous
{{{
1144 1 Anonymous
sh, compress, bzip2, gzip, zip, ppmz, qsub
1145 1 Anonymous
}}}
1146 1 Anonymous
1147 4 Anonymous
1148 1 Anonymous
Make sure that all further executable links in ''/home/procksi/latest/bin'' point to the correct files on the file system: 
1149 4 Anonymous
{{{
1150 1 Anonymous
 exec_cluster, exec_!DaliLite, exec_MaxCMO, exec_molauto, exec_molscript
1151 1 Anonymous
}}}