最近为了做实验,需要进行集群的配置,虽然十个节点的集群不算多,但是还是用它来减轻负担。但在使用的过程中,发现网上虽然有资料,但大多都没能很好的解决在使用过程中遇到的问题,在此做一记录,以备后续参考,也望众位高人指点~
首先说明,我们这里的节点组ip列表为:
1 172.31.42.68~172.31.42.77
第一步:前序
为了后面的操作更具连贯性,要在节点之间配置进行无密码,我们选择了 .68 的机器为master,其它的节点作为slave,后续没有特殊说明,操作都是在此节点上进行。
1. 产生公钥和私钥
1 ssh-keygen -t rsa
在这一过程中直接按回车键,将产生本机器的公私钥对,保存在~/.ssh下。
2. 分发master的公钥到各个slave节点
1 ip=172.31.47. 2 for i in $(seq 69 77) 3 do 4 ssh $ip$i -C mkdir /home/edmonds/.ssh 5 scp ~/.ssh/id_rsa.pub $ip$i:/home/edmonds/.ssh/authorized_keys 6 done
通过上述两步,应该已经能够从master无密码访问slave节点了,从slave节点无密码访问master节点,等并行ssh工具安装好后进行配置
第二步:安装parallel ssh,并进行简单的配置
1. 从参考2处下载,并安装:
1 git clone http://code.google.com/p/parallel-ssh/ 2 cd parallel-ssh 3 python setup.py build 4 sudo python setup.py install
2. 简单配置
1 touch ~/slaves_list.txt 2 vim ~/slaves_list.txt 3 #insert following content 4 172.31.47.69 5 172.31.47.70 6 172.31.47.71 7 172.31.47.72 8 172.31.47.73 9 172.31.47.74 10 172.31.47.75 11 172.31.47.76 12 172.31.47.77
第三步:使用
1. 远程安装软件包
在集群管理过程中,往往会遇到需要安装软件包的情况。这里以ubuntu系统为例,我们知道在 sudo apt-get install 的过程中,需要输入Y来确认安装,在pssh环境下,需要如下处理:
1 pssh -h slaves_list.txt -P "sudo apt-get install -y g++"
这时,可能由于你的slave机器的网络或者其他原因,可能会导致超时,这时候pssh客户端会结束掉进程,所以如果你不能保证很快完成的命令,则指定超时时间,如下
1 pssh -h slaves_list.txt -t 1200 -P "sudo apt-get install -y libboost-dev"
这里的1200是以秒为单位计算的,至于其他的参数直接pssh --help吧~
2.远程多命令执行
有时需要进行多个命令的操作,为了更加明晰,可以如下:
1 pssh -h slaves_list.txt -t 12000 -P "cd ~/soft/tbb43_20141204oss/build;chmod +x *.sh;sh generate_tbbvars.sh;sh tbbvars.sh"
在使用过程中主要就遇到上述两个问题,一是在节点机器上需要输入操作怎么办,用-xxx来指定,一是多命令如何一次性指派完成。
至于其他的常用工具如pscp,psync,pslurp,pnuke都很类似,这里不再举例,有需要的看看帮助就搞定啦~
Reference: