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部署案例

image

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。
posted @ 2024-12-05 21:38  被时光移动的城市  阅读(9)  评论(0编辑  收藏  举报