余子越的博客
Toggle navigation
余子越的博客
主页
计算机网络
大数据分析
系统与工具
编程之路
容器引擎
作者
归档
标签
集群内快速同步配置
2020-11-21 18:28:22
22
0
0
yuziyue
# 一. 场景再现 在多数集群中,节点的配置必须保持一致,一旦管理节点修改了配置,就需要把配置同步到其他节点,通常情况下是下面这样的,它的缺点是每次都需要写全路径。 ``` scp -r /path/conf node1:/path/conf scp -r /path/conf node2:/path/conf scp -r /path/conf node3:/path/conf ``` # 二. 解决方法 使用 `rsync` 命令同步,同时自动获取到文件的绝对路径,脚本如下 ## 2.1 同步配置文件 `sudo vim /usr/bin/xsync` `sudo chmod +x /usr/bin/xsync` ``` #!/bin/bash [ $# -lt 1 ] && { echo Not Enough Arguement!; exit 1; } # nodes must can login without password nodes=(node1 node2 node3) echo -n "Action Executing ON HOSTS: ${nodes[@]}, [yes/no] " read input [ "$input" == "yes" ] || exit 1 for host in "${nodes[@]}" do echo ============================== sync to $host ============================== for file in $@ do if [ -e $file ]; then pdir=$(cd -P $(dirname $file); pwd) fname=$(basename $file) ssh $host "mkdir -p $pdir" rsync -avpz $pdir/$fname $host:$pdir else echo $file does not exists! fi done done ``` <br> ## 2.2 远程执行命令 `sudo vim /usr/bin/xcmd` `sudo chmod +x /usr/bin/xcmd` ``` #!/bin/bash [ $# -lt 1 ] && { echo Not Enough Arguement!; exit 1; } # nodes must can login without password nodes=(node1 node2 node3) echo -n "Action Executing ON HOSTS: ${nodes[@]}, [yes/no] " read input [ "$input" == "yes" ] || exit 1 for host in "${nodes[@]}" do echo ============================== cmd on $host ============================== cdir="$(pwd)" ssh $host "cd $cdir; $@" done ``` <br> # 三. 使用示例 - **注意**: - 配置当前用户(普通用户)的免密登录。 - 用 root 用户配置免密登录其他的所有节点。 ``` # 需要root权限的同步 /etc/profile sudo xsync /etc/profile # 同步当前目录的tmpfile xsync tmpfile # 远程执行需要root权限的命令 xcmd ls /root # 远程执行命令,特殊字符用双引号 xcmd "echo hello > /tmp/tmpfile" ``` <br><br><br>
上一篇:
hive快速入门
下一篇:
CentOS包管理工具总结
0
赞
22 人读过
新浪微博
微信
腾讯微博
QQ空间
人人网
文档导航