使用ssh免密登录实现自动化部署rsync+nfs+lsync(脚本)

单机一键部署ssh+rsync+nfs+lsync

执行准备

主机信息

主机角色 外网IP 内网IP 主机名
nfs、lsync 10.0.0.31 176.16.1.31 nfs
客户端 10.0.0.7 176.16.1.7 web01
rsync、nfs 10.0.0.41 172.16.1.41 backup

秘钥信息

sh 复制代码
#web01可以免密连接nfs和backup
[root@web01 ~]# ssh-keygen
[root@web01 ~]# ssh-copy-id 172.16.1.31
[root@web01 ~]# ssh-copy-id 172.16.1.41
#远程免密登录测试
#一定要测

脚本文件rnl.sh

创建文件

sh 复制代码
#创建脚本文件并编辑
[root@web01 ~]# vim rnl.sh

编写文件

sh 复制代码
#使用web01为backup服务器远程部署rsync服务
ssh 172.16.1.41 '
yum install -y rsync &> /dev/null
cat > /etc/rsyncd.conf <<EOF
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log

[code]
path = /code
[img]
path = /img
EOF

groupadd -g 666 rsync
useradd -g 666 -u 666  -M -s /sbin/nologin rsync
echo rsync_backup:123 > /etc/rsync.passwd
chmod 600 /etc/rsync.passwd 
mkdir /code /img
chown rsync.rsync /code /img
systemctl start rsyncd &> /dev/null
systemctl enable  rsyncd &> /dev/null
exit
' &> /dev/null
echo '已成功为backup(172.16.1.41)部署rsync服务,共两个模块:[code]和[img]'
echo '--------------------------------------------------------------'

ssh 172.16.1.31 '
#使用web01为nfs服务器部署nfs服务
yum install -y nfs-utils &> /dev/null
cat > /etc/exports<<EOF
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
EOF

groupadd -g 666 rsync
useradd -g 666 -u 666  -M -s /sbin/nologin rsync
mkdir /data
chown rsync.rsync /data/
systemctl start nfs &> /dev/null
systemctl enable nfs &> /dev/null
exit
'  &> /dev/null
echo '已成功为NFS(172.16.1.31)部署nfs服务,共享目录为/data'
echo '--------------------------------------------------------------'

ssh 172.16.1.31 '
#使用web01为nfs服务器部署lsync服务
yum install -y lsyncd &> /dev/null
cat > /etc/lsyncd.conf<<EOF
settings {
	logfile = "/var/log/lsyncd/lsyncd.log",
	statusFile = "/var/log/lsyncd/lsyncd.status",
	maxProcesses = 2,
	nodaemon = false,
}
sync {
	default.rsync,
	source = "/data",
	target = "rsync_backup@172.16.1.41::img",
	delete = true,
	delay = 1,
	rsync = {
		binary = "/usr/bin/rsync",
		password_file = "/etc/rsyncd.pwd",
		archive = true,
		compress = true,
	}
}
EOF

echo 123 > /etc/rsyncd.pwd
chmod 600 /etc/rsyncd.pwd
systemctl start lsyncd &> /dev/null
systemctl enable lsyncd &> /dev/null
exit
'  &> /dev/null
echo '已成功为NFS(172.16.1.31)部署lsync服务,监控目录为本机的/data'
echo '若/data发生变化将会发送给172.16.1.41的/img目录'
echo '--------------------------------------------------------------'

#web01本机挂载共享目录/data
mkdir /imag
mount -t nfs 172.16.1.31:/data /imag
echo '已成功挂载172.16.1.31:/data目录于本机的/imag目录'
echo '--------------------------------------------------------------'
echo '****rsync+nfs+lsync 服务部署完成,进行测试吧!****'

执行文件

sh 复制代码
[root@web01 ~]# sh 1.sh 
已成功为172.16.1.41部署rsync服务,共两个模块:code和img
已成功为172.16.1.31部署nfs服务,共享目录为/data
已成功为172.16.1.31部署lsync服务,监控目录为/data,发生变化将会发送给172.16.1.41的/img目录
已成功挂载172.16.1.31:/data目录于本机的/imag目录
rsync+nfs+lsync 服务部署完成,进行测试吧!

测试服务

sh 复制代码
#在web01中的imag目录中创建文件
[root@web01 ~]# touch /imag/shell.txt
[root@web01 ~]# ll /imag/shell.txt 
-rw-r--r-- 1 666 666 0 Dec  5 20:30 /imag/shell.txt
#查看nfs中/data下文件是否存在
[root@nfs ~]# ll /data/
-rw-r--r-- 1 rsync rsync 0 Dec  5 20:30 shell.txt
#查看backup中模块img的/img目录下文件是否存在
[root@backup ~]# ll /img/
-rw-r--r-- 1 rsync rsync 0 Dec  5 20:30 shell.txt

解决单点故障脚本nfs.sh

使用web01为backup服务器部署nfs服务并监控故障

脚本文件

sh 复制代码
vim nfs.sh

编写脚本

sh 复制代码
ssh 172.16.1.41 '
yum install -y nfs-utils &> /dev/null
cat > /etc/exports << EOF
/img 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
EOF

systemctl start nfs
systemctl enable  nfs
exit
'

#编写监控脚本
cat >> /neterror.sh << EOF 
#!/bin/bash
ping -c1 -W1 172.16.1.31 &>/dev/null #或者使用
#showmount -e 172.16.1.31 &>/dev/null
if [ $? -ne 0 ];then
umount -lf /imag &>/dev/null &
sleep 2
umount -lf /imag &>/dev/null
mount -t nfs 172.16.1.41:/img /imag
fi
EOF

#编写监控脚本的定时任务
cat >> /etc/crontab <<EOF
01 * * * *  root 	sh /neterror.sh
EOF
相关推荐
YJlio3 分钟前
Kali Linux 外置无线网卡接入与识别排障(VMware 环境|合规学习版)
linux·网络·学习
0和1的舞者35 分钟前
接口自动化(四):logging 日志配置 + Allure 测试报告从安装到使用
测试开发·自动化·接口·接口自动化·测试·知识
vortex51 小时前
AppArmor 受限 Shell 环境绕过技术分析:利用动态链接器路径差异实现 Profile 逃逸
linux·运维·服务器·网络安全
春日见2 小时前
python3语法学习
linux·运维·服务器·人工智能·驱动开发
Violet_YSWY2 小时前
理解:ssh http ftp基于tcp
tcp/ip·http·ssh
天寒心亦热2 小时前
Ubuntu20.04系统WIFI网络监测及自动重启
linux·运维·服务器
骇客野人3 小时前
Java比较两个list,A中有但B中没有的元素
linux·服务器·windows
EndingCoder3 小时前
数组和元组:处理集合数据
linux·运维·前端·ubuntu·typescript
数据雕塑家3 小时前
Linux运维实战:巧用文件操作实现SSH免密登录配置
linux·运维·ssh
天码-行空3 小时前
【大数据环境安装指南】HBase单机环境搭建教程
大数据·linux·运维·数据库·hbase