本文作者:丁辉
Nfs高可用实现Rsync+Inotify
节点名称 | IP | 角色 | 同步目录 |
---|---|---|---|
nfs-master-1 | 192.168.1.10 | NFS主节点1 | /data |
nfs-master-2 | 192.168.1.20 | NFS主节点2 | /data |
适用架构: amd64
适用架构: arm64
开始部署 rsync
所有节点执行
安装 rsync
Centos
1
yum install rsync -y
Ubuntu
1
apt install rsync -y
配置 rsync 配置文件
备份配置文件
1
mv /etc/rsyncd.conf /etc/rsyncd.conf.bak
获取配置文件
1
curl -so /etc/rsyncd.conf https://gitee.com/offends/Linux/raw/main/File/Conf/rsyncd.conf
替换内容如下(根据自己环境配置进行修改)
nfs-master-1
1
2sed -i 's#comment = none#comment = backup to nfs-master-2#g' /etc/rsyncd.conf
sed -i 's#hosts allow = none#hosts allow = 192.168.1.20/24#g' /etc/rsyncd.confnfs-master-2
1
2sed -i 's#comment = none#comment = backup to nfs-master-1#g' /etc/rsyncd.conf
sed -i 's#hosts allow = none#hosts allow = 192.168.1.10/24#g' /etc/rsyncd.conf
相互配置认证文件
格式为: ‘用户:用户密码’ (根据自己需求修改)
nfs-master-1 和 nfs-master-2
1
2
3
4echo 'rsync:password' > /etc/rsync_salve.pass
chmod 600 /etc/rsync_salve.pass
echo "password" > /etc/rsync.paschmod 600 /etc/rsync_salve.passs
chmod 600 /etc/rsync.pass
启动服务
Centos
1
2systemctl enable rsyncd.service
systemctl start rsyncd.serviceUbuntu
1
2systemctl enable rsync.service
systemctl start rsync.service
同步测试
192.168.1.10 传输文件到 192.168.1.20
1
rsync -arv --delete /data/ rsync@192.168.1.20::data --password-file=/etc/rsync.pass
192.168.1.20 传输文件到 192.168.1.10
1
rsync -arv --delete /data/ rsync@192.168.1.10::data --password-file=/etc/rsync.pass
开放防火墙
1 iptables -A INPUT -p tcp --dport 873 -j ACCEPT
开始部署 inotify
安装 inotify
Centos
1
2yum install epel-release -y
yum install inotify-tools -yUbuntu
1
apt install inotify-tools
Ubuntu配置文件位置:
/etc/default/rsync
获取配置文件
脚本经过优化, 可良好降低服务器消耗
1
curl -so /opt/rsync_inotify.sh https://gitee.com/offends/Linux/raw/main/File/Shell/rsync_inotify.sh && chmod 777 /opt/rsync_inotify.sh
配置 inotify 同步脚本(根据自己环境配置进行修改)
nfs-master-1
1
sed -i 's#HOST=none#HOST=192.168.1.20#g' /opt/rsync_inotify.sh
nfs-master-2
1
sed -i 's#HOST=none#HOST=192.168.1.10#g' /opt/rsync_inotify.sh
参数解释
modify
:文件内容被修改。create
:文件或目录被创建。delete
:文件或目录被删除。attrib
:文件或目录的属性被修改。close_write
:文件被关闭(通常在写入完成后触发)。move
:文件或目录被移动。
将 inotify 纳入 system 管理
我觉得网上的
nohup sh /opt/rsync_inotify.sh &
的启动方式肯定是没有 system 管理合适的将 inotify 纳入 system 管理
1
curl -so /etc/systemd/system/inotify.service https://gitee.com/offends/Linux/raw/main/File/Service/inotify.service
启动 inotify
1
2
3systemctl daemon-reload
systemctl enable inotify
systemctl start inotify配置全量备份定时任务
1
crontab -e
nfs-master-1
1
* */2 * * * rsync -avzP --password-file=/etc/rsync.pass /data/ rsync@192.168.1.20::data
nfs-master-2
1
* */2 * * * rsync -avzP --password-file=/etc/rsync.pass /data/ rsync@192.168.1.10::data
优化 inotify
修改
/proc/sys/fs/inotify
目录下的文件,调大数值即可
参数解释
参数 | 解释 |
---|---|
max_user_watches | 这个参数定义了每个Inotify实例能够监控的文件或目录数量上限。如果你需要监控大量的文件或目录,你可能需要增加这个值。 |
max_user_instances | 这个参数定义了每个用户能够创建的Inotify实例的数量上限。如果你的应用程序需要同时监控多个目录,你可能需要增加这个值。同样,要注意不要将其设置得过高,以免占用过多系统资源。 |
max_queued_events | 这个参数定义了Inotify队列中可以排队的事件数量上限。如果你的应用程序需要监控大量的文件,你可能需要增加这个值,以确保不会丢失任何事件。但是,要注意不要将其设置得过高,以免消耗过多的内存资源。 |
I'm so cute. Please give me money.
- 本文链接: https://blog.offends.cn/Linux/存储/NFS/Nfs高可用实现Rsync+Inotify.html
- 版权声明: 本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。