集群分发脚本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.rhkb.cn/news/329393.html

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

相关文章

https为何安全?

HTTPS&#xff08;超文本传输安全协议&#xff09;是一种用于安全通信的网络协议&#xff0c;它在HTTP协议的基础上通过SSL/TLS&#xff08;安全套接层/传输层安全&#xff09;协议来加密数据&#xff0c;以保护网络数据的传输安全。 TLS/SSL 基础概念 概念源自百度百科&…

电磁兼容(EMC):时钟电路PCB设计

目录 1. 布局 2. 布线 时钟电路做为产品内部的强辐射源&#xff0c;在设计阶段已经选用展频或者分频方案后&#xff0c;见另外接下来就需要对PCB的耦合路径进行规划设计。时钟电路具体的PCB设计具体要求如下&#xff1a; 1. 布局 结构干涉&#xff1a;时钟电路的晶振和法拉电…

BUUCTF---misc---我吃三明治

1、下载附件是一张图片 2、在winhex分析&#xff0c;看到一串整齐的编码有点可疑&#xff0c;保存下来&#xff0c;拿去解码&#xff0c;发现解不了&#xff0c;看来思路不对 3、再仔细往下看的时候也发现了一处这样的编码&#xff0c;但是这次编码后面多了一段base编码 4、拿去…

JS对象超细

目录 一、对象是什么 1.对象声明语法 2.对象有属性和方法组成 二、对象的使用 1.对象的使用 &#xff08;1&#xff09;查 &#xff08;2&#xff09;改 &#xff08;3&#xff09;增 &#xff08;4&#xff09;删&#xff08;了解&#xff09; &#xff08;5&#xf…

Linux文件:缓冲区、缓冲区刷新机制 | C库模拟实现

Linux文件&#xff1a;缓冲区、缓冲区刷新机制 | C库模拟实现 一、缓冲区的作用二、缓冲区的刷新机制三、测试样例解析3.1 测试样例和运行结果3.2 结果分析1、向显示器文件写入&#xff1a;2、向磁盘文件进行写入&#xff1a; 四、语言级别的缓冲区究竟在哪&#xff1f;五、C库…

网络原理3

运营商路由器&#xff0c;也可以把它当做一个NAT设备它就会对中间经过的数据包&#xff0c;进行网络地址转换当内网设备经过运营商路由器访问外网的时候就会把IP数据包中的源ip&#xff0c;替换成它自己的ip. 我的电脑要发送一个数据给cctalk服务器此时&#xff0c;我的电脑上就…

二叉树求解大小操作详解

目录 一、求所有结点个数 1.1 递归思路 1.2 递归分支图 1.3 递归栈帧图 1.4 C语言实现 二、求叶子结点个数 2.1 递归思路 2.2 递归分支图 2.3 递归栈帧图 2.4 C语言实现 三、求第K层的结点个数 3.1 递归思路 3.2 递归分支图 3.3 递归栈帧图 3.4 C语言实现 四、求…

高性能负载均衡的分类及架构分析

如何选择与部署适合的高性能负载均衡方案&#xff1f; 当单服务器性能无法满足需求&#xff0c;高性能集群便成为提升系统处理能力的关键。其核心在于通过增加服务器数量&#xff0c;强化整体计算能力。而集群设计的挑战在于任务分配&#xff0c;因为无论在哪台服务器上执行&am…

新火种AI|净利润上升628%,英伟达财报说明AI热潮还将持续

作者&#xff1a;一号 编辑&#xff1a;美美 AI大潮仍未放缓&#xff0c;英伟达再次超越预期。 今天凌晨&#xff0c;全球AI算力芯片龙头&#xff0c;被称为“AI时代卖铲人”的英伟达&#xff0c;正式公布了截至2024年4月28日的2025财年第一财季财报&#xff0c;其中第一财季…

java8总结

java8总结 java8新特性总结1. 行为参数化2. lambda表达式2.1 函数式接口2.2 函数描述符 3. Stream API3.1 付诸实践 java8新特性总结 行为参数化lambda表达式Stream Api 1. 行为参数化 定义&#xff1a;行为参数化&#xff0c;就是一个方法接受多个不同的行为作为参数&#x…

C++第三方库【JSON】— jsoncpp

目录 认识JSON jsoncpp库 安装&使用 认识jsoncpp Json::Value jsoncpp序列化 jsoncpp反序列化 认识JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式&#xff0c;采用完全独立于编程语言的文本格式来存储和表示数据&#xff0c;常用于在客户端和服…

钉钉网页应用使用JSAPI报错,dd.alert提示errorCode:3.errorMessage:No value for message

问题分析&#xff1a; 起因是我用下图这个页面&#xff08;配置JSAPI鉴权&#xff09;的链接下载了JSAPI&#xff08;客户端API&#xff09;的SDK&#xff0c;但其实如图所示这个版本是2.10.3&#xff1a; 通过查看dingtalk-jsapi的npm版本&#xff0c;可以知道钉钉的JSAPI已…

c++设计模式-->访问者模式

#include <iostream> #include <string> #include <memory> using namespace std;class AbstractMember; // 前向声明// 行为基类 class AbstractAction { public:virtual void maleDoing(AbstractMember* member) 0;virtual void femaleDoing(AbstractMemb…

荣耀MagicBook X 14 Pro锐龙版 2023 集显(FRI-H76)笔记本电脑原装出厂Windows11系统工厂模式安装包下载,带F10智能还原

恢复开箱状态预装OEM系统&#xff0c;适用型号&#xff1a;HONOR荣耀FRI-H76、FRI-H56 链接&#xff1a;https://pan.baidu.com/s/1Lcg45byotu5kDDSBs3FStA?pwdl30r 提取码&#xff1a;l30r 华为荣耀原装WIN11系统工厂安装包&#xff0c;含F10一键恢复功能、系统自带所有驱…

H800基础能力测试

H800基础能力测试 参考链接A100、A800、H100、H800差异H100详细规格H100 TensorCore FP16 理论算力计算公式锁频安装依赖pytorch FP16算力测试cublas FP16算力测试运行cuda-samples 本文记录了H800基础测试步骤及测试结果 参考链接 NVIDIA H100 Tensor Core GPU Architecture…

快速搭建SpringMvc项目

一、什么是springMvc 1、介绍 Spring Web MVC是基于Servlet API构建的原始Web框架&#xff0c;从一开始就包含在Spring Framework中。正式名称“Spring Web MVC”来自其源模块的名称&#xff08; spring-webmvc &#xff09;&#xff0c;但它通常被称为“Spring MVC”。 在控制…

NFT开发框架和工具

NFT&#xff08;非同质化代币&#xff09;开发涉及多个框架和工具&#xff0c;帮助开发者创建、管理和交易NFT。以下是一些常用的NFT开发框架和工具&#xff0c;这些框架和工具覆盖了NFT开发的各个方面&#xff0c;从智能合约编写到前端集成&#xff0c;再到区块链平台和市场&a…

syncthing文件夹同步与版本管理

1 前言 syncthing可以用来同步文件夹里的所有文件&#xff0c;并且有不错的版本管理&#xff0c;基本每次更改文件&#xff0c;20-40秒就被扫描到了&#xff0c;非常丝滑&#xff1b;这次以此来同步obsidian的插件和文件&#xff0c;达到多端同步&#xff1b; 我家里有一台台…

ubuntu设置root开机登录,允许root用户ssh远程登录

ubuntu与centos系统不同&#xff0c;默认root开机不能登录。 1、输入一下命令创建root密码&#xff0c;根据提示输入新密码 sudo passwd root 2、打开gdm-autologin文件&#xff0c;将auth required pam_succeed_if.so user ! root quiet_success这行注释掉&#xff0c;这行就…

leetCode-hot100-数组专题之区间问题

数组专题之区间问题 知识点&#xff1a;解决思路&#xff1a;例题56.合并区间57.插入区间253.会议室 Ⅱ485.无重叠区间 数组区间问题是算法中常见的一类问题&#xff0c;它们通常涉及对数组中的区间进行排序、合并、插入或删除操作。无论是合并区间、插入区间还是删除重复空间&…