Appearance
实时同步工具概述
解决 NFS 单点故障
目前用来解决nfs单点故障
什么是单点故障
NFS 单点故障(Single Point of Failure, SPOF) 是指在 NFS 架构中,某个组件或节点发生故障时,可能导致整个系统无法正常工作或服务不可用的情况。简单来说,就是 NFS 服务器本身或其某个关键组件是唯一的故障点,如果发生故障,所有依赖于该 NFS 服务的客户端将无法访问共享文件系统。
为什么会有单点故障
在传统的 NFS 架构中,NFS 服务器是集中式的,所有客户端都依赖它提供的文件访问服务。如果服务器宕机或出现故障,所有客户端都会受到影响。
实时同步工具对比
同步工具 | 是否推荐 | 监控方式 | 部署方式 | 额外特性 | 维护状态 |
---|---|---|---|---|---|
inotify | ❌ 不推荐 | 目录变化监控 | 需结合rsync使用 | 需手动编写脚本 | 基础功能稳定 |
sersync | ⚠️ 慎用 | 配置文件指定目录 | 二进制部署 | 基于inotify+rsync二次开发 | 长期未更新 |
lsyncd | ✅ 推荐 | 配置文件监控 | apt/yum安装 | 原生支持rsync/SSH等协议 | 持续维护 |
Lsyncd 配置测试
环境配置
角色 | 主机名 | IP地址 |
---|---|---|
l | nfs01 | 10.0.0.31 |
lsyncd客户端(数据收集) | 10.0.0.41 |
Lsyncd 客户端流程
shell
Lsyncd前提是已经安装rsync了,在前面已经写过 就不多说了
[root@backup ~]# cat /etc/rsyncd.conf
[nfsbackup]
comment = /nfsbackup/
path = /nfsbackup/
[root@backup ~]# vim /etc/rsyncd.conf
[root@backup ~]# mkdir -p /nfsbackup/
[root@backup ~]# chown -R rsync.rsync /nfsbackup/
[root@backup ~]# ll -d /nfsbackup/
drwxr-xr-x 2 rsync rsync 6 3月 23 21:53 /nfsbackup/
[root@backup ~]# systemctl restart nfs
#本地测试
root@backup ~]# rsync -avz /etc/hostname rsync_backup@backup::nfsbackup
Password:
sending incremental file list
hostname
sent 102 bytes received 43 bytes 58.00 bytes/sec
total size is 7 speedup is 0.05
[root@backup ~]# cat /nfsbackup/hostname
backup
#Success
Lsync 服务端流程
shell
# Debian/Ubuntu
apt install lsyncd
# CentOS/RHEL
yum install lsyncd
#查看配置文件路径
[root@nfs01 ~]# rpm -ql lsyncd
/etc/logrotate.d/lsyncd
/etc/lsyncd.conf
[root@nfs01 ~]# cat /etc/lsyncd.conf
settings {
logfile = "/var/log/lsyncd.log", -- 日志文件,主要查看日志文件
pidfile = "/var/run/lsyncd.pid", -- PID文件
statusFile = "/var/log/lsyncd.status", -- 服务状态文件
nodaemon = true, -- 改为非守护进程模式,默认rsync命令,lsyncd
maxProcesses = 2 -- 控制最多用于传输数据的进程数量(rsync进程数),根据CPU核心数来一致或2倍
}
sync {
default.rsync, -- 指定rsync工作模式
source = "/data/", -- 指定lsyncd监控目录,源目录
target = "rsync_backup@172.16.1.41::nfsbackup", -- 指定目标rsync服务端,用户名@IP地址::模块名字
delay = 15, -- 每隔15秒同步一次
delete = true, -- rsync命令的--delete选项
rsync = {
binary = "/usr/bin/rsync", -- 命令位置
archive = true, -- rsync命令的-a选项
compress = true, -- rsync命令的-z选项,压缩
password_file = "/etc/rsync.client" -- 配置rsync--password-file密码文件
}
}
[root@nfs01 ~]# mkdir -p /data/
[root@nfs01 ~]# chmod 600 /etc/rsync.client
[root@nfs01 ~]# ll -d /etc/rsync.client
-rw------- 1 root root 2 2月 25 17:12 /etc/rsync.client
[root@nfs01 ~]# systemctl restart lsyncd
#看日志是否成功
[root@nfs01 ~]# tail -f /var/log/lsyncd.log
Tue Mar 25 21:51:22 2025 Normal: recursive startup rsync: /data/ -> rsync_backup@172.16.1.41::nfsbackup/
Tue Mar 25 21:51:22 2025 Normal: Startup of /data/ -> rsync_backup@172.16.1.41::nfsbackup/ finished.
[root@nfs01 /data]# systemctl status lsyncd
● lsyncd.service - Live Syncing (Mirror) Daemon
Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2025-03-25 21:53:06 CST; 2min 3s ago
测试
nfs 在/data/目录创建之后
在 backup 的/nfsbackup/查看是否有文件