集群分发脚本xsync

1.环境准备
1.准备三台服务器(我这里使用虚拟机,操作系统 CentOS7 )它们的IP分别为 192.168.188.135、192.168.188.136、192.168.188.137

2.先将三台机器的主机名修改,为每台主机设置hostname(具体名称由自己定义),分别在不同的机器下执行:

# 修改192.168.188.135 node1-zookeeper
[root@node1-zookeep etc]# vi hostname 
[root@node1-zookeep etc]# cat hostname
node1-zookeeper
 
# 修改 192.168.188.136 node2-zookeeper
[root@node2-zookeep etc]# vi hostname 
# 查看
[root@node2-zookeep etc]# cat hostname
node2-zookeeper
 
# 修改 192.168.188.137 node3-zookeeper
[root@node3-zookeep etc]# vi hostname 
# 查看
[root@node3-zookeep etc]# cat hostname
node3-zookeeper
3.改完之后将每台服务器的对应信息添加到hosts文件中

vim /etc/hosts
# 添加以下内容到文件中
192.168.188.135 node1-zookeeper
192.168.188.136 node2-zookeeper
192.168.188.137 node3-zookeeper

4.添加hosts文件后,使用ping命令测试能否接通:

相互测试每台机器是否互通,比如节点1 ping 节点2,节点1ping节点3,节点2ping节点3,这里就以节点1ping节点2为示例:

# 使用node1-zookeeper节点 ping node2-zookeeper节点
[root@node1-zookeep ~]# ping  node2-zookeeper
PING node2-zookeeper (192.168.188.136) 56(84) bytes of data.
64 bytes from node2-zookeeper (192.168.188.136): icmp_seq=1 ttl=64 time=0.497 ms
64 bytes from node2-zookeeper (192.168.188.136): icmp_seq=2 ttl=64 time=1.61 ms
64 bytes from node2-zookeeper (192.168.188.136): icmp_seq=3 ttl=64 time=1.7
...
注意,以上操作三台服务器节点都要操作。

3.安装Rsync
1.由于xsync是对rsync的再次封装所以需要先安装rsync,根据使用的操作系统不同,使用对应命令即可,我使用的是CentOS7,所以直接使用yum命令安装即可:

# 下载rsync脚本
[root@node1-zookeep /]# yum install -y rsync
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
 ...
4.脚本的编写及使用:
1.在 /usr/local/bin 下创建xsync文件。

# 创建xsync文件
[root@node1-zookeep usr]# vim /usr/local/bin/xsync 
2.在创建好的xsync文件中编写脚本,这里只是做简单示例,可根据自己实际情况进行调整:

#!/bin/bash
# 判断参数个数
if [ $# -lt 1 ]
then
    echo Not Enough Arguement!
    exit;
fi
# 2.遍历集群所有节点
for host in node1-zookeeper node2-zookeeper node3-zookeeper
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
完成之后,保存并退出。

3.修改xsync脚本具有执行权限:

# 原文件
-rw-r--r--. 1 root root 732 9月  20 15:10 xsync
 
 
# 修改执行权限(两种方式都可以)
[root@node1-zookeep bin]# chmod +x xsync 
# 或
[root@node1-zookeep bin]# chmod 777 xsync 
 
 
# 查看被修改后的文件
[root@node1-zookeep bin]# ll
总用量 4
-rwxr-xr-x. 1 root root 732 9月  20 15:10 xsync
4.使用命令:xsync 要同步的文件

[root@node1-zookeep /]$ xsync /Test01
至此,配置结束,就可以正常使用了,但是每次同步都需要输入密码,所以还需要使用ssh配置集群间免密登录。

5.免密登陆
1.免密登录的基本原理:

2.生成RSA秘钥对

使用 ssh-keygen -t rsa 命令,在生成命令时,会要求你输入密码短语、确认密码短语等信息,可根据自己需要的情况来填写,不填写也可以(但是建议通过ssh-keygen建立SSH keys,不要指定密码),如果不填写直接按回车键即可,然后就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

# 生成秘钥对
[root@node1-zookeep .ssh]# ssh-keygen -t rsa

3.由上能看到,生成的秘钥被保存在/root/.ssh目录下,

查看生成的文件:

[root@node1-zookeep .ssh]# ll
总用量 12
-rw-------. 1 root root 1679 9月  20 15:49 id_rsa
-rw-r--r--. 1 root root  400 9月  20 15:49 id_rsa.pub
4.使用ssh-copy-id命令,将公钥拷贝到要免密登录的目标机器上:

# 将公钥拷贝到node2-zookeeper
[root@node1-zookeep .ssh]# ssh-copy-id -i ~/.ssh/id_rsa.pub node2-zookeeper
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@node2-zookeeper's password: 
# 如果有提示就输入自己的密码
Number of key(s) added: 1
Now try logging into the machine, with:   "ssh 'node2-zookeeper'"
and check to make sure that only the key(s) you wanted were added.
# 将公钥拷贝到node3-zookeeper
[root@node1-zookeep .ssh]# ssh-copy-id -i ~/.ssh/id_rsa.pub node3-zookeeper
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@node3-zookeeper's password: 
# 如果有提示就输入自己的密码
Number of key(s) added: 1
Now try logging into the machine, with:   "ssh 'node3-zookeeper'"
and check to make sure that only the key(s) you wanted were added.
或者使用下面这种方式也可以,ssh-copy-id会将本机的公钥发送到要访问计算机——存储在hadoop102的 ~/.ssh/authorized_keys中:

# 或者使用下面这种方式拷贝公钥也可以
[root@node1-zookeep .ssh]# ssh-copy-id node1-zookeeper
[root@node1-zookeep .ssh]# ssh-copy-id node2-zookeeper
[root@node1-zookeep .ssh]# ssh-copy-id node3-zookeeper
上述步骤只是将节点一的文件能够同步到节点2 和节点3 ,如果需要他们之间相互能够同步,需要在 192.168.188.136(节点二) 与 192.168.188.137(节点三) 的服务器上重复上述步骤。

6.ssh文件夹详解

功能

known_hosts

记录ssh访问过计算机的公钥(public key)

id_rsa

生成的私钥

id_rsa.pub

生成的公钥

authorized_keys

存放授权过得无密登录服务器公钥

ssh会把每个访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts

脚本

在/usr/local/bin 目录下创建 xsync 文件 

#!/bin/sh
# 获取输入参数个数,如果没有参数,直接退出
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=2; host<=10; host++)); do
        echo $pdir/$fname $user@slave$host:$pdir
        echo ==================slave$host==================
        rsync -rvl $pdir/$fname $user@slave$host:$pdir
done
#Note:这里的slave对应自己主机名,需要做相应修改。另外,for循环中的host的边界值

参考文章: xsync同步脚本的创建及使用(以Debian10集群为例)-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/705328.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Canal解决select count(*)执行慢的问题

前言 count 的常用方式&#xff0c;使用 count(*)来统计数据条数&#xff0c;但是 innodb 没有存储数据总数&#xff0c;所以执行起来就会很慢。 可以使用 expalin sql 来返回预估行数&#xff0c;expalin select count(*)....., 通过预估的方式,统计数据条数。可以使用 redi…

双向RNN和双向LSTM

双向RNN和双向LSTM 一、双向循环神经网络BiRNN 1、为什么要用BiRNN 双向RNN&#xff0c;即可以从过去的时间点获取记忆&#xff0c;又可以从未来的时间点获取信息,也就是说具有以下两个特点&#xff1a; 捕捉前后文信息&#xff1a;传统的单向 RNN 只能利用先前的上下文信息…

Google Veo发布:AI生成视频的重大突破

在Google I/O 2024大会上&#xff0c;Google推出了Veo&#xff0c;这是一款能够根据文本提示生成1080p视频的AI模型。这次发布标志着Google在生成式AI领域的又一重大突破。 Veo的强大功能 Veo不仅能够生成各种视觉和电影风格的视频片段&#xff0c;包括风景镜头和延时摄影&am…

【计算机毕业设计】springboot房地产销售管理系统的设计与实现

相比于以前的传统手工管理方式&#xff0c;智能化的管理方式可以大幅降低房地产公司的运营人员成本&#xff0c;实现了房地产销售的 标准化、制度化、程序化的管理&#xff0c;有效地防止了房地产销售的随意管理&#xff0c;提高了信息的处理速度和精确度&#xff0c;能够及时、…

如何选择开箱机厂家,看这几点!

在现代化生产线上&#xff0c;开箱机作为自动化包装设备的重要组成部分&#xff0c;其选择对于提升生产效率、降低成本至关重要。然而&#xff0c;市场上开箱机厂家众多&#xff0c;如何挑选出合适的合作伙伴成为了许多企业面临的难题。与星派一起探讨如何选择开箱机厂家&#…

Docker 安装的MySQL迁移数据库

1. 导出数据库 docker ps :查看数据库对应的 CONTAINER ID docker exec -it id /bin/bash : 进入到mysql的docker实例中 cd /usr/bin : 进入到bin目录 mysqldump -u root -p123456 study > /root/study_backup0509.sql :使用mysqldump备份库&#xff0c;注意密码与-p之间…

MyBatis-Plus简介

一、简介 官网&#xff1a;https://baomidou.com/ MyBatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 二、特性 无侵入&#xff1a;只做增强不做改变&#xff0c;引…

Hadoop3:HDFS副本节点选择逻辑讲解

一、副本节点选择&#xff08;机架感知&#xff09; 说明 第一个副本&#xff0c;因为我们的client可能是web页&#xff0c;也可能是shell终端。 如果是web页&#xff0c;则随机选取一个节点&#xff0c;如果是shell终端&#xff0c;则选择当前shell终端所在的节点。 节点距离最…

优秀测试的核心能力!2招高效定位分析BUG!

之所以写这一篇文章&#xff0c;是突然想起来曾经在测试过程中被开发嘲讽过&#xff0c;事情是这样的&#xff0c;当时发现了一个疑似前端的Bug就草草提交到了禅道&#xff0c;结果刚来的女前端看到了就有点生气地问我为啥不查清到底是前后端问题就直接派给她前端了&#xff0c…

独家|暴雨推出基于国产X86芯片的四路服务器

伴随着智慧计算时代的到来和企业数字化转型的深入&#xff0c;人工智能、大数据、虚拟化等创新技术在应用普及的过程中&#xff0c;也在不断地细分和深化&#xff0c;使得企业的业务系统日趋复杂&#xff0c;数据量、数据类型更加庞大&#xff0c;对计算平台的性能要求“水涨船…

欢乐钓鱼大师攻略大全,新手钓鱼入坑必备攻略!

《欢乐钓鱼大师》是一款深受玩家喜爱的钓鱼手游&#xff0c;在游戏中&#xff0c;玩家可以通过升级和更换鱼竿来享受钓鱼的乐趣&#xff0c;并有机会钓到各种稀有鱼类。然而&#xff0c;很多玩家在闯关过程中遇到了不少困难。为了帮助大家更好地掌握游戏技巧&#xff0c;小编特…

最新版Ceph( Reef版本)块存储简单对接k8s(上集)

当前ceph 你的ceph集群上执行 1.创建名为k8s-rbd 的存储池 ceph osd pool create k8s-rbd 64 642.初始化 rbd pool init k8s-rbd3 创建k8s访问块设备的认证用户 ceph auth get-or-create client.kubernetes mon profile rbd osd profile rbd poolk8s-rbd部署 ceph-rbd-csi c…