阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

sersync实时同步实战

446次阅读
没有评论

共计 7312 个字符,预计需要花费 19 分钟才能阅读完成。

第 1 章 实时同步

1.1 什么是实时同步

实时同步是一种只要当前目录触发事件,就马上同步到远程的目录。rsync

1.2 为什么要实时同步 web->nfs->backup

保证数据的连续性(定时任务是以分钟为单位的)

减少人力维护成本

1.3 实时同步工具的选择

inotify+RSYNC(x)

sersync+RSYNC(√)

lsyncd

第 2 章 实时备份实践

2.1 准备环境

角色

外网 IP(NAT)

内网 IP(LAN)

安装工具

web01

eth0:10.0.0.7

eth1:172.16.1.7

 

nfs-server

eth0:10.0.0.31

eth1:172.16.1.31

rsync+inotify+sersync

backup

eth0:10.0.0.41

eth1:172.16.1.41

rsync-server

2.2 配置好 backup 服务器

2.2.1 安装 rsync

[root@backup ~]# yum install rsync -y

2.2.2 配置 rsync

[root@backup ~]# vi /etc/rsyncd.conf
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = true
secrets file = /etc/rsync.password
auth users = rsync_backup
log file = /var/log/rsyncd.log
#####################################
[backup]
path = /backup
 
[data]
path = /data

2.2.3 创建数据目录

[root@backup ~]# mkdir /backup

[root@backup ~]# mkdir /data

2.2.4 创建用户并授权

[root@backup ~]# useradd -M -s /sbin/nologin rsync

[root@backup ~]# chown -R rsync.rsync /backup/ /data/

[root@backup ~]# ll -d /backup/ /data/

drwxr-xr-x 7 rsync rsync 256 9 月  7 08:52 /backup/

drwxr-xr-x 2 rsync rsync  6 9 月  7 11:44 /data/

2.2.5 创建链接的虚拟用户密码文件并赋予 600 权限

[root@backup ~]# echo “rsync_backup:1” /etc/rsync.password

[root@backup ~]# chmod 600 /etc/rsync.password

2.2.6 启动 rsyncd

[root@backup ~]# systemctl restart rsyncd

2.3 配置好 nfs 服务器

2.3.1 安装 nfs

[root@nfs ~]# yum install nfs-utils -y

2.3.2 配置 nfs

[root@nfs ~]# vim /etc/exports

/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

2.3.3 配置 nfs 依赖环境

[root@nfs ~]# groupadd -g 666 www

[root@nfs ~]# useradd -u 666 -g 666 www

[root@nfs ~]# mkdir /data

[root@nfs ~]# chown -R www.www /data

2.3.4 启动 nfs

[root@nfs ~]# systemctl enable rpcbind nfs-utils

[root@nfs ~]# systemctl start rpcbind nfs-server

2.4 配置好 web 服务器

2.4.1 先安装对应的工具包

[root@web01 ~]# yum install nfs-utils -y

[root@web01 ~]# systemctl start rpcbind

2.4.2 创建目录,用于挂载使用

[root@web01 ~]# mkdir /data

2.4.3 挂载 nfs 的 data 目录

[root@web01 ~]# showmount -e 172.16.1.31

Export list for 172.16.1.31:

/data 172.16.1.0/24

[root@web01 ~]# mount -t nfs 172.16.1.31:/data /data

2.4.4 通过 windows 上传一个视频或图片至 /data

[root@web01 ~]# wget http://img.mp.itc.cn/upload/20170511/cad88c2e57f44e93b664a48a98a47108_th.jpg

2.4.5 验证内容是否存在 nfs 服务器

[root@nfs ~]# ls /data/

cad88c2e57f44e93b664a48a98a47108_th.jpg  tes1  test

2.5 nfs 共享的 data 目录一旦发生变化,实时的同步至 backup

2.5.1 安装 inotify-tools

[root@nfs ~]# yum install inotify-tools rsync -y

2.5.2 安装 sersync

[root@nfs ~]# wget https://raw.githubusercontent.com/wsgzao/sersync/master/sersync2.5.4_64bit_binary_stable_final.tar.gz

2.5.3 解压并重命名

[root@nfs ~]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz

[root@nfs ~]# mv GNU-Linux-x86/ /usr/local/sersync

2.5.4 配置好 sersync 即可

[root@nfs01 sersync]# vim /usr/local/sersync/confxml.xml            vim 进入文件以后按 esc 键,然后:set nu 显示行号,然后在进行修改对应行号需要修改的地方

 5    <fileSystem xfs=”true”/>  <!– 文件系统 –>
 6    <filter start=”false”>  <!– 排除不想同步的文件 –>
 7        <exclude expression=”(.*)\.svn”></exclude>
 8        <exclude expression=”(.*)\.gz”></exclude>
 9        <exclude expression=”^info/*”></exclude>
 10        <exclude expression=”^static/*”></exclude>
 11    </filter>

 12    <inotify> <!– 监控的事件类型 –>
 13        <delete start=”true”/>
 14        <createFolder start=”true”/>
 15        <createFile start=”true”/>
 16        <closeWrite start=”true”/>
 17        <moveFrom start=”true”/>
 18        <moveTo start=”true”/>
 19        <attrib start=”false”/>
 20        <modify start=”false”/>
 21    </inotify>

 23    <sersync>
 24        <localpath watch=”/data”> <!– 监控的目录 –>
 25            <remote ip=”172.16.1.41″ name=”data”/>  <!– backup 的 IP 以及模块 –>
 28        </localpath>

 29        <rsync> <!– rsync 的选项 –>
 30            <commonParams params=”-az”/>
 31            <auth start=”true” users=”rsync_backup” passwordfile=”/etc/rsync.pass”/>

 32            <userDefinedPort start=”false” port=”874″/><!– port=874 –>
 33            <timeout start=”true” time=”100″/><!– timeout=100 –>
 34            <ssh start=”false”/>
 35        </rsync>

            <!– 每 60 分钟执行一次同步 –>
 36        <failLog path=”/tmp/rsync_fail_log.sh” timeToExecute=”60″/><!–def

    ault every 60mins execute once–>

2.5.5 sersync 配置文件详解

<?xml version=”1.0″ encoding=”ISO-8859-1″?>
<head version=”2.5″>
    #hostip 本机的 Ip 地址,后台使用那个端口来进行实时备份
    <host hostip=”localhost” port=”8008″></host>
    #是否开启 debug 调试信息
    <debug start=”false”/>
    #是否支持 xfs 文件系统,如果有分区文件系统为 xfs 的时候,需要开启这个选项
    <fileSystem xfs=”false”/>
    #是否开启过滤,排除
    <filter start=”false”>
    #exclude 排除这些文件名中包含这些字符的,不推送这些
    <exclude expression=”(.*)\.svn”></exclude>
    <exclude expression=”(.*)\.gz”></exclude>
    <exclude expression=”^info/*”></exclude>
    <exclude expression=”^static/*”></exclude>
    </filter>
    #inotify 模块的配置
    <inotify>
    #是否开启完全同步,源文件里面有什么,目标文件里面就有什么,特别危险,不开启
    <delete start=”false”/>
    #是否监控目录,如果不开启他将不监控这个目录下的子文件和子目录的更改,除非有特殊要求,否则必须开启
    <createFolder start=”true”/>
    #创建文件就监控,我们一般把这个设为 false,否则太消耗性能
    <createFile start=”false”/>
    #文件关闭的时候就推送,这个开启,新建文件打开这个就会对上面的进行备份了
    <closeWrite start=”true”/>
    #mv 剪切走
    <moveFrom start=”true”/>
    #mv 剪切到这个文件里面
    <moveTo start=”true”/>
    #更改文件隐藏属性
    <attrib start=”false”/>
    #监控权限更改就会推送,一般选择开启
    <modify start=”true”/>
    </inotify>

    <sersync>
    #本地要备份的目录
    <localpath watch=”/backup”>
        #远程 rsync 的地址,和使用的模块
        <remote ip=”10.0.0.61″ name=”backup_crond”/>
        <!–<remote ip=”192.168.8.39″ name=”tongbu”/>–>
        <!–<remote ip=”192.168.8.40″ name=”tongbu”/>–>
    </localpath>
    <rsync>
        #rsync 推送的使用的参数
        <commonParams params=”-az”/>
        #是不是开启用户认证,使用的那个用户,密码文件什么,密码文件权限必须是 600
        <auth start=”true” users=”cron_backup” passwordfile=”/etc/rsync_passwd_cron.conf”/>
        #服务端使用的那个端口,端口地址是什么
        <userDefinedPort start=”false” port=”874″/><!– port=874 –>
        #推送超时时间,超过这个时间就认为推送不成功。
        <timeout start=”true” time=”300″/><!– timeout=100 –>
        <ssh start=”false”/>
    </rsync>
    <failLog path=”/tmp/rsync_fail_log.sh” timeToExecute=”60″/><!–default every 60mins execute once–>
    <crontab start=”false” schedule=”600″><!–600mins–>
        <crontabfilter start=”false”>
        <exclude expression=”*.php”></exclude>
        <exclude expression=”info/*”></exclude>
        </crontabfilter>
    </crontab>
    <plugin start=”false” name=”command”/>
    </sersync>

    <plugin name=”command”>
    <param prefix=”/bin/sh” suffix=”” ignoreError=”true”/>  <!–prefix /opt/tongbu/mmm.sh suffix–>
    <filter start=”false”>
        <include expression=”(.*)\.php”/>
        <include expression=”(.*)\.sh”/>
    </filter>
    </plugin>

2.5.6 创建密码文件

[root@nfs01 sersync]# echo “1” > /etc/rsync.pass       

[root@nfs ~]# chmod 600 /etc/rsync.pass

2.5.7 启动 sersync

[root@nfs ~]# /usr/local/sersync/sersync2  -h
set the system param
execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches
execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events
parse the command param
_______________________________________________________
参数 -d: 启用守护进程模式
参数 -r: 在监控前,将监控目录与远程主机用 rsync 命令推送一遍
参数 -n: 指定开启守护线程的数量,默认为 10 个
参数 -o: 指定配置文件,默认使用 confxml.xml 文件
参数 -m: 单独启用其他模块,使用 -m refreshCDN 开启刷新 CDN 模块
参数 -m: 单独启用其他模块,使用 -m socket 开启 socket 模块
参数 -m: 单独启用其他模块,使用 -m http 开启 http 模块
不加 - m 参数,则默认执行同步程序
________________________________________________________________

[root@nfs ~]# /usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml

注意:如果发生错误,请手动执行命令检查推送是否正常

[root@nfs ~]# cd /data && rsync -avz -R –delete ./  –timeout=100 rsync_backup@172.16.1.41::data –password-file=/etc/rsync.pass

2.6 如果 nfs 现在 down 机了,希望将 web 客户端挂载至 backup 服务器上?怎么实现?

2.6.1 nfs 和 backup 两台服务器应该保持一样(nfs 配置。nfs 共享的目录。nfs 的权限)

[root@backup ~]# yum install nfs-utils -y

[root@backup ~]# rsync -avz root@172.16.1.31:/etc/exports /etc/

[root@backup ~]# groupadd -g 666 www

[root@backup ~]# useradd -u666 -g666 www

2.6.2 启动 nfs

 [root@backup ~]# systemctl start rpcbind

 [root@backup ~]# systemctl start nfs-server

2.6.3 修改 rsync 的权限 vim /etc/rsyncd.conf

uid = www

gid = www

2.6.4 修改授权

[root@backup ~]# chown -R www.www /data/ /backup/

2.6.5 重启 rsync

[root@backup ~]# systemctl restart rsyncd

2.6.6 模拟 nfs 故障(挂起虚拟机)

2.6.7 web 强制卸载 172.16.1.31:/data     

[root@web01 ~]# umount -lf /data

2.6.8 web 尝试挂载 172.16.1.41:/data

[root@web01 ~]# mount -t nfs 172.16.1.41:/data /data/

2.6.9 挂载成功后就可以查看共享目录 /data 了

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计7312字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7998586
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...