Linux服務(wù)器實(shí)現(xiàn)文件實(shí)時(shí)同步的方法詳解
1 背景說明
在做系統(tǒng)集群部署時(shí),涉及到兩個(gè)或多個(gè)服務(wù)器之間文件同步.在軟件層面linux服務(wù)環(huán)境找到以下兩種同步方式
- 利用linux NFS功能將網(wǎng)絡(luò)共享文件掛載成本地目錄
- 采用文件監(jiān)聽,實(shí)時(shí)推送
服務(wù)器資源如下
- 服務(wù)器1 10.2.4.51 ,作為主服務(wù)器
- 服務(wù)器2 10.2.4.52 ,作為從服務(wù)器
2 NFS網(wǎng)絡(luò)共享配置
2.1 主服務(wù)器
2.1.1 安裝應(yīng)用包
yum install -y nfs-utils rpcbind #nfs安裝命令 author: herbert qq:464884492 systemctl enable nfs #將nfs設(shè)置開機(jī)啟動(dòng) systemctl enable rpcbind #將rpcbind設(shè)置開機(jī)啟動(dòng)
2.1.2 共享配置
主服務(wù)建立需要共享的文件夾
mkdir /home/nfs_data # 主服務(wù)需要共享的目錄
配置從服務(wù)可以訪問主服務(wù)器
vi /etc/exports #author: herbert qq:464884492
設(shè)置內(nèi)容為
/home/nfs_data/ 10.2.4.52(rw,sync,no_root_squash)
重啟服務(wù),注意一定要先啟動(dòng) rpcbind
systemctl stop nfs systemctl stop rpcbind systemctl start rpcbind systemctl start nfs showmount -e # 可以檢查NFS配置是否生效 # 配置正確后,會(huì)有一下提示信息 Export list for hk51: /home/nfs_data 10.2.4.52
2.1.3 防火墻配置
如果服務(wù)器需要開啟防火墻,需要在防火墻添加服務(wù),可以通過firewall-cmd --state
防火墻開啟狀態(tài)
firewall-cmd --add-service=nfs --permanent --zone=public firewall-cmd --add-service=mountd --permanent --zone=public firewall-cmd --add-service=rpc-bind --permanent --zone=public firewall-cmd --reload #重新載入配置,使其生效
2.2 從服務(wù)器
2.2.1 應(yīng)用包安裝
yum -y install nfs-utils
2.2.2 掛載配置
在相同的路徑建立同樣的目錄
mkdir /home/nfs_data # 從服務(wù)需要共享的目錄
掛載目錄
mount -t nfs -o sync,noac 10.2.4.51:/home/nfs_data /home/nfs_data #目錄掛載
檢查掛載
df -h #查看掛載
配置開機(jī)啟動(dòng)掛載
vi /etc/fstab #追加內(nèi)容 10.2.4.51:/home/nfs_data /home/nfs_data/ nfs sync,noac 0 0
3 文件實(shí)時(shí)監(jiān)聽同步
3.1 SSH互信配置
主服務(wù)器和從服務(wù)分別生成自己的公鑰,命令如下
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa # 生成證書 cd ~/.ssh/ #切換目錄 touch authorized_keys #生成認(rèn)證文件 cat id_rsa.pub >>authorized_keys #復(fù)制公鑰到認(rèn)證文件 scp authorized_keys 10.2.4.52:/root/.ssh #遠(yuǎn)程復(fù)制自己公鑰到對(duì)方服務(wù)器 service sshd restart #重啟SSH服務(wù)
主服務(wù)器和從服務(wù)器 authorized_keys 文件,保存所有需要免密登錄服務(wù)器的公鑰信息即id_rsa.pub
文件中的值
3.2 同步軟件安裝
主服務(wù)器和從服務(wù)器同時(shí)安裝應(yīng)用包
yum -y install inotify-tools yum -y install unison #author: herbert qq:464884492
主服務(wù)器從服務(wù)器在相同路徑建立需要實(shí)時(shí)共享的目錄
mkdir /home/sync_data
3.3 同步腳本編寫
主服務(wù)器(10.2.4.51)監(jiān)聽同步腳本,文件名 /home/runfilesync.sh
#/bin/bash dstIp="10.2.4.52" src="/home/sync_data" dst="/home/sync_data" /usr/bin/inotifywait -mrq -e create,delete,modify,move $src | while read line; do /usr/bin/unison -batch $src ssh://$dstIp/$dst echo -n "$line " >> /var/log/inotify.log echo `date | cut -d " " -f1-4` >> /var/log/inotify.log done
從服務(wù)器(10.2.4.52)監(jiān)聽同步腳本,文件名 /home/runfilesync.sh
#/bin/bash dstIp="10.2.4.51" src="/home/sync_data" dst="/home/sync_data" /usr/bin/inotifywait -mrq -e create,delete,modify,move $src | while read line; do /usr/bin/unison -batch $src ssh://$dstIp/$dst echo -n "$line " >> /var/log/inotify.log echo `date | cut -d " " -f1-4` >> /var/log/inotify.log done
3.4 運(yùn)行腳本,開機(jī)自起
腳本需要后臺(tái)運(yùn)行,啟動(dòng)命令如下
nohup sh /home/runfilesync.sh & ps -aux | grep runfilesync #檢查腳本是否在運(yùn)行 #設(shè)置開機(jī)啟動(dòng) author: herbert qq:464884492 crontab -e #追加內(nèi)容 @reboot /home/runfilesync.sh
4 效果測試
- 在主服務(wù)器 /home/nfs_data 和 /home/sync_data 兩個(gè)文件夾中分別添加
touch 地心俠士.txt
,然后ssh到從服務(wù),可以在從服務(wù)器這兩個(gè)文件夾中找到地心俠士.text
- 在從服務(wù)器 /home/nfs_data 和 /home/sync_data 兩個(gè)文件夾中分別添加
touch 小院不小.txt
,然后ssh到主服務(wù),可以在主服務(wù)器這兩個(gè)文件夾中找到小院不小.text
5 總結(jié)
通過軟件或者協(xié)議實(shí)現(xiàn)實(shí)時(shí)同步,以上兩種方法各有優(yōu)劣.采用NFS網(wǎng)絡(luò)共享協(xié)議,必須指定一個(gè)網(wǎng)絡(luò)主節(jié)點(diǎn).采用inotify+unison方式,有點(diǎn)分布式的感覺,無需指定主節(jié)點(diǎn),但同步效果方面和穩(wěn)定性方面會(huì)差一些
文件監(jiān)聽同步軟件inotify
和 unison
安裝需要編譯環(huán)境,安裝時(shí)比較麻煩.我這里提供了rpm
安裝包以及對(duì)應(yīng)依賴包(安裝命令rpm -ivh xxx.rpm
).
到此這篇關(guān)于Linux服務(wù)器實(shí)現(xiàn)文件實(shí)時(shí)同步的方法詳解的文章就介紹到這了,更多相關(guān)Linux服務(wù)器文件同步內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
/etc/security/limits.conf詳解與配置過程
在Linux系統(tǒng)中,通過/etc/security/limits.conf文件和/etc/security/limits.d/目錄下的配置文件,可以設(shè)置用戶或用戶組的資源限制,配置文件中的soft和hard限制分別代表警告級(jí)別和硬性限制,它們需要匹配才能生效2024-10-10Linux之如何設(shè)置CPU Performance模式
這篇文章主要介紹了Linux之如何設(shè)置CPU Performance模式問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06CentOS服務(wù)器+監(jiān)控寶SNMP監(jiān)控全攻略分享
很多人和Sudu一樣都想使用監(jiān)控寶去監(jiān)控自己的linux服務(wù)器,但是因?yàn)榘惭bsnmp存在一些問題導(dǎo)致無法成功設(shè)置snmp的設(shè)置。2010-12-12手把手教你啟用Win10的Linux子系統(tǒng)(圖文超詳細(xì))
這篇文章主要介紹了手把手教你啟用Win10的Linux子系統(tǒng)(圖文超詳細(xì)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12Centos7.3開機(jī)自動(dòng)啟動(dòng)或執(zhí)行指定命令操作
這篇文章主要介紹了Centos7.3開機(jī)自動(dòng)啟動(dòng)或執(zhí)行指定命令操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-11-11