rsync+nfs+lrsync服务

主机信息
主机角色 | 外网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 |
部署流程
1.backup服务器部署rsync
--下载rsync服务
[root@backup ~]
--配置rsync服务
[root@backup ~]
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
[backup]
path = /backup
[nfs]
path = /nfs
--创建必要文件(组、用户、匿名用户密码文件、模块目录、对应权限)
[root@backup ~]
[root@backup ~]
[root@backup ~]
uid=666(rsync) gid=666(rsync) groups=666(rsync)
[root@backup ~]
[root@backup ~]
[root@backup ~]
[root@backup ~]
[root@backup ~]
drwxr-xr-x 2 rsync rsync 6 Dec 2 16:29 /backup
-rw------- 1 root root 17 Dec 2 16:29 /etc/rsync.passwd
drwxr-xr-x 2 rsync rsync 6 Dec 2 16:29 /nfs
--启动服务
[root@backup ~]
[root@backup ~]
2.web01测试rsync服务
--向两个模块推送内容测试是否成功
[root@web01 ~]
[root@web01 ~]
3.nfs服务器部署nfs服务
--下载nfs服务
[root@nfs ~]
--配置nfs服务(指定运行服务的用户uid、gid)
[root@nfs ~]
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
--创建必要信息(与backup统一用户信息,都使用rsync用户)
[root@nfs ~]
[root@nfs ~]
[root@nfs ~]
uid=666(rsync) gid=666(rsync) groups=666(rsync)
[root@nfs ~]
[root@nfs ~]
--启动服务
[root@nfs ~]
[root@nfs ~]
4.web01挂载nfs:/data
--查看nfs共享的目录
[root@web01 ~]
Export list for 172.16.1.31:
/data 172.16.1.0/24
--挂载共享目录
[root@web01 ~]
[root@web01 ~]
5.nfs部署lsync服务监控/data目录变化
--安装lsync服务
[root@nfs ~]
--配置lsync服务(注意监控目录、推送模块名、同步时间)
[root@nfs ~]
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::nfs",
delete = true,
delay = 1,
rsync = {
binary = "/usr/bin/rsync",
password_file = "/etc/rsyncd.pwd",
archive = true,
compress = true,
}
}
--创建必要数据文件(密码文件名与lsync配置文件中的一致,其内容为rsync服务匿名用户的密码)
[root@nfs ~]
[root@nfs ~]
[root@nfs ~]
-rw------- 1 root root 4 Dec 4 16:54 /etc/rsyncd.pwd
--启动服务
[root@nfs ~]
[root@nfs ~]
6.测试服务
--在web:/imag写入内容测试
[root@web01 ~]
[root@web01 imag]
--查看nfs:/data目录是否有web创建的文件
[root@nfs ~]
[root@nfs data]
test1.txt test2.txt test3.txt test4.txt test5.txt
--查看backup:/nfs目录是否同步了nfs:/data中的内容
[root@backup ~]
[root@backup nfs]
test1.txt test2.txt test3.txt test4.txt test5.txt
--------------------至此服务部署成功----------------------
解决单点故障的问题
手动部署
[root@nfs data]
- 需在backup服务器上部署nfs服务共享/nfs目录
[root@backup ~]
[root@backup ~]
/nfs 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
[root@backup ~]
uid=666(rsync) gid=666(rsync) groups=666(rsync)
[root@backup ~]
drwxr-xr-x 2 rsync rsync 91 Dec 4 16:56 /nfs/
[root@backup ~]
[root@backup ~]
--查询共享存储挂载的目录(使用df -h 会夯住,没法看)
[root@web01 ~]
tmpfs /tmp tmpfs rw,nosuid,nodev 0 0
/dev/sda1 /boot xfs rw,relatime,attr2,inode64,noquota 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0
tmpfs /run/user/0 tmpfs rw,nosuid,nodev,relatime,size=97088k,mode=700 0 0
172.16.1.31:/data /imag nfs4 rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=172.16.1.7,local_lock=none,addr=172.16.1.31 0 0
--先取消挂载
[root@web01 ~]
[root@web01 ~]
--查看backup共享的目录
[root@web01 ~]
Export list for 172.16.1.41:
/nfs 172.16.1.0/24
--挂载并查看内容
[root@web01 ~]
[root@web01 ~]
[root@web01 imag]
test1.txt test2.txt test3.txt test4.txt test5.txt
使用脚本定时任务自动执行
[root@web01 ~]
ping -c1 -W1 172.16.1.31 &>/dev/null
if [ $? -ne 0 ];then
umount -lf /img &>/dev/null &
sleep 2
umount -lf /img &>/dev/null
mount -t nfs 172.16.1.41:/nfs /img
fi
[root@web01 ~]
01 * * * * root /neterror.sh
lsync配置文件详解
settings {
logfile = "/var/log/lsyncd/lsyncd.log", --日志文件所在的位置
statusFile =
"/var/log/lsyncd/lsyncd.status", --状态文件日志所在的位置
maxProcesses = 2, --最大的进程数量,内核的数量保持一致
nodaemon = false, --以守护进程方式来运行
}
sync {
default.rsync, --默认用rsync命令
source = "/data/", --实时监控/data目录 只要发生变化立刻推送到backup
target = "rsync_backup@10.0.0.41::nfs", --通过rsync守护进程命令来推送数据
delete = true, --使用--delete参数来实时同步
delay = 1, --1秒钟同步
rsync = {
binary = "/usr/bin/rsync", --命令所在的位置
password_file = "/etc/rsyncd.pwd", --密码的配置文件
archive = true, -- -a参数
compress = true, -- -z参数
}
}