知識(shí)
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營(yíng)銷的便利,運(yùn)營(yíng)的高效,讓網(wǎng)站成為營(yíng)銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!
web+nfs+rsync+sersync 綜合實(shí)驗(yàn)(實(shí)時(shí)同步resync,加多臺(tái)web節(jié)點(diǎn),nfs
發(fā)表時(shí)間:2020-10-19
發(fā)布人:葵宇科技
瀏覽次數(shù):110
搭建架構(gòu)原理圖以及實(shí)時(shí)同步概念
0.概念
1.什么是實(shí)時(shí)同步
百度云同步盤 金山云盤 騰訊文檔
實(shí)時(shí)監(jiān)測(cè)目錄的變化, 當(dāng)出現(xiàn) 增 刪 改 時(shí), 則觸發(fā)一個(gè)動(dòng)作, 這個(gè)動(dòng)作就是推送至遠(yuǎn)程服務(wù)器
2.為什么要實(shí)時(shí)同步
1.解決NFS單點(diǎn)故障問題
2.遷移 ( 本地環(huán)境 --> 云環(huán)境 )
3.實(shí)時(shí)同步的原理
4.實(shí)時(shí)同步的場(chǎng)景
5.實(shí)時(shí)同步工具選擇
rsync+inotify 復(fù)雜
sersync 二進(jìn)制包,解壓即用 ( 國(guó)人開發(fā) )
lsyncd 將sersync替換為lsyncd
3.實(shí)時(shí)同步案例演示(重點(diǎn))
角色外網(wǎng)IP(nat)內(nèi)網(wǎng)IP(lan)安裝工具WEB01eth0:10.0.0.7eth1:172.16.1.7httpd,php,可道云NFSeth0:10.0.0.31eth1:172.16.1.31nfs-serverBACKUPeth0:10.0.0.41eth1:172.16.1.41rsync-server🦄1.準(zhǔn)備備份服務(wù)器backup
💗rsync服務(wù)服務(wù)端(backup):💗
①rsync服務(wù)配置(安裝和配置文件修改)
[root@backup ~]# yum install rsync -y
[root@backup ~]# cat /etc/rsyncd.conf
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read>= false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#############################
[backup]
comment = welcome to oldboyedu backup!
path = /backup
[data]
comment = welcome to oldboyedu data!
path = /data
②創(chuàng)建用戶,準(zhǔn)備虛擬連接用戶
1,創(chuàng)建進(jìn)程虛擬運(yùn)行的用戶
[root@backup ~]# useradd rsync -M -s /sbin/nologin
[root@backup ~]# id rsync
uid=1001(rsync) gid=1001(rsync) 組=1001(rsync)
2.創(chuàng)建認(rèn)證用戶以及認(rèn)證用戶的密碼/etc/rsync.passwd
格式: Username:Password
[root@backup ~]# cat /etc/rsync.passwd
rsync_backup:1
[root@backup ~]# chmod 600 /etc/rsync.passwd
3.創(chuàng)建接收備份數(shù)據(jù)目錄,進(jìn)行授權(quán)。
[root@backup ~]# mkdir /backup
[root@backup ~]# chown -R rsync.rsync /backup/
[root@backup ~]# mkdir /data
[root@backup ~]# chown -R rsync.rsync /data/
4.重啟服務(wù),檢查服務(wù)
[root@backup ~]#systemctl start rsyncd
[root@backup ~]#systemctl enable rsyncd
[root@backup ~]#systemctl status rsyncd
5.檢查服務(wù)端口號(hào)
netstat -lntup |grep rsync
873
💗rsync服務(wù)客戶端(nfs):💗
6.測(cè)試一下rsync能否正常工作
③客戶端創(chuàng)建上傳文件:
[root@nfs01 ~]# rsync -avz cry.txt rsync_backup@172.16.1.41::backup
Password:
sending incremental file list
cry.txt
②服務(wù)端查看推送的文件
[root@backup ~]# cd /backup/
[root@backup backup]# ls
cry.txt
🦄2.準(zhǔn)備NFS共享存儲(chǔ)
💗nfs服務(wù)服務(wù)端(nfs):💗
①nfs服務(wù)配置:
[root@nfs01 ~]# yum install nfs-utils -y
[root@nfs01 ~]# cat /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
②創(chuàng)建管理用戶組和用戶
[root@nfs01 ~]# groupadd -g 666 www
[root@nfs01 ~]# useradd -u666 -g666 www
③創(chuàng)建共享目錄及設(shè)置共享目錄權(quán)限
[root@nfs01 ~]# mkdir -p /data
[root@nfs01 ~]# chown www.www /data
④開啟服務(wù)下次開啟自啟
[root@nfs01 ~]# systemctl restart nfs
[root@nfs01 ~]# systemctl enable nfs
💗nfs服務(wù)客戶端測(cè)試(backup):💗
①安裝nfs服務(wù)
[root@web01 ~]# yum install nfs-utils -y
②查看共享目錄
[root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
③將共享目錄掛載到本地/mnt,測(cè)試能否使用
[root@web01 ~]# mount -t nfs 172.16.1.31:/data /mnt
[root@web01 ~]# touch /mnt/hello
[root@web01 ~]# umount /mnt/
🦄3.準(zhǔn)備web站點(diǎn)程序,php編寫 (httpd php)
web服務(wù)服務(wù)端(web01):💗
①安裝web服務(wù)需要的包
[root@web01 ~]# yum install httpd php php-mbstring php-gd -y
[root@web01 ~]# groupadd -g666 www
[root@web01 ~]# useradd -u666 -g666 www
②修改httpd以www用戶身份運(yùn)行
[root@web01 ~]# sed -i '/^User/c User www' /etc/httpd/conf/httpd.conf
[root@web01 ~]# sed -i '/^Group/c Group www' /etc/httpd/conf/httpd.conf
③進(jìn)入站點(diǎn)目錄,下載代碼,授權(quán)整個(gè)/var/www/html目錄為www (httpd程序就可以通過www身份讀取所有代碼)
[root@web01 ~]# cd /var/www/html #默認(rèn)網(wǎng)站代碼存放的路徑
[root@web01 html]# wget http://static.kodcloud.com/update/download/kodexplorer4.40.zip
[root@web01 html]# unzip kodexplorer4.40.zip
[root@web01 html]# chown -R www.www /var/www/html
④重啟服務(wù),下次開啟自啟
[root@web01 ~]# systemctl restart httpd
[root@web01 ~]# systemctl enable httpd
[root@web01 ~]# systemctl status httpd
⑤將用戶寫入web主機(jī)上的視頻類資源,自動(dòng)的寫入至NFS存儲(chǔ).
1)我們打開谷歌瀏覽器輸入配置httpd服務(wù)web01的外網(wǎng)(10.0.0.7)
2)登陸admin 密碼默認(rèn)設(shè)置為1
3)創(chuàng)建一個(gè)我們實(shí)驗(yàn)環(huán)境下,測(cè)試上傳視頻用的video文件夾。
4)我們?cè)趙eb01將nfs共享的目錄掛載到httpd的站點(diǎn)目錄下
[root@web01 ~]# mount -t nfs 172.16.1.31:/data /var/www/html/data/User/admin/home/video/
掛載 選項(xiàng)(指定類型) nfs nfs服務(wù)端ip:共享目錄 站點(diǎn)目錄(/var/www/html)/我們創(chuàng)建文件的路徑/
5)我們現(xiàn)在上傳一個(gè)照片,這個(gè)照片相當(dāng)于上傳存儲(chǔ)到nfs的共享目錄/data下。
#nfs的共享目錄/data掛載在站點(diǎn)目錄下(/var/www/html/data/User/admin/home/video),所以我們要在這個(gè)路徑下查找上傳的圖片。
🦄4.部署sersync
接入sersync實(shí)時(shí)同步工具, 同步NFS數(shù)據(jù)至 備份服務(wù)器的data模塊
1.安裝sersync
我們把windows中rersync實(shí)時(shí)同步這個(gè)工具移動(dòng)到Linux中的nfs服務(wù)器中,
解釋: 為什么我們把resync裝在nfs中?
因?yàn)槲覀冇胹ersync這個(gè)工具監(jiān)控nfs共享目錄/data的增 刪 改 查,然后增量備份上傳到backup(rsync服務(wù)端)
[root@nfs01 ~]# unzip sersync_installdir_64bit.zip
[root@nfs01 ~]# mv sersync_installdir_64bit/sersync/ /usr/local/
2.配置
[root@nfs01 /]# vim /usr/local/sersync/conf/confxml.xml
3.編輯一個(gè)免交互的密碼文件,要給/etc/rsync.pass 600權(quán)限
[root@nfs01 /]# vim /etc/rsync.pass
[root@nfs01 /]# cat /etc/rsync.pass
1
[root@nfs01 data]# chmod 600 /etc/rsync.pass
4.更改權(quán)限
[root@nfs01 ~]# chmod +x /usr/local/sersync/bin/sersync
[root@nfs01 /]# chown -R www.www /usr/local/sersync/bin/sersync
5.啟動(dòng)resync實(shí)時(shí)監(jiān)控工具
[root@nfs01 ~]# /usr/local/sersync/bin/sersync -rdo /usr/local/sersync/conf/confxml.xml
🦄5.測(cè)試三臺(tái)機(jī)器整套流程(實(shí)時(shí)同步)
用戶上傳一個(gè)視頻 --> /var/video —>nfs–>/data —> push —>rsync---->backup
💗a.web01虛擬機(jī):
第一步:我們開始測(cè)試 首先是上傳一個(gè)文件(文件名稱為實(shí)驗(yàn)成功大吉大利)在web網(wǎng)頁(yè)上。
第二步:我們查看web服務(wù)器下的站點(diǎn)目錄(/var/www/html/data/User/admin/home/video)有沒有我們的大吉大利!
web節(jié)點(diǎn)測(cè)試成功!!!
💗b.nfs01虛擬機(jī):
第三步:我們查看nfs的共享目錄/data下有沒有大吉大利文件,因?yàn)槲覀兊膎fs共享目錄/data,掛載在web01虛擬機(jī)的站點(diǎn)目錄下,所以我們查看nfs的共享目錄/data下有大吉大利文件。
nfs節(jié)點(diǎn)測(cè)試成功!!!
第四步:我們手動(dòng)用一下rsync
💗c.backup虛擬機(jī)
第五步:檢查rsync備份/data下是否擁有大吉大利
backup節(jié)點(diǎn)測(cè)試成功!!!
🦄6.增加一個(gè)web節(jié)點(diǎn)
原理圖
1.web02節(jié)點(diǎn)配置
[root@web02 ~]# yum install nfs-utils -y
[root@web02~]# yum install httpd php php-mbstring php-gd -y
[root@web02 ~]# groupadd -g666 www
[root@web02 ~]# useradd -u666 -g666 www
#
2.修改httpd以www用戶身份運(yùn)行
[root@web02 ~]# sed -i '/^User/c User www' /etc/httpd/conf/httpd.conf
[root@web02 ~]# sed -i '/^Group/c Group www' /etc/httpd/conf/httpd.conf
3.進(jìn)入站點(diǎn)目錄,下載代碼,授權(quán)整個(gè)/var/www/html目錄為www (httpd程序就可以通過www身份讀取所有代碼)
[root@web02 ~]# cd /var/www/html #默認(rèn)網(wǎng)站代碼存放的路徑
[root@web02 html]# wget http://static.kodcloud.com/update/download/kodexplorer4.40.zip
[root@web02 html]# unzip kodexplorer4.40.zip
[root@web02 html]# chown -R www.www /var/www/html
4.重啟服務(wù)
[root@web02 ~]# systemctl restart httpd
[root@web02 ~]# systemctl enable httpd
[root@web02 ~]# systemctl status httpd
5.測(cè)試
①.我們把nfs共享目錄/data掛載到web02站點(diǎn)目錄(/var/www/html/data/User/admin/home/video)下,并且上傳一個(gè)web站點(diǎn)添加的文件。
[root@web02 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
[root@web02 ~]# mount -t nfs 172.16.1.31:/data /var/www/html/data/User/admin/home/video/
②查看web02下
③查看web01下
④查看nfs01下
⑤推送到backup的data模塊下
⑥查看backup下
🦄7.模擬nfs服務(wù)器故障,如何快速切換 (平滑遷移,冷備方式).
1.在backup備份服務(wù)器上配置nfs
①.在backup服務(wù)器搭建一個(gè)nfs ( 不使用 ,等有故障時(shí)能正常切換使用 )
[root@backup ~]# yum install nfs-utils -y
[root@backup ~]# cat /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
[root@backup ~]# groupadd -g666 www
[root@backup ~]# useradd -u666 -g666 www
[root@backup ~]# chown -R www.www /data/
②.修改rsync的權(quán)限為www
[root@backup ~]# head -2 /etc/rsyncd.conf
uid = www
gid = www
[root@backup ~]# chown -R www.www /backup/
③.重啟服務(wù)
[root@backup ~]# systemctl restart rsyncd nfs
2 .測(cè)試:我們關(guān)閉nfs準(zhǔn)備環(huán)境
[root@nfs01 sersync]# systemctl stop nfs
3.web卸載nfs ,重新到backup掛載,達(dá)到平滑遷移
[root@web01 ~]# umount -lf 172.16.1.31:/data && mount -t nfs 172.16.1.41:/data /var/www/html/data/User/admin/home/video
[root@web02 ~]# umount -lf 172.16.1.31:/data && mount -t nfs 172.16.1.41:/data /var/www/html/data/User/admin/home/video~
8.拓展實(shí)時(shí)同步的工具 Lsyncd
Lysncd是一款開源的數(shù)據(jù)實(shí)時(shí)同步工具,基于inotify和rsync基礎(chǔ)之上進(jìn)行開發(fā)。
lsyncd與sersync一樣,會(huì)監(jiān)控本地目錄,只要當(dāng)本地目錄發(fā)生變化則觸發(fā)動(dòng)作,這個(gè)動(dòng)作就是同步至遠(yuǎn)程服務(wù)器。Lsyncd應(yīng)用場(chǎng)景例如CDN鏡像、網(wǎng)站數(shù)據(jù)備份、網(wǎng)站搬家等等。
1.環(huán)境準(zhǔn)備
rsync服務(wù)端172.16.1.41rsynclsync客戶端172.16.1.31lsyncd[root@nfs01-31:~]# yum install lsyncd~
2.backup服務(wù)器環(huán)境準(zhǔn)備
[root@backup-41:~]# cat /etc/rsyncd.conf
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read>= false
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment = "backup dir by oldboy"
path = /backup
3.根據(jù)配置初始化環(huán)境
[root@backup-41:~]# mkdir /backup
[root@backup-41:~]# useradd rsync
[root@backup-41:~]# ll /backup/ -d
drwxr-xr-x 2 root root 6 Aug 2 15:40 /backup/
[root@backup-41:~]# chown rsync.rsync /backup/
[root@backup-41:~]# echo "rsync_backup:123456" >/etc/rsync.password
[root@backup-41:~]# chmod 600 /etc/rsync.password
[root@backup-41:~]# systemctl start rsyncd.service
4.NFS服務(wù)器配置lsync
①安裝lsyncd
[root@nfs01-31:~]# yum install lsyncd
②配置lsyncd,監(jiān)控本地目錄,觸發(fā)則立即同步
[root@nfs01-31:~]# cat /etc/lsyncd.conf
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status",
inotifyMode = "CloseWrite",
maxProcesses = 8,
}
sync {
default.rsync,
source = "/data",
target = "rsync_backup@172.16.1.41::backup",
delete= true,
exclude = { ".*" },
delay = 1,
rsync = {
binary = "/usr/bin/rsync",
archive = true,
compress = true,
verbose = true,
password_file = "/etc/rsync.pwd",
_extra = {"--bwlimit=200"}
}
}
③配置
[root@nfs01-31:~]# mkdir /data
[root@nfs01-31:~]# echo "123456" >/etc/rsync.pwd #創(chuàng)建密碼文件
[root@nfs01-31:~]# chmod 600 /etc/rsync.pwd
[root@nfs01-31:~]# systemctl start lsyncd.service
[root@nfs01-31:~]# touch /data/{1..10}
[root@nfs01-31:~]# rsync -avz /etc/passwd rsync_backup@172.16.1.41::backup
相關(guān)案例查看更多
相關(guān)閱讀
- 網(wǎng)絡(luò)營(yíng)銷
- 花農(nóng)小程序
- 云南網(wǎng)站建設(shè)專業(yè)品牌
- 搜索引擎排名
- 汽車報(bào)廢回收
- 小程序開發(fā)
- 昆明軟件公司
- 云南手機(jī)網(wǎng)站建設(shè)
- 企業(yè)網(wǎng)站
- 網(wǎng)站上首頁(yè)
- 云南省建設(shè)廳網(wǎng)站官網(wǎng)
- 云南小程序開發(fā)課程
- 快排推廣
- 云南小程序商城
- 微分銷
- 報(bào)廢車拆解軟件
- 昆明小程序開發(fā)
- 軟件定制
- 云南小程序哪家好
- 云南小程序開發(fā)公司哪家好
- 云南小程序開發(fā)哪家好
- 英文網(wǎng)站建設(shè)公司
- 小程序定制
- python開發(fā)小程序
- 昆明做網(wǎng)站
- 生成海報(bào)
- 網(wǎng)站制作
- 小程序開發(fā)課程
- 網(wǎng)站建設(shè)
- 云南建設(shè)廳網(wǎng)站