一、前言
今天搭建了三台虚拟机的集群,在集群中部分操作在三台虚拟机上的操作都一致,为了提高效率,就需要配置xsync实现集群分发。
二、设置免密登录
1.生成公钥和私钥
ssh-keygen -t rsa
一直敲回车,会生成两个文件,其中 /root/.ssh/id_rsa 是私钥,/root/.ssh/id_rsa.pub 是公钥。
2. 将公钥拷贝到要免密登录的目标机器上
ssh-copy-id lvc_sy009077
ssh-copy-id lvc_sy254203
ssh-copy-id lvc_sy254204
按照提示输入密码
至此,免密登录已经配置完成。
三、xsync集群分发
1.为每台主机设置hostname
使用命令
vi /etc/hostname
直接在控制台输入服务器名,例如我的三台是 lvc_sy009077 lvc_sy254203 lvc_sy254204
2. 配置host文件
试用命令
vi /etc/hosts
其中,前面是每台服务器或虚拟机的ip,后面为设置的hostname, 将所有的集群名称都加入到/etc/hosts中。
3.下载 rsync 脚本
yum install -y rsync
4. 编写 xsync 脚本
使用下面命令在 /usr/local/bin 下创建 xsync 文件。
cd /usr/local/bin
vi xsync
在xsync中复制如下脚本
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
# 2.遍历集群所有机器
for host in hadoop001 hadoop002 hadoop003
do
echo ==================== $host ====================
# 3.遍历所有目录,挨个发送
for file in $@
do
# 4.判断文件是否存在
if [ -e $file ]
then
# 5.获取父目录
pdir=$(cd -P $(dirname $file); pwd)
# 6.获取当前文件的名称
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file does not exists!
fi
done
done
执行授权命令:
chmod +x /usr/local/bin/xsync
将 xsync 进行分发
xsync /usr/local/bin
请注意集群分发是将当前目录下文件分发至其他节点的相同目录