- 主节点IP:192.168.8.21 hostname:rancher
- 从节点IP:192.168.8.25 hostname:ds1
下面将讲解三种建立互信的案例
- root正常登录下的互信
- root禁用登录且证书访问情况下建立互信
一、root正常登录下的互信
1.1 主从节点都生成证书
[root@rancher ~]$ $ ssh-keygen
[root@ds1 ~]$ $ ssh-keygen
1.2 用ssh-copy-id将公钥复制到远程机器中(方法一)
###rancher节点
[root@rancher ~]$ $ ssh-copy-id -i .ssh/id_rsa.pub root@192.168.8.25
###ds1节点
[root@ds1 ~]$ $ ssh-copy-id -i .ssh/id_rsa.pub root@192.168.8.21
1.2 用scp将公钥复制到远程机器中(方法二)
###rancher节点
[root@rancher ~]$ $ mv /root/.ssh/id_rsa.pub /root/.ssh/id_rsa_21.pub
[root@rancher ~]$ $ scp id_rsa_21.pub root@192.168.8.25:/root/.ssh
###ds1节点
[root@ds1~]$ $ mv /root/.ssh/id_rsa.pub /root/.ssh/id_rsa_25.pub
[root@ds1 ~]$ $ scp id_rsa_25.pub root@192.168.8.21:/root/.ssh
###rancher节点
[root@rancher ~]$ cd /root/.ssh/
[root@rancher.ssh]$ cat id_rsa_25.pub >> authorized_keys
[root@rancher .ssh]$ chmod 600 authorized_keys
[root@rancher.ssh]$ chmod 700 ~/.ssh
[root@rancher .ssh]$ service sshd restart
###ds1节点
[root@ds1 ~]$ cd /root/.ssh/
[root@ds1 .ssh]$ cat id_rsa_21.pub >> authorized_keys
[root@ds1 .ssh]$ chmod 600 authorized_keys
[root@ds1 .ssh]$ chmod 700 ~/.ssh
[root@ds1 .ssh]$ service sshd restart
1.3 登录验证
###rancher节点
[root@rancher ~]$ ssh root@192.168.8.25
###ds1节点
[root@ds1 ~]$ ssh root@192.168.8.21
二、root禁用登录且证书访问情况下建立互信
因为root禁用了并且需要证书登录,如果使用ssh命令,则会出现如下报错
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
2.1 两台服务器执行生成秘钥命令
[root@rancher ~]$ $ ssh-keygen
[root@ds1 ~]$ $ ssh-keygen
2.2 公钥文件分别通过sz和rz命令传到服务器中
2.3 添加证书互信和文件权限
###rancher节点
[fox@rancher ~]$ cd /root/.ssh/
[fox@rancher.ssh]$ cat id_rsa_25.pub >> authorized_keys
[fox@rancher .ssh]$ chmod 600 authorized_keys
[fox@rancher.ssh]$ chmod 700 ~/.ssh
[fox@rancher .ssh]$ service sshd restart
###ds1节点
[fox@ds1 ~]$ cd /root/.ssh/
[fox@ds1 .ssh]$ cat id_rsa_21.pub >> authorized_keys
[fox@ds1 .ssh]$ chmod 600 authorized_keys
[fox@ds1 .ssh]$ chmod 700 ~/.ssh
[fox@ds1 .ssh]$ service sshd restart
2.4 远程登录认证
###rancher节点
[root@rancher ~]$ ssh root@192.168.8.25
###ds1节点
[root@ds1 ~]$ ssh root@192.168.8.21
三、rsync定时备份命令
3.1 rsync安装
shell>yum install -y rsync
3.2 rsync的基本用法
3.2.1 -r 递归
##首先我们创建两个目录和两个文件
shell>mkdir /data/app/jdk
shell>mkdir /data/app/nginx
shell>echo "jdk1" > /data/app/jdk/jdk.json
shell>echo "nginx1" > /data/app/nginx/nginx.json
###执行递归备份
shell>rsync -r /data/app /tmp
###查看结果
[root@rancher ~]# cat /tmp/app/jdk/jdk.json
jdk1
###此时我们把nginx.json重新赋值
[root@rancher ~]# echo "nginx2" > /data/app/nginx/nginx.json
[root@rancher ~]# cat /data/app/nginx/nginx.json
nginx2
###执行递归备份
shell>rsync -r /data/app /tmp
###查看结果,同步成功
[root@rancher ~]# cat /tmp/app/nginx/nginx.json
nginx2
3.2.2 -a 递归且同步元信息(修改时间、权限)
shell>rsync -a /data/app /tmp
3.2.3 -n 模拟执行
shell>rsync -anv /data/app /tmp
3.2.4 --delete
删除只存在于目标目录、不存在于源目录的文件
shell>rsync -av --delete /data/app /tmp
3.2.5 –exclude 排除文件
###排除尾缀txt的文件
shell>rsync -av --exclude='*.txt' source/ destination
###排序某个目录下的所有文件
shell>rsync -av --exclude 'dir1/*' source/ destination
###多个排除模式
shell>$ rsync -av --exclude 'file1.txt' --exclude 'dir1/*' source/ destination
shell> $ rsync -av --exclude={'file1.txt','dir1/*'} source/ destination
###排除指定文件内容的规则,在文件中每一个模式一行
shell>rsync -av --exclude-from='exclude-file.txt' source/ destination
3.2.6 --include
必须同步文件
往往与--exclude
结合使用
shell>rsync -av --include="*.txt" --exclude='*' source/ destination
3.3 远程同步
####从本地同步到服务器
rsync -av -e ssh source/ user@remote_host:/destination
###从服务器同步到本地
rsync -av -e ssh user@remote_host:/destination source/
3.4 增量备份
3.4.1 增量备份案例
###在ds1节点创建几个文件夹
[fox@ds1 tmp]$ mkdir -p /tmp/app/nginx /tmp/app/jdk /tmp/app/apache
###全量同步
[fox@ds1 tmp]$ rsync -av /tmp/app fox@192.168.8.21:/tmp
###在ds1和rancher节点分别创建2个不同的文件
[fox@ds1 tmp]$ mkdir /tmp/app/jdk_ds1 /tmp/app/apache_ds1
###此时我们以ds1节点,使用增量备份同步,rancher节点创建的内容需要删除
###$ rsync -a --delete --link-dest /compare/path /source/path /target/path
3.4.2 增量备份脚本
#!/bin/bash
# A script to perform incremental backups using rsync
set -o errexit
set -o nounset
set -o pipefail
readonly SOURCE_DIR="fox@192.168.8.21:/tmp"
readonly BACKUP_DIR="/data/app/backups"
readonly DATETIME="$(date '+%Y-%m-%d_%H:%M:%S')"
readonly BACKUP_PATH="${BACKUP_DIR}/${DATETIME}"
readonly LATEST_LINK="${BACKUP_DIR}/latest"
mkdir -p "${BACKUP_DIR}"
rsync -av --delete \
--link-dest "${LATEST_LINK}" \
"${SOURCE_DIR}/" \
--exclude=".*" \
"${BACKUP_PATH}"
rm -rf "${LATEST_LINK}"
ln -s "${BACKUP_PATH}" "${LATEST_LINK}"
3.4.3 定时删除
shell>find /tmp -name "*.txt" -mtime +3 -exec rm -rfv {} \;
shell>rm -rf $(find /tmp -name "*.txt" -mtime +3 )