背景
在配置zookeeper集群的过程中,通常需要把一份配置文件复制到其他几个机器上,显然很麻烦。为了方便,我们利用rsync工具来减少重复的工作。
zookeeper集群ip地址映射关系
10.45.48.166 kelly101
10.45.48.110 kelly102
10.45.48.221 kelly103
复制代码
把三台集群的ip地址和名称映射写入hosts文件
vim /etc/hosts
复制代码
rsync 远程同步工具
rsync远程同步工具,主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点,它只是拷贝文件不同的部分,因而减少了网络负担。
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
命令 选项参数 要拷贝的文件路径/名称 目的用户@主机:目的路径
复制代码
常用参数:
-
-r: –recursive 对子目录以递归模式处理
-
-R: –relative 使用相对路径信息
-
-l: –links 保留软链结
-
-v: –verbose 详细模式输出,传输过程可见
xsync同步脚本
在/usr/local/bin目录下创建xsync文件, 添加如下内容:
#!/bin/bash
# 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args...;
exit;
fi
# 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
# 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
# 获取当前用户名称
user=`whoami`
# 循环
for((host=101; host<=103; host++)); do
echo $pdir/$fname $user@kelly$host:$pdir
echo ==================kelly$host==================
rsync -rvl $pdir/$fname $user@kelly$host:$pdir
done
#Note:这里的kelly对应自己主机名,需要做相应修改。另外,for循环中的host的边界值由自己的#主机编号决定。
复制代码
调用脚本测试,就能将zoo.cfg文件分发到集群中的各个节点中。
xsync zoo.cfg
复制代码
如果不能执行,可以修改xsync文件的权限
chmod a+x xsync
复制代码
或者将你的xsync文件移到usr/local/bin目录下。