banner
NEWS LETTER

Nfs高可用实现Rsync+Inotify

Scroll down

本文作者:丁辉

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常用参数解释

所有节点执行

  1. 安装 rsync

    • Centos

      1
      yum install rsync -y
    • Ubuntu

      1
      apt install rsync -y
  2. 配置 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
      2
      sed -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.conf
    • nfs-master-2

      1
      2
      sed -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
  3. 相互配置认证文件

    格式为: ‘用户:用户密码’ (根据自己需求修改)

    • nfs-master-1 和 nfs-master-2

      1
      2
      3
      4
      echo '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
  4. 启动服务

    • Centos

      1
      2
      systemctl enable rsyncd.service
      systemctl start rsyncd.service
    • Ubuntu

      1
      2
      systemctl enable rsync.service
      systemctl start rsync.service
  5. 同步测试

    • 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

  1. 安装 inotify

    • Centos

      1
      2
      yum install epel-release -y
      yum install inotify-tools -y
    • Ubuntu

      1
      apt install inotify-tools

      Ubuntu配置文件位置:/etc/default/rsync

  2. 获取配置文件

    脚本经过优化, 可良好降低服务器消耗

    同步脚本地址

    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
  3. 配置 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:文件或目录被移动。

  4. 将 inotify 纳入 system 管理

    我觉得网上的 nohup sh /opt/rsync_inotify.sh & 的启动方式肯定是没有 system 管理合适的

    将 inotify 纳入 system 管理

    Service文件地址

    1
    curl -so /etc/systemd/system/inotify.service https://gitee.com/offends/Linux/raw/main/File/Service/inotify.service
  5. 启动 inotify

    1
    2
    3
    systemctl daemon-reload
    systemctl enable inotify
    systemctl start inotify
  6. 配置全量备份定时任务

    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.

其他文章
cover
软件记录
  • 70/01/01
  • 00:00
  • 系统-MacBook
cover
NFS服务优化
  • 70/01/01
  • 00:00
  • Linux-存储
目录导航 置顶
  1. 1. Nfs高可用实现Rsync+Inotify
    1. 1.1. 开始部署 rsync
    2. 1.2. 开始部署 inotify
    3. 1.3. 优化 inotify
请输入关键词进行搜索