免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 735 | 回复: 0
打印 上一主题 下一主题

分布式部署 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-23 20:17 |只看该作者 |倒序浏览

前言

  • 我们机器在绝大多数时间是空闲的,如果你在Windows下用任务管理器或其他的Linux平台观察CPU,你会看到CPU的使用率常见在1~2%,如果能利用现有的计算机资源,把空闲的CPU利用起来,或者能让服务器智能的迁移负荷,加快我们的编译速度,就是我们部署distcc的理由。


  • 分布式集群中的节点需要硬件尽可能的一致,不一致的硬件集群称为异构集群,虽然这并不能改变集群的特性,但是异构导致集群会花费额外的时间来处理由于异构带来的延迟,另一方面这也是集群的优势,任何其他的多CPU系统都是严格要求CPU是一致的,集群就有足够的自由度增减节点,不受类型的限制。


  • 本次部署选择distcc作为集群的方案,架构集群并没有想象中那样复杂,参考下面的步骤可以一步步的架构集群,整个的方案并不是很昂贵,而且便于扩展。使用ubuntu是因为这是完全free的版本,不论是初学者还是专业工作者,都可以在ubuntu中定制自己的版本。

硬件环境:Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz ,黑金刚1G×2, 华硕P5B-E plus , WD250G SATA (7200转)16M
Intel(R) Core(TM)2 CPU6300@ 1.86GHz, 1GDDR ,华硕 P5B-VM, WD80SATA
24口100MB交换机(需 一个千兆口模块)
5类线,按照693A压1米网线3根
显示器,键盘,鼠标仅在安装时使用
Kvm-4A
DVD usb光驱
安装所有硬件,并能确保可以从光盘启动服务器系统,检查BIOS的启动设置,并确认可以正确启动。连接好电源后,使用kvm把两台服务器连到一套显示器和键盘鼠标上。
软件环境和必要的安装包(除特殊说明外,高版本不一定适用)
Linux Ubuntu6.6server(免费下载
http://mirror.lupaworld.com/ubuntu/releases/6.06/)
vsftpd
Distcc-2.18.3.tar.bz2
Ccache-2.3.tar.gz
Gcc4.0.tar.gz
G++4.0.tar.gz
Make
1.安装ubuntu 6.0.6 server 版本在所有的服务器上,分区使用自动分区(比较简单,本文不讨论Linux其他问题),选择server安装,这样可以把系统占用的空间减少到最小,额外需要的软件包,可以在系统正常启动后手动安装。 2.在主服务器上部署编译农场环境:安装make ,gcc,g++,ppc-eabi,sde-eabi 启用ngcf 编译农场服务 (具体参见前页编译农场部署)
3.搭好ftp服务器 (具体参见前页编译农场部署)
4.在每台服务器上创建ngcf 用户,并分配到ngcf组中
网络配置环境
首先用网线连接交换机和各节点,交换机再连到局域网中
主服务器 IP 192.168.201.49 网关192.168.201.1
节点服务器IP 192.168.201.39 网关 192.168.201.1
有多台节点服务器时最好在主服务器上配DHCP

  • 在服务器上配置IP及网关
编辑interface 配置文件
sudo vi /etc/network/interfaces  //这个应该是决定是否启用这个端口
auto eth0//静态设置
iface eth0 inet static
address 192.168.201.39
netmask 255.255.255.0
gateway 192.168.201.1
最后  需要重启下网络设备  sudo /etc/init.d/netwoking restart
架构distcc分布式集群当以上条件都具备时,可以开始架构distcc分布式集群。
1.在每台机器上都安装distcc包,注意操作步骤的准确性:
A.将所有下载的软件包上载到服务器的/home目录下,确认下载的软件包是完整的
B.解压软件包 tar xvfz distcc-2.18.3.tar.bz2
C.安装ditcc软件包  #./configure –help (仔细看下帮助)
# Mkdir /usr/local/distccserver
# ./configure –prefix=/usr/local/distccserver----(#设置软件的安装目录)
#Make
#make install
在运行#./configure [options]配置软件后,它会根据你当前系统、编译、安装相关的信息,生成一个安装配置文件Makefile。Makefile文件通常是用来编译和安装软件的,运行make命令时系统会自动根据Makefile文件中的设置对软件进行编译和安装,如果编译能够顺利通过的话,运行#makeinstall命令来安装。
D.把 /usr/local/distccserver/bin下的distcc , distccd ,distccmon-text ,三个文件拷到 /usr/local/bin目录下
(验证:如果输入文件的前几个字母 如 disc 再按TAB键 出现discc disccd等提示说明已经安装好distcc)
E. 设置环境变量
vi /etc/environment
添:/usr/local/distccserver/bin:
2.完成以上步骤后开始配置distcc

  • 主控服务器配置:
a.建masquerade directory
Mkdir /home/data/ngcf/distcc
Cd /home/data/ngcf/distcc
b.在/home/data/ngcf/distcc下建伪装链接 ppc-eabi-gcc , sde-gcc
Vi  ppc-eabi-gcc
#!/bin/sh
distcc /usr/local/ppc-eabi/bin/ppc-eabi-gcc $*  
vi sde-gcc
#!/bin/sh
distcc /usr/local/sde/bin/sde-gcc $*
c.建一个启动distccd的脚本
Mkdir /home/data/ngcf/distccd
Cd /home/data/ngcf/distccd
Vi start-distccd
#!/bin/sh
distccd --daemon --pid-file /home/data/ngcf/distccd/distccd.pid --allow 0.0.0.0/0 (允许访问本机的Ip地址,这里表示所有)
d.打开多任务编译
在makes脚本中添加
     export QUIET=1
    export MAKEFLAGS="-j8 -i -k --no-print-directory"
-j 标志告诉 ppc-eabi-gcc 一次需要编译多少任务。
e.完成以上操作后 可以开始启用distcc
  ◆#Su ngcf  (注意要用ngcf帐号 启用distcc)
  ◆需要设置PATH   export PATH=/home/data/ngcf/distcc:$PATH
  ◆设置主机列表export DISTCC_HOSTS="192.168.201.49/4 localhost/2 192.168.201.47/2"
  ◆ 启用distcc
Cd  /home/data/ngcf/distccd
./start-distccd
f.使用top查看进程 确认distccd已经启动
查看PATH 确认路径正确$echo $PATH
查看distcc_hosts 确认列表正确$echo $DISTCC_HOSTS
g.当以上都确认后可以开始测试编译了
这里选择 s86v2_11398版本
#Cd /home/data/ngcf/src/trunk./project/mail/s86v2/
#./makes
h.上面的设置都是手工操作,我们当然希望能够让distcc自动运行啦~所以我们要在ngcf的config.py中设置环境变量,使得从ftp上传编译任务时,自动调用distcc服务
environ = {
    'PATH':'/home/data/ngcf/distcc:/usr/local/ccache/bin:/usr/local/ppc-  eabi/bin:/usr/local/sde/bin:/usr/local/bin:/usr/bin:/bin',
    'LANG':'en_US.UTF-8',
    'LANGUAGE':'en_US:en',
    'QUIET':'1',
    'MAKEFLAGS':'-j 8 -i -k --no-print-directory'

  • 节点服务器配置
节点服务器上部署所需要的编译环境,及安装并启动distccd 即可.
创建启动脚本
Vi start-distccd
#!/bin/sh
distccd --daemon --pid-file /home/data/ngcf/distccd/distccd.pid --allow 192.168.201.49/0  (允许主控服务器访问)

  • distcc 有自带的任务监视器,让我们来看一看 distcc 监视器,看它正在做什么:
#distccmon-text 0 3
5338  Compile     minilzo.c             192.168.201.39 [1]
5363  Preprocess  prefork.c             192.168.201.39 [2]
5360  Compile     ncpus.c               192.168.201.39 [0]
5352  Compile     dparent.c                   localhost[1]
5356  Compile     dsignal.c                   localhost[2]
5349  Compile     dopt.c                     localhost [0]
使用 distcc 监视器,我们可以观察到哪个节点上正在编译哪个文件。右边节点名后面的数字指出了它是第n个当前编译文件.

  • 关于版本还有最后一个注意事项。如果能保持对 distcc 集群中的所有节点使用相同副版本号的 ppc-eabi-gcc,则 distcc 程序可以获得最佳工作状态;如果这些节点使用的是不同副版本号,则可能会导致编译不稳定,甚至可能导致编译过程完全失败,因为已经修改的部分 gcc 足以产生这样的后果.

总结那么,最后我们来总结一下这个过程:
◆准备好硬件
◆准备好所需的软件包
◆搭好网络环境
◆在所有您想用来编译的机器上安装 distcc
◆启动每台机器上的 distcc 新进程
◆注意设置环境变量
◆用变量名导出 DISTCC_HOSTS 环境变量
◆使用 make -j n 来进行编译,其中,n 是DISTCC_HOSTS中机器数目的两到三倍
◆启动 distcc 监视器(这样就可以观察正在发生什么事!)


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/37473/showart_366340.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP