linux之lsync服务
Lsync服务
-
Lrsync来监视对本地文件和目录的更改
-
Lsyncd是一个轻量级的实时镜像解决方案,同步方式rsync
-
安装容易,配置使用lua语言
-
Lsyncd 2.2.1需要在所有源机器和目标机器上rsync >= 3.1
1.安装
2.配置
3.创建必要的数据目录文件
4.启动
5.测试
#安装版本 lsyncd>2.2.1 rsync>=3.1
[root@nfs ~]# lsyncd --version
Version: 2.2.3
[root@nfs ~]# rsync --version
rsync version 3.1.3 protocol version 31
#安装
[root@nfs ~]# yum install lsyncd
#配置 lua脚本语法
[root@nfs ~]# cat /etc/lsyncd.conf
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd-status.log",
--statusInterval = 2, --2秒同步一次
maxProcesses = 1, --当前主机处理同步任务的线程,一般与内核一样
nodaemon = false, --启动守护进程模式
}
sync {
default.rsync,
source="/data",
target="rsync_backup@172.16.1.41::backup",
delete=true, --使用rsync --delete同步
delay=1, --1秒同步一次
rsync = {
binary = "/usr/bin/rsync",
password_file = "/etc/rsyncd.pwd", --lsyncd服务,通过rsync服务,向41服务器同步,使用的密码文件 权限为600
archive = true,
compress = true,
}
}
#修改rsyncd.pwd密码权限
chmod 600 /etc/rsyncd.pwd
#创建/data目录,此目录是web网站挂载的目录,权限是nfs进程虚拟用户www
mkdir /data && chown www.www /data
lsyncd -rsync 1.png rsync_backup@172.16.1.41::backup
基于NFS、Lsyncd部署案例
1.web服务器 172.16.1.7
2.nfs服务器 172.16.1.31
3.backup服务器 172.16.1.41
4.测试均需关闭防火墙及selinux
1. web
yum -y install nfs-utils
mount -t nfs 172.16.1.31:/data
2.0 nfs
#添加nfs进程虚拟用户www uid 777 gid 777
groupadd -g 777 www && useradd -u777 -g777 -M -s /sbin/nologin www
#安装nfs
yum -y install nfs-utils
#编辑nfs配置文件并写入
/data 172.16.1.0/24(rw,all_squash,anonuid=777,anongid=777)
#查看/var/lib/nfs/etab 是否共享成功
[root@nfs ~]# cat /var/lib/nfs/etab
/data 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=777,anongid=777,sec=sys,rw,secure,root_squash,all_squash)
#创建data并修改属主属组
mkdir /data && chown www.www /data
#启动nfs
systemctl start nfs
systemctl enable nfs
#在web上查看并挂载
[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 /www/
[root@web01 ~]# tail -1 /proc/mounts
172.16.1.31:/data /www nfs4 rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=172.16.1.7,local_lock=none,addr=172.16.1.31 0 0
[root@web01 ~]# df -h |grep data
172.16.1.31:/data 49G 3.8G 46G 8% /www
#在web测试写入
[root@web01 ~]# echo hello> /www/index.html
#在nfs查看
[root@nfs ~]# ll /data/ |grep index
-rw-r--r-- 1 www www 6 Dec 5 11:52 index.html
2.1 nfs 服务器部署lsyncd服务(提前在backup服务器部署rsyncd服务)
#安装lsyncd服务
yum -y install lsyncd
#配置 使用lua脚本语法
[root@nfs ~]# cat /etc/lsyncd.conf
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd-status.log",
--statusInterval = 2,
maxProcesses = 1,
nodaemon = false,
}
sync {
default.rsync,
source="/data", #data目录在nfs服务部署时 已创建
target="rsync_backup@172.16.1.41::backup", #bakcup服务器配置的账号密码
delete=true,
delay=1,
rsync = {
binary = "/usr/bin/rsync",
password_file = "/etc/rsyncd.pwd", #本地连接backup rsyncd服务身份认证密码文件 权限600
archive = true,
compress = true,
}
}
#启动lsyncd服务
systemctl start lsyncd
systemctl enable lsyncd
3. backup
#安装
yum -y install rsync
#配置
[root@backup ~]# cat /etc/rsyncd.conf
uid = www
gid = www
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
[backup]
path = /backup
#rsyncd服务端账号密码文件及权限600
[root@backup ~]# cat /etc/rsync.passwd
rsync_backup:123456
[root@backup ~]# ll /etc/rsync.passwd
-rw------- 1 root root 20 Dec 4 11:10 /etc/rsync.passwd
#启动服务
systemctl start rsyncd
systemctl enable rsyncd
5. 测试从web服务器的www目录,创建文件,看是否实时同步到backup服务器
6. 模拟nfs服务器挂了,web服务器自动切换挂载到backup服务器nfs
#在backup服务器部署nfs服务
[root@backup ~]# yum -y install nfs-utils
[root@backup ~]# systemctl start nfs
[root@backup ~]# rpcinfo -p |grep nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
#配置
[root@backup ~]# cat /etc/exports
/backup 172.16.1.41(rw,sync,all_squash,anonuid=777,anongid=777)
[root@backup ~]# showmount -e
Export list for backup:
/backup 172.16.1.41
#web服务器测试挂载
[root@web01 ~]# mount -t nfs 172.16.1.41:/backup /www
[root@web01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 459M 0 459M 0% /dev
tmpfs 475M 0 475M 0% /dev/shm
tmpfs 475M 13M 462M 3% /run
tmpfs 475M 0 475M 0% /sys/fs/cgroup
/dev/sda3 49G 3.8G 46G 8% /
tmpfs 475M 0 475M 0% /tmp
/dev/sda1 195M 122M 74M 63% /boot
tmpfs 95M 0 95M 0% /run/user/0
172.16.1.41:/backup 49G 3.8G 46G 8% /www
#正常情况下web挂载nfs服务器,现在主动让nfs网卡离线,由web服务器监控脚本检测到nfs挂载失败,自动切换backup服务器的nfs服务
[root@web01 script]# cat monitor_nfs_health.sh
#!/bin/bash
showmount -e 172.16.1.31
if [ $? -eq 1 ];then
umount -f /www
sleep 1
mount -t nfs 172.16.1.41:/backup /www
fi
#写入定时任务
#nfs health monitor task
*/1 * * * * sh /server/script/monitor_nfs_health.sh
NFS、Lsyncd服务
基于web服务器、nfs服务器、backup服务器联动部署,从web挂载nfs实时同步backup。
Never try,never know