技術棧
-
NFS是 Network File System的簡寫,即網絡文件系統。NFS的優點是內核直接支持,部署簡單、運行穩定,協議簡單、傳輸效率高。缺點是僅依靠IP地址或主機名來決定用戶能否掛載共享目錄,容易出現單點故障。
-
rsync是linux系統下的數據鏡像備份工具。使用快速增量備份工具Remote Sync可以遠程同步,支持本地復制,或者與其他SSH、rsync主機同步。
-
Inotify是一個 Linux特性,它監控文件系統操作,比如讀取、寫入和創建。通過inotify實現數據的時時同步,所需要的應用軟件inotify-tool。
機器準備
-
10.7.11.9 (nfs節點)
-
10.7.11.5 (備份節點)
-
注意:關閉機器的防火墻 - systemctl stop firewalld
一、部署 nfs 服務器
-
安裝nfs-server
#nfs-utils:提供了NFS服務器程序和對應的管理工具 #rpcbind:獲取nfs服務器端的端口等信息 yum install -y nfs-utils rpcbind # k8s node 節點需要安裝nfs客戶端 systemctl enable rpcbind systemctl enable nfs-server systemctl start rpcbind systemctl start nfs-server
-
修改配置
#創建目錄 mkdir -p /home/nfs-root/ ? #/home/nfs-root/表示要共享文件的目錄 # *表示所有客戶端可訪問,也可以寫成指定IP網段或者具體的ip #rw:表示讀寫權限,sync:表示數據同步寫入內存硬盤,no_root_squash 會使得根用戶在 NFS 客戶端上擁有和服務器上相同的權限 /home/nfs-root/ *(insecure,rw,sync,no_root_squash)
-
保存,使生效
#wq exportfs -a exportfs
二、部署 Rsync 服務端(10.7.11.5 )
-
下載 Rsync 軟件包
yum -y install rsync
-
新增 vi /etc/rsyncd.conf 配置文件
? #用戶id uid = root #組id gid = root #程序安全設置 use chroot = no #客戶端連接數 max connections = 200 #進程號文件位置 pid file = /var/run/rsyncd.pid #進程鎖文件位置 lock file = /var/run/rsync.lock #日志文件位置 log file = /var/run/rsyncd.log #連接超時時間 timeout = 300 #3.1版本以上要加這個 fake super = yes ? #模塊名稱 [backup] #同步數據的目錄 path = /backup #有錯誤時忽略 ignore errors #只讀模式(true為只讀,false為可讀可寫) read only = false #阻止遠程列表 list = false #允許訪問的IP hosts allow = 10.7.11.0/24 #禁止訪問的IP hosts deny = 0.0.0.0/32 #虛擬用戶 auth users = rsync_backup #存放用戶和密碼的文件 secrets file = /etc/rsync.password
-
創建密碼文件 vi /etc/rsync.password
rsync_backup:123456
-
修改 /etc/rsync.password 權限
chmod 600 /etc/rsync.password
-
創建程序用戶 rsync
useradd -M -s /sbin/nologin rsync
-
創建 / backup 目錄
mkdir /backup
-
守護進程啟動 rsync
rsync --daemon
三、部署Rsync 客戶端(10.7.11.9)
-
客戶端節點新增密碼文件 vi /etc/rsync.password
123456
-
修改 / etc/rsync.password 權限
chmod 600 /etc/rsync.password
-
測試 ,將inotify.sh文件傳輸至服務端
rsync -zav inotify.sh rsync_backup@10.7.11.5::backup --password-file=/etc/rsync.password
-
去服務節點查看
三、部署 inotify 服務
-
下載阿里云網絡源
# 首先備份系統自帶『yum 源配置文件』,具體路徑為:/etc/yum.repos.d/CentOS-Base.repo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak # CentOS 7 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
-
更新 yum 源
yum clean all yum makecache
-
下載 inotify-tools 工具包
yum -y install inotify-tools
-
編寫 inotify.sh 腳本
backupServer=10.7.11.5 path=/home/nfs-root inotifywait -mrq --format '%w%f' -e create,close_write,delete $path | while read line doif [ -f $line ];thenrsync -za $line --delete rsync_backup@$backupServer::backup --password-file=/etc/rsync.passwordelsecd $pathrsync -za ./ --delete rsync_backup@$backupServer::backup --password-file=/etc/rsync.passwordfi done
-
后臺啟動腳本
sh inotify.sh &
-
測試數據同步