linux之lsync服務

被时光移动的城市發表於2024-12-05

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。

相關文章