zoukankan      html  css  js  c++  java
  • Linux集群分发脚本xsync

    1.基础拷贝工具
    1)安全拷贝:scp(secure copy)
    scp定义:

    scp可以实现服务器与服务器之间的数据拷贝(from server1 to server2)

    2)基本语法

    scp -r $pdir/$fname $user@hadoop$host:$pdir/$fname
    命令 递归 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称
    3)案例实操

    a)在hadoop1上,将hadoop1中/opt/module目录下的软件拷贝到hadoop2上:

    [zxy@hadoop1 /]$ scp -r /opt/module root@hadoop2:/opt/module
    b)在hadoop3上,将hadoop101服务器上的/opt/module目录下的软件拷贝到hadoop3上:

    [zxy@hadoop3 opt]$sudo scp -r zxy@hadoop101:/opt/module root@hadoop3:/opt/module
    c)在hadoop3上操作将hadoop1中/opt/module目录下的软件拷贝到hadoop4上。

    [zxy@hadoop103 opt]$ scp -r zxy@hadoop1:/opt/module root@hadoop4:/opt/module
    注意:拷贝过来的/opt/module目录,别忘了在hadoop2、hadoop3、hadoop4上修改所有文件的[所有者和所有者组]。

    sudo chown zxy:zxy -R /opt/module
    d)将hadoop1中/etc/profile文件拷贝到hadoop2的/etc/profile上:

    [zxy@hadoop1 ~]$ sudo scp /etc/profile root@hadoop2:/etc/profile
    e)将hadoop1中/etc/profile文件拷贝到hadoop3的/etc/profile上:

    [zxy@hadoop1 ~]$ sudo scp /etc/profile root@hadoop3:/etc/profile
    f)将hadoop1中/etc/profile文件拷贝到hadoop4的/etc/profile上:

    [zxy@hadoop1 ~]$ sudo scp /etc/profile root@hadoop4:/etc/profile
    ==注意:==拷贝过来的配置文件别忘了source一下/etc/profile,

    2)远程同步工具:rsync
    1)rsync是什么?

    rsync主要用于备份和镜像,具有速度快、避免复制相同内容和支持符号链接的优点。

    2)基本语法

    rsync -av $pdir/$fname $user@hadoop$host:$pdir/$fname
    命令 选项参数 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称
    4)选项参数说明

    选项 功能
    -a 归档拷贝
    -v 显示复制过程
    5)案例实操

    把hadoop1机器上的/opt/software目录同步到hadoop2服务器的root用户下的/opt/目录
    # 需要系统安装有rsync:
    [zxy@hadoop2 ~]$ sudo yum install rsync
    [zxy@hadoop1 opt]$ rsync -av /opt/software/ root@hadoop2:/opt/software
    3)rsync和scp区别
    1)用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。
    2)scp是把所有文件都复制过去
    2.xsync集群分发脚本
    1)需求:

    循环复制文件到所有节点的相同目录下
    2)需求分析:

    a)rsync命令原始拷贝:

    rsync -av /opt/module root@hadoop103:/opt/
    b)期望脚本:

    xsync 要同步的文件名称
    c)说明:在/home/zxy/bin这个目录下存放的脚本,zxy用户可以在系统任何地方直接执行。

    3)脚本实现

    需要系统安装有rsync:

    [zxy@hadoop2 ~]$ sudo yum install rsync
    a)在/home/zxy目录下创建bin目录,并在bin目录下xsync创建文件,文件内容如下:

    [zxy@hadoop2 ~]$ mkdir bin
    [zxy@hadoop2 ~]$ cd bin/
    [zxy@hadoop2 bin]$ touch xsync
    [zxy@hadoop2 bin]$ vim xsync
    在该文件中编写如下shell脚本:

     1 #!/bin/bash
     2 #1 获取输入参数个数,如果没有参数,直接退出
     3 pcount=$#
     4 if [ $pcount -lt 1 ]
     5 then
     6     echo Not Enough Arguement!
     7     exit;
     8 fi
     9 
    10 #2. 遍历集群所有机器
    11 # 也可以采用:
    12 # for host in hadoop{2..4};
    13 for host in hadoop2 hadoop3 hadoop4
    14 do
    15     echo ====================    $host    ====================
    16     #3. 遍历所有目录,挨个发送
    17     for file in $@
    18     do
    19         #4 判断文件是否存在
    20         if [ -e $file ]
    21         then
    22             #5. 获取父目录
    23             pdir=$(cd -P $(dirname $file); pwd)
    24             echo pdir=$pdir
    25             
    26             #6. 获取当前文件的名称
    27             fname=$(basename $file)
    28             echo fname=$fname
    29             
    30             #7. 通过ssh执行命令:在$host主机上递归创建文件夹(如果存在该文件夹)
    31             ssh $host "mkdir -p $pdir"
    32             
    33             #8. 远程同步文件至$host主机的$USER用户的$pdir文件夹下
    34             rsync -av $pdir/$fname $USER@$host:$pdir
    35         else
    36             echo $file does not exists!
    37         fi
    38     done
    39 done

    b)修改脚本 xsync 具有执行权限

    [zxy@hadoop2 bin]$ chmod 777 xsync
    c)调用脚本形式:xsync 文件名称

    [zxy@hadoop2 bin]$ xsync /home/zxy/bin
    注意:如果将xsync放到/home/zxy/bin目录下仍然不能实现全局使用,可以将xsync移动到/usr/local/bin目录下。

    3.配置集群间免密登陆
    1)免密登陆原理

    2)配置免密登陆
    a)生成密钥对

    [zxy@hadoop2 .ssh]$ ssh-keygen -t rsa
    然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
    使用rsa算法生成秘钥对
    生成的秘钥对在用户家目录下: /home/user/.ssh
    b)将公钥拷贝到要免密登录的目标机器上

    [zxy@hadoop2 .ssh]$ ssh-copy-id hadoop2
    [zxy@hadoop2 .ssh]$ ssh-copy-id hadoop3
    [zxy@hadoop2 .ssh]$ ssh-copy-id hadoop4
    c)分别ssh直接登陆hadoop102

    ssh hadoop103

    3).ssh文件夹功能解释
    文件名                          功能
    known_hosts           记录ssh访问过计算机的公钥(public key)
    id_rsa                      生成的私钥
    id_rsa.pub               生成的公钥
    authorized_keys     存放授权过得无密登录服务器公钥
    文档解释:

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

    作用:当下次访问相同计算机时,OpenSSH会核对公钥;
    如果公钥不同,OpenSSH会发出警告,避免你受到DNS Hijack之类的攻击。
    The authenticity of host 'hadoop107 (192.168.8.107)' can't be established.
    RSA key fingerprint is fa:9c:50:71:70:2b:4f:36:04:f6:7c:7b:0b:2d:ca:3b.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added 'hadoop107,192.168.8.107' (RSA) to the list of known hosts.
    2)ssh-keygen -t rsa:

    作用:生成~/.ssh/下id_rsa(私钥)、id_rsa.pub(公钥)两个文件
    3)ssh-copy-id hadoop2 :会将本机的公钥发送到要访问计算机——存储在hadoop102的 ~/.ssh/authorized_keys中

    作用:用于实现A机器对hadoop2机器的免密登陆
    参考资料:https://blog.csdn.net/select_alter_drop/article/details/100131943

  • 相关阅读:
    二进制运算基础
    初识Tomcat系统架构
    MySQL InnoDB引擎锁的总结
    Java并发编程:并发容器之CopyOnWriteArrayList
    java类的加载机制
    Nginx实现tomcat集群进行负载均衡
    Java序列化对象为字符串并将字符串反序列化为对象
    数据库的四大特性及事务的隔离级别
    人性的弱点
    华为工作法摘抄笔记
  • 原文地址:https://www.cnblogs.com/uestc2007/p/13322447.html
Copyright © 2011-2022 走看看