Difference between revisions of "Distcc Setup"

From CDOT Wiki
Jump to: navigation, search
(Team A)
(OOo Category)
 
(37 intermediate revisions by 9 users not shown)
Line 7: Line 7:
  
 
The goal is to eventually set up distcc on all Linux boxes in CDOT, so compiling on any of the computers is distributed on all others.
 
The goal is to eventually set up distcc on all Linux boxes in CDOT, so compiling on any of the computers is distributed on all others.
 
Initially we are going to have three teams to set up distcc on 2 or 3 computers at a time and then expand the set up to all the computers.
 
  
 
= Resources =
 
= Resources =
Line 19: Line 17:
 
(add more)
 
(add more)
  
= Teams =
+
== Assigned machine ==
(edit this page as you see fit)
 
== Team A ==
 
  
* Setting up Ireland 133.26 , Australia 133.24 , Germany 133.102, (one more to come)
+
* Ireland (142.204.133.26) - Tested & Working - [[User:Minicheong|Frankie Law]] (irc Mini_Cheong), [[User:dmoon4|Daeseon Moon]] (irc daeseon)
** Andrew Braini (aBraini)
+
* Germany (142.204.133.102) - Tested & Working - Andrew Braini(aBraini)
** [[User:dmoon4|Daeseon Moon]] (daeseon)
+
* Australia (142.204.133.24) - Tested & Working - [[User:wfred|Fred Wang]] (WFred)
** [[User:Minicheong|Frankie Law]] (irc Mini_Cheong)
+
* China (142.204.133.36) - Tested & Working - Aaron Chan (achan66)
** Bartosz Barcicki (irc nick?)
+
* Liberia (142.204.133.123) - Tested & Working - [http://lzahir.blogspot.com/2009/01/my-distcc-setup-and-distributed.html Ladan Zahiroleslam] (irc: l_zahir, LZahir)
 +
* Hongkong (142.204.133.30) - Tested & Working - [[User:jtpau|Jerry Pau]] (jPau)
 +
* India (142.204.133.28) - Tested & Working - [[User:rmwang|Ryan Wang]] (rmwang), [[User:Tiago|Tiago Moreira]] (Kamots)
  
 
'''Status'''
 
'''Status'''
* Ireland is setup (server and client)
+
* '''India'''
* Australia is setup (server and client)
+
** network connection went down again around 2pm, could not complete distcc setup --- [[User:Tiago|Tiago]]
* Germany is setup (server and client)
+
** Ran through tutorial on Australia and it seemed good. I managed to compile Apache --- [[User:Tiago|Tiago]]
* Tried compilation with both Ireland and Australia and Germany. Distcc on any should compile on all three.
 
* Check [http://daeseonmoon.wordpress.com/ Deaseon's blog]
 
  
== Team B ==
+
*'''Germany'''
 +
** distccd user created, hosts file setup, tested and working on Thu 29 Jan, 2009 --- [[User:Arbraini|ABraini]]
  
* Setting up China 142.204.133.36 , India 142.204.133.28
+
*'''Australia'''
** Ryan Wang (rmwang)
+
** distccd is running under distcc account
** Aaron Chan (achan66)
+
*** hosts file setting done
** Fred Wang (WFred)
+
*** user "distcc" created for running distccd. --- [[User:dmoon4|Daeseon Moon]]
  
(log your work here)
+
*'''Hong Kong'''
 +
** distcc user created, hosts file setup done
  
== Team C ==
+
*'''Ireland'''
 +
** distcc user created, hosts file setup done
  
* Setting up Hongkong 133.30, Liberia 133.123
+
*'''India'''
** [http://lzahir.blogspot.com/ Ladan Zahiroleslam] (irc: l_zahir, LZahir)
+
** distcc user created
** Tiago Moreira (irc nick?)
+
** hosts file modified
** Your name goes here (irc nick?)
 
  
(log your work here)
+
*'''Liberia'''
 +
** distcc user created
 +
** hosts file modified
 +
 
 +
*'''China'''
 +
** distcc user created
 +
** hosts file modified
  
 
= distcc Setup Steps  =
 
= distcc Setup Steps  =
Line 61: Line 65:
 
'''Configuration'''
 
'''Configuration'''
  
On the server machine the distcc daemon(distccd) needs to be started.  At prompt as root type "distccd –-daemon –-user YOURUSERNAME –-allow 142.204.133.24/26"
+
Create a new user the daemon will run under without a home dir or workgroup
 +
<pre>$ adduser distcc -N -M </pre>
  
 +
Start the distcc daemon
 +
<pre>$ distccd --daemon --user distcc --allow 142.204.133.0/24</pre>
 
Argument --user is if distccd gets executed as root, change to user USER, --allow IPADDR[/MASK] instructs distccd to accept connections from the IP address. A CIDR mask length can be supplied optionally after a trailing slash, e.g. 192.168.0.0/24, in which case addresses that match in the most significant MASK bits will be allowed.
 
Argument --user is if distccd gets executed as root, change to user USER, --allow IPADDR[/MASK] instructs distccd to accept connections from the IP address. A CIDR mask length can be supplied optionally after a trailing slash, e.g. 192.168.0.0/24, in which case addresses that match in the most significant MASK bits will be allowed.
  
Now we need to setup the IPTABLES to allow connections to the distcc daemon.  Before doing anything make a backup file of the original iptables file located in /etc/sysconfig/iptables. To do this we simply type “cp /etc/sysconfig/iptables [backupfile name]“.  To allow connections type “iptables -I INPUT 7 -i eth0 -p tcp -s 142.204.133.24/26 –dport 3632 -j ACCEPT”. To apply type “service iptables save”.
+
Now we need to setup the IPTABLES to allow connections to the distcc daemon.  Before doing anything make a backup file of the original iptables file located in /etc/sysconfig/iptables.  
 +
<pre>$ cp /etc/sysconfig/iptables [backupfile name]
 +
$ iptables -I INPUT 7 -i eth0 -p tcp -s 142.204.133.0/24 --dport 3632 -j ACCEPT
 +
$ service iptables save </pre>
 +
 
 +
*Important Note: It seems the -I INPUT 7 argument is confusing a lot of people.  -I INPUT 7 was used in Daeson's case for the machine he was working on at the time, however this may not be the same for all machines.  In Daeson's case there was a REJECT line in the INPUT CHAIN at line 8.  So in order for us to get our port open we need to insert ie. -I into the INPUT CHAIN at line 7 before the REJECT line.  On Machines with an INPUT CHAIN shorter then 7 lines this will cause an error.  On machines without a REJECT line a simple "-A" appened aurgument can take the place of "-I INPUT 7".  On a machine with a REJECT INPUT on a line before 8 you simply need to change the number to one smaller as long as it is before the REJECT line.
 +
 
 +
** I'm not sure if we need to do this command, because if the file "HOSTS" at /etc/distcc/ is configured to have all the hosts name - distcc seems to distribute all compilation throughout the hosts.  
  
 
Argument -I is insert and -i is and network interface device and -p is protocol -s is source ipaddress and subnet, –dport is destination port and -j is rule.
 
Argument -I is insert and -i is and network interface device and -p is protocol -s is source ipaddress and subnet, –dport is destination port and -j is rule.
  
On the client machine the server names need to be added to the host environment variable DISTCC_HOSTS. Ex: “export DISTCC_HOSTS=’ireland australia’”
+
On the client machine the server names need to be added to the hosts listed in the file located at
 +
<pre>/etc/distcc/hosts</pre>
  
 +
To close/shut down the daemon (do not unless needed)
 +
<pre>$ service distccd stop</pre>
 
'''Testing'''
 
'''Testing'''
  
Line 91: Line 108:
 
* creating new distccd user with no home-dir for daemon
 
* creating new distccd user with no home-dir for daemon
 
* things forgotten or left out.
 
* things forgotten or left out.
 +
== How to compile with distcc ==
 +
 +
[[Category:OpenOffice.org]]

Latest revision as of 15:05, 11 May 2009

Task Name

Setting up distcc, distributed compilation for c/c++ compilers on Linux machines in CDOT.


Task Description

The goal is to eventually set up distcc on all Linux boxes in CDOT, so compiling on any of the computers is distributed on all others.

Resources

DistCC Cross-compiling Guide
Frequently asked questions
Linux Knowledge Base: DistCC
DistCC User Manual
Deaseon Moon's Blog
(add more)

Assigned machine

  • Ireland (142.204.133.26) - Tested & Working - Frankie Law (irc Mini_Cheong), Daeseon Moon (irc daeseon)
  • Germany (142.204.133.102) - Tested & Working - Andrew Braini(aBraini)
  • Australia (142.204.133.24) - Tested & Working - Fred Wang (WFred)
  • China (142.204.133.36) - Tested & Working - Aaron Chan (achan66)
  • Liberia (142.204.133.123) - Tested & Working - Ladan Zahiroleslam (irc: l_zahir, LZahir)
  • Hongkong (142.204.133.30) - Tested & Working - Jerry Pau (jPau)
  • India (142.204.133.28) - Tested & Working - Ryan Wang (rmwang), Tiago Moreira (Kamots)

Status

  • India
    • network connection went down again around 2pm, could not complete distcc setup --- Tiago
    • Ran through tutorial on Australia and it seemed good. I managed to compile Apache --- Tiago
  • Germany
    • distccd user created, hosts file setup, tested and working on Thu 29 Jan, 2009 --- ABraini
  • Australia
    • distccd is running under distcc account
      • hosts file setting done
      • user "distcc" created for running distccd. --- Daeseon Moon
  • Hong Kong
    • distcc user created, hosts file setup done
  • Ireland
    • distcc user created, hosts file setup done
  • India
    • distcc user created
    • hosts file modified
  • Liberia
    • distcc user created
    • hosts file modified
  • China
    • distcc user created
    • hosts file modified

distcc Setup Steps

Installation

To install distcc using yum log on as root "su -" and type “yum search distcc”. Two packages available, install both to run as both client and server. At prompt type “yum install distcc-server” to install server package and “yum install distcc” for client package.

Configuration

Create a new user the daemon will run under without a home dir or workgroup

$ adduser distcc -N -M 

Start the distcc daemon

$ distccd --daemon --user distcc --allow 142.204.133.0/24

Argument --user is if distccd gets executed as root, change to user USER, --allow IPADDR[/MASK] instructs distccd to accept connections from the IP address. A CIDR mask length can be supplied optionally after a trailing slash, e.g. 192.168.0.0/24, in which case addresses that match in the most significant MASK bits will be allowed.

Now we need to setup the IPTABLES to allow connections to the distcc daemon. Before doing anything make a backup file of the original iptables file located in /etc/sysconfig/iptables.

$ cp /etc/sysconfig/iptables [backupfile name]
$ iptables -I INPUT 7 -i eth0 -p tcp -s 142.204.133.0/24 --dport 3632 -j ACCEPT
$ service iptables save 
  • Important Note: It seems the -I INPUT 7 argument is confusing a lot of people. -I INPUT 7 was used in Daeson's case for the machine he was working on at the time, however this may not be the same for all machines. In Daeson's case there was a REJECT line in the INPUT CHAIN at line 8. So in order for us to get our port open we need to insert ie. -I into the INPUT CHAIN at line 7 before the REJECT line. On Machines with an INPUT CHAIN shorter then 7 lines this will cause an error. On machines without a REJECT line a simple "-A" appened aurgument can take the place of "-I INPUT 7". On a machine with a REJECT INPUT on a line before 8 you simply need to change the number to one smaller as long as it is before the REJECT line.
    • I'm not sure if we need to do this command, because if the file "HOSTS" at /etc/distcc/ is configured to have all the hosts name - distcc seems to distribute all compilation throughout the hosts.

Argument -I is insert and -i is and network interface device and -p is protocol -s is source ipaddress and subnet, –dport is destination port and -j is rule.

On the client machine the server names need to be added to the hosts listed in the file located at

/etc/distcc/hosts

To close/shut down the daemon (do not unless needed)

$ service distccd stop

Testing

Open two SSH connections into the client machine.

In Terminal 1 enter:

$ distccmon-text 1

In Terminal 2 enter:

$ wget http://apache.mirror.rafal.ca/httpd/httpd-2.2.11.tar.gz
$ tar xzvf httpd-2.2.11.tar.gz
$ cd httpd-2.2.11
$ CC=distcc ./configure
$ make -j9 CC=distcc >log 2> error 

(complete this collaboratively) TO-DO

  • hosts saved in hosts file
  • better formatting
  • creating new distccd user with no home-dir for daemon
  • things forgotten or left out.

How to compile with distcc