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。