1、实时同步
背景:
- 之前我们通过rsync + 定时任务实现定时备份/同步
- 对于NFS我们需要进行实时同步
选择
- 分布式存储.。
- 使用实时同步服务+NFS。
- 选择公有云对象存储,七牛存储,腾讯存储COS
选择:nfs+实时同步工具
- inotify(bug需要书写脚本,不推荐使用.):是个命令监控指定目录是否发生变化
- sersync(国产开源,内置inotify+rsync命令,一个命令+一个配置文件)
- lsyncd(目前一些公司在使用,课后研究.)
2、Sersync原理
3、Sersync同步架构
需求:
用户上传文件到web服务器,web服务器挂载nfs,nfs实时同步到备份服务器上.
项目三步走:
1、配置rsync服务端和客户端
2、配置sersync监控
3、配置NFS服务端和客户端
4、极速上手指南
4.1、rsync服务准备
a)rsync服务端
ini
yum install -y rsync
#配置文件
[root@backup ~]# cat /etc/rsyncd.conf
#created by shishuwu 2024.2.17
##rsyncd.conf start ##
fake super =yes
uid = rsync
gid = rsync
use chroot = no
max connections = 2000
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
#hosts allow = 10.0.0.0/24
#hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
#####################################
[data]
comment = www by old0boy 14:18 2012-1-13
path = /data
[nfsbackup]
comment = shishitongbu
path = /nfsbackup
#1、添加虚拟用户,用于进程
useradd -s /sbin/nologin -M rsync
#2、创建密码文件,并且修改600权限
echo 'rsync_backup:1' > /etc/rsync.password
chmod 600 /etc/rsync.password
#3、创建数据文件,修改目录所有者
chown rsync.rsync /data
bash
systemctl start rsyncd
systemctl enable rsyncd
b)rsync客户端
bash
echo '1' > /etc/rsyncnanjing.passwd
chmod 600 /etc/rsyncnanjing.passwd
rsync -avz /etc/passwd rsync_backup@43.137.51.152::data --pasword-file=/etc/rsyncnanjing.passwd
4.2、sersync部署使用
软件包下载:sersync2.5.4_64bit_binary_stable_final.tar.gz
sersync Github主页:一键指南
a)部署
bash
#解压目录
├── GNU-Linux-x86
│ ├── confxml.xml
│ └── sersync2
└── sersync2.5.4_64bit_binary_stable_final.tar.gz
#目录规划
/app/tools/sersync
├── bin
│ └── sersync2
└── conf
└── confxml.xml
b)配置详解
c)启动sersync
bash
#二进制安装不能systemctl启动,要软连接到/bin或者修改PATH
#创建软连接
ln -s /app/tools/sersync/bin/sersync2 /bin
[root@nfs01 bin]# ll -a | grep '/app/tools/'
lrwxrwxrwx 1 root root 31 2月 20 11:54 sersync2 -> /app/tools/sersync/bin/sersync2
#启动服务端
sersync2 -rdo /app/tools/sersync/conf/confxml.xml
[root@nfs01 ~]# ps -ef | grep sersync
root 21905 1 0 11:58 ? 00:00:00 sersync2 -rdo /app/tools/sersync/conf/confxml.xml
#关闭服务需要使用kill+pid或pkill+进程名
bash
#测试服务
#客户端监看
watch ls -l /nfsbackup/
4.3、接入nfs服务
bash
#服务端
yum install -y nfs-utils
vim /etc/exports
chown nfsnobody.nfsnobody /data/
systemctl reload nfs
#客户端
yum install -y nfs-utils
mount -t nfs 10.0.0.12:/data/ /upload
踩坑指南:
nfs服务的时候,在自己的目录下挂载自己,属于搬起石头砸自己的脚。
typescript[root@web01 upload]# mount -t nfs 10.0.0.12:/data/ /upload