linux集群架構 nfs(網路檔案系統)

2022-09-11 02:45:11 字數 3487 閱讀 8495

1.什麼是nfs,具體能幹什麼及使用環境?

nfs network file system網路檔案系統,能為不同主機之間,實現檔案共享,在集群架構中使用。

2.nfs能解決什麼問題及注意事項?

功能:1.解決多台機器靜態資源一致性問題

2.解決多台機器資源共享

3.解決磁碟空間浪費

2.cdn

3.nfs實現原理解析

本地檔案操作1.當使用者執行mkdir命令,bashshell無法完成該命令操作,會將其翻譯給核心

2.kernel核心解析完成後會驅動對應的磁碟裝置,完成檔案目錄的建立

nfs實現原理 1.nfs客戶端執行增、刪等操作,客戶端會使用不同的函式對該操作進行封裝。(windows linux mac)

2.nfs客戶端會通過tcp/ip的方式傳遞給nfs服務端。(可靠)

3.nfs服務端接收到請求後,會先呼叫portmap程序進行埠對映。

4.nfsd程序用於判斷nfs客戶端是否擁有許可權連線nfs服務端。

5.rpc.mount程序判斷客戶端是否有對應的許可權進行驗證。讀  寫

6.idmap程序實現使用者對映和壓縮。

7.最後nfs服務端會將客戶端的函式轉換為本地能執行的命令,然後將命令傳遞至核心,由核心驅動硬體

注意:rpc是乙個遠端過程呼叫,那麼使用nfs必須有rpcbind服務

7.安裝配置nfs服務

1.安裝

[root@nfs ~]# yum install nfs-utils -y

2.配置

[root@nfs ~]# vim /etc/exports

/data 172.16.1.0/24(rw,all_squash,anonuid=666,anongid=666)

3.根據配置初始化環境

[root@nfs data]# groupadd -g 666 www

[root@nfs data]# useradd -u666 -g666 www

[root@nfs data]# id www

uid=666(www) gid=666(www) groups=666(www)

[root@nfs data]# chown -r www.www /data/

4.啟動

[root@nfs ~]# systemctl enable nfs   #加入開機自啟動

[root@nfs ~]# systemctl start nfs       #啟動服務

5.客戶端

[root@backup ~]# yum install nfs-utils -y

[root@backup ~]# showmount -e 172.16.1.31

export list for 172.16.1.31:

/data 172.16.1.0/24

[root@backup ~]# showmount -e 172.16.1.31  #檢視

export list for 172.16.1.31:

/data 172.16.1.0/24

客戶端使用(一定要與服務端使用的匿名使用者一致

[root@web01 ~]# groupadd -g 666 www

[root@web01 ~]# useradd -u666 -g666 www

[root@web01 ~]# mount -t nfs 172.16.1.31:/data/ /media/  #掛載,服務端ip位址為172.16.1.31

6.nfs相關的配置引數

nfs共享引數        引數作用

rw*                讀寫許可權 (最多)

ro                唯讀許可權 (只希望看,不希望寫)

root_squash        當nfs客戶端以root管理員訪問時,對映為nfs伺服器的匿名使用者nfsnobody(不常用)

no_root_squash    當nfs客戶端以root管理員訪問時,對映為nfs伺服器的root管理員(不常用)

no_all_squash    無論nfs客戶端使用什麼賬戶訪問,都不進行使用者壓縮  ( 後面講雲計算課程會用上 )

all_squash        無論nfs客戶端使用什麼賬戶訪問,均對映為nfs伺服器的匿名使用者(常用)

sync*            同時將資料寫入到記憶體與硬碟中,保證不丟失資料

async            優先將資料儲存到記憶體,然後再寫入硬碟;這樣效率更高,但可能會丟失資料

anonuid*        配置all_squash使用,指定nfs的使用者uid,必須存在系統

anongid*        配置all_squash使用,指定nfs的使用者uid,必須存在系統

7.nfs如何共享多個檔案

[root@nfs ~]# cat /etc/exports

/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

/data_2 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

ps:客戶端分別掛載在不同目錄下

8.nfs優缺點,侷限性及應用建議

優點:1.nfs簡單易用,方便部署,資料可靠,服務穩定,滿足中小企業的需求

2.nfs的資料都在檔案系統之上,所有的資料都是能看的見的

侷限性:1.存在單點故障,本身nfs不支援高可用,也不支援集群

2.nfs資料都是明文,並不對資料做任何校驗,也沒有密碼驗證(建議內網使用)

應用建議:1.生產場景應將靜態資料(jpg\png\mp4\**i\css\js)盡可能放置cdn場景進行環境,以此來減少後端儲存壓力

2.如果沒有快取或架構,**等,本身歷史遺留的問題太大,再多儲存也沒意義

9.實現開機自動掛載(因為伺服器不重啟)  

[root@web01 ~]# cat /etc/fstab

172.16.1.31:/data              /media          nfs     defaults        0 0

常見錯誤:

ps:  如果nfs服務端出現問題:  客戶端重啟則會無法啟動成功

1.等待1分38s  自動進入系統

2.進入單使用者模式,注釋開機自啟動nfs

3.將nfs恢復正常

錯誤的示範

#訪問被拒絕 (沒有允許該網段訪問)

[root@backup ~]# mount -t nfs 10.0.0.31:/data /media/

mount.nfs: access denied by server while mounting 10.0.0.31:/data

#能夠連線,但是許可權被拒絕

[root@backup mnt]# touch file

touch: cannot touch 『file』: permission denied

ps:ls /var/lib/nfs/etab    檢視nfs許可權路徑

Linux集群架構

高可用集群通常為2臺伺服器 功能和角色是一樣的 一台在工作,另一台作為冗餘。當提供服務的機器宕機,冗餘將接替繼續提供服務,這樣就可以提供系統可用的效率。高可用集群的衡量標準要保證集群服務100 時間永遠完全可用,幾乎可以說是一件不可能完成的任務。比如,在這幾年雙十一剛開始的時候,一下子進來買東西的人...

linux集群架構 keepalived高可用

1.什麼是高可用,為什麼要設計高可用?兩台機器啟動著相同的業務系統時,當有一台宕機,另外一台伺服器能快速的接管,對於訪問的使用者是減少系統不能提供服務的時間 2.高可用使用什麼工具來實現?硬體還是軟體?軟體 keepalived 3.keepalived如何實現高可用?通過vrrp協議實現,虛擬路由...

Mycat集群架構

架構圖集群總共需要有8臺機子,mysql需要4臺,mycat需要2臺,負載均衡和高可用需要2臺。之所以mycat需要集群這樣的架構,是為了避免mycat單點失效的情況,mysql主機有4臺 db1 db4 其中db1和db3是組一 主主複製 db2和db4是組二 主主複製 之所以需要主主複製是因為m...