InstallationGuide » History » Version 21

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