搭建架構原理圖以及實時同步概念

0.概念
1.什么是實時同步
百度云同步盤 金山云盤 騰訊檔案
實時監測目錄的變化, 當出現 增 刪 改 時, 則觸發一個動作, 這個動作就是推送至遠程服務器
2.為什么要實時同步
1.解決NFS單點故障問題
2.遷移 ( 本地環境 --> 云環境 )
3.實時同步的原理
4.實時同步的場景
5.實時同步工具選擇
rsync+inotify 復雜
sersync 二進制包,解壓即用 ( 國人開發 )
lsyncd 將sersync替換為lsyncd
3.實時同步案例演示(重點)
| 角色 | 外網IP(nat) | 內網IP(lan) | 安裝工具 |
|---|---|---|---|
| WEB01 | eth0:10.0.0.7 | eth1:172.16.1.7 | httpd,php,可道云 |
| NFS | eth0:10.0.0.31 | eth1:172.16.1.31 | nfs-server |
| BACKUP | eth0:10.0.0.41 | eth1:172.16.1.41 | rsync-server |
🦄1.準備備份服務器backup
💗rsync服務服務端(backup):💗
①rsync服務配置(安裝和組態檔修改)
[root@backup ~]# yum install rsync -y
[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]
comment = welcome to oldboyedu backup!
path = /backup
[data]
comment = welcome to oldboyedu data!
path = /data
行程能夠以什么樣的方式訪問一個檔案取決于運行這個行程的用戶身份,對這個檔案擁有什么樣的權限,
我們這個實驗都用www用戶來管理各個守護行程
②創建用戶,準備虛擬連接用戶
1,創建行程虛擬運行的用戶
[root@backup ~]groupadd -g666 www
[root@backup ~]# useradd -u666 -g666 www
2.創建認證用戶以及認證用戶的密碼/etc/rsync.passwd
格式: Username:Password
[root@backup ~]# cat /etc/rsync.passwd
rsync_backup:1
[root@backup ~]# chmod 600 /etc/rsync.passwd
3.創建接收備份資料目錄,進行授權,
[root@backup ~]# mkdir /backup
[root@backup ~]# chown -R www.www /backup
[root@backup ~]# mkdir /data
[root@backup ~]# chown -R www.wwww /data
4.重啟服務,檢查服務
[root@backup ~]#systemctl start rsyncd
[root@backup ~]#systemctl enable rsyncd
[root@backup ~]#systemctl status rsyncd

5.檢查服務埠號
netstat -lntup |grep rsync
873
💗rsync服務客戶端(nfs):💗
6.測驗一下rsync能否正常作業
③客戶端創建上傳檔案:
[root@nfs01 ~]# rsync -avz cry.txt rsync_backup@172.16.1.41::backup
Password:
sending incremental file list
cry.txt
②服務端查看推送的檔案
[root@backup ~]# cd /backup/
[root@backup backup]# ls
cry.txt
🦄2.準備NFS共享存盤
💗nfs服務服務端(nfs):💗
①nfs服務配置:
[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)
②創建管理用戶組和用戶
[root@nfs01 ~]# groupadd -g 666 www
[root@nfs01 ~]# useradd -u666 -g666 www
③創建共享目錄及設定共享目錄權限
[root@nfs01 ~]# mkdir -p /data
[root@nfs01 ~]# chown www.www /data
④開啟服務下次開啟自啟
[root@nfs01 ~]# systemctl restart nfs
[root@nfs01 ~]# systemctl enable nfs

💗nfs服務客戶端測驗(backup):💗
①安裝nfs服務
[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,測驗能否使用
[root@web01 ~]# mount -t nfs 172.16.1.31:/data /mnt
[root@web01 ~]# touch /mnt/hello
[root@web01 ~]# umount /mnt/

🦄3.準備web站點程式,php撰寫 (httpd php)
web服務服務端(web01):💗
①安裝web服務需要的包
[root@web01 ~]# yum install httpd php php-mbstring php-gd -y
[root@web01 ~]# groupadd -g666 www
[root@web01 ~]# useradd -u666 -g666 www

②修改httpd以www用戶身份運行
[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

③進入站點目錄,下載代碼,授權整個/var/www/html目錄為www (httpd程式就可以通過www身份讀取所有代碼)
[root@web01 ~]# cd /var/www/html #默認網站代碼存放的路徑
[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

④重啟服務,下次開啟自啟
[root@web01 ~]# systemctl restart httpd
[root@web01 ~]# systemctl enable httpd
[root@web01 ~]# systemctl status httpd

⑤將用戶寫入web主機上的視頻類資源,自動的寫入至NFS存盤.
1)我們打開谷歌瀏覽器輸入配置httpd服務web01的外網(10.0.0.7)

2)登陸admin 密碼默認設定為1

3)創建一個我們實驗環境下,測驗上傳視頻用的video檔案夾,

4)我們在web01將nfs共享的目錄掛載到httpd的站點目錄下
[root@web01 ~]# mount -t nfs 172.16.1.31:/data /var/www/html/data/User/admin/home/video/
掛載 選項(指定型別) nfs nfs服務端ip:共享目錄 站點目錄(/var/www/html)/我們創建檔案的路徑/

5)我們現在上傳一個照片,這個照片相當于上傳存盤到nfs的共享目錄/data下,

#nfs的共享目錄/data掛載在站點目錄下(/var/www/html/data/User/admin/home/video),所以我們要在這個路徑下查找上傳的圖片,

🦄4.部署sersync
接入sersync實時同步工具, 同步NFS資料至 備份服務器的data模塊
1.安裝sersync和基礎工具
安裝基礎工具
# yum install inotify-tools rsync -y
我們把windows中rersync實時同步這個工具移動到Linux中的nfs服務器中,

解釋: 為什么我們把resync裝在nfs中?
因為我們用sersync這個工具監控nfs共享目錄/data的增 刪 改 查,然后增量備份上傳到backup(rsync服務端)
[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.編輯一個免互動的密碼檔案,要給/etc/rsync.pass 600權限
[root@nfs01 /]# vim /etc/rsync.pass
[root@nfs01 /]# cat /etc/rsync.pass
1
[root@nfs01 data]# chmod 600 /etc/rsync.pass

4.更改權限
[root@nfs01 ~]# chmod +x /usr/local/sersync/bin/sersync
[root@nfs01 /]# chown -R www.www /usr/local/sersync/bin/sersync

5.啟動resync實時監控工具
[root@nfs01 ~]# /usr/local/sersync/bin/sersync -rdo /usr/local/sersync/conf/confxml.xml

🦄5.測驗三臺機器整套流程(實時同步)
用戶上傳一個視頻 --> /var/video —>nfs–>/data —> push —>rsync---->backup
💗a.web01虛擬機:
第一步:我們開始測驗 首先是上傳一個檔案(檔案名稱為實驗成功大吉大利)在web網頁上,

第二步:我們查看web服務器下的站點目錄(/var/www/html/data/User/admin/home/video)有沒有我們的大吉大利!

web節點測驗成功!!!
💗b.nfs01虛擬機:
第三步:我們查看nfs的共享目錄/data下有沒有大吉大利檔案,因為我們的nfs共享目錄/data,掛載在web01虛擬機的站點目錄下,所以我們查看nfs的共享目錄/data下有大吉大利檔案,

nfs節點測驗成功!!!
第四步:我們手動用一下rsync

💗c.backup虛擬機
第五步:檢查rsync備份/data下是否擁有大吉大利

backup節點測驗成功!!!
🦄6.增加一個web節點
原理圖

1.web02節點配置
[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用戶身份運行
[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.進入站點目錄,下載代碼,授權整個/var/www/html目錄為www (httpd程式就可以通過www身份讀取所有代碼)
[root@web02 ~]# cd /var/www/html #默認網站代碼存放的路徑
[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.重啟服務
[root@web02 ~]# systemctl restart httpd
[root@web02 ~]# systemctl enable httpd
[root@web02 ~]# systemctl status httpd
5.測驗
①.我們把nfs共享目錄/data掛載到web02站點目錄(/var/www/html/data/User/admin/home/video)下,并且上傳一個web站點添加的檔案,
[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服務器故障,如何快速切換 (平滑遷移,冷備方式).
1.在backup備份服務器上配置nfs
①.在backup服務器搭建一個nfs ( 不使用 ,等有故障時能正常切換使用 )
[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的權限為www
[root@backup ~]# head -2 /etc/rsyncd.conf
uid = www
gid = www

[root@backup ~]# chown -R www.www /backup/
③.重啟服務
[root@backup ~]# systemctl restart rsyncd nfs
2 .測驗:我們關閉nfs準備環境
[root@nfs01 sersync]# systemctl stop nfs

3.web卸載nfs ,重新到backup掛載,達到平滑遷移
[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.拓展實時同步的工具 Lsyncd
Lysncd是一款開源的資料實時同步工具,基于inotify和rsync基礎之上進行開發,
lsyncd與sersync一樣,會監控本地目錄,只要當本地目錄發生變化則觸發動作,這個動作就是同步至遠程服務器,Lsyncd應用場景例如CDN鏡像、網站資料備份、網站搬家等等,
1.環境準備
| rsync | 服務端 | 172.16.1.41 | rsync |
|---|---|---|---|
| lsync | 客戶端 | 172.16.1.31 | lsyncd |
[root@nfs01-31:~]# yum install lsyncd~
2.backup服務器環境準備
[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 only = false
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment = "backup dir by oldboy"
path = /backup
3.根據配置初始化環境
[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服務器配置lsync
①安裝lsyncd
[root@nfs01-31:~]# yum install lsyncd
②配置lsyncd,監控本地目錄,觸發則立即同步
[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 #創建密碼檔案
[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
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/182321.html
標籤:其他
上一篇:3、DHCP 網路服務
