NFS圖片服務器搭建

需求:

在多個不同機器上部署同一個tomcat工程內容做服務器負載均衡(nginx),每個tomcat實例都有上傳靜態文件的功能(比如圖片)。
但是對外訪問的時候,需要一個統一的出口,所以這裏使用NFS文件共享服務。

搭建準備

1.首先準備三臺服務器
1.NFS服務服務器 123.57.41.175
2.tomcat服務器 123.57.41.176
3.tomcat服務器 123.57.41.177
2.服務端安裝NSF服務(CentOS)(123.57.41.175)
1.查看系統是否安裝NFS和RPC
rpm -qa | grep nfs
rpm -qa | grep rpcbind
2.安裝NFS服務:
yum -y install nfs-utils rpcbind
3.服務端配置

在NFS服務端上創建共享目錄/opt/share並設置權限:

mkdir -p /opt/share
chmod 777 /opt/share/
4.編輯exports文件
vim /etc/exports

輸入這句

/opt/share 123.57.41.175(rw,no_root_squash,no_subtree_check,sync)
4.1編輯文件說明:
/opt/share	服務器上共享的目錄
123.57.41.*
指定ip地址的主機:123.57.41.176
	指定子網中的所有主機:192.168.0.0/24192.168.0.0/255.255.255.0
	指定域名的主機:nfs.test.com
	指定域中的所有主機:*.test.com
所有主機:*
括號內選項說明
ro:共享目錄只讀;
rw:共享目錄可讀可寫;
	all_squash:所有訪問用戶都映射爲匿名用戶或用戶組;
	no_all_squash(默認):訪問用戶先與本機用戶匹配,匹配失敗後再映射爲匿名用戶或用戶組;
root_squash(默認):將來訪的root用戶映射爲匿名用戶或用戶組;
no_root_squash:來訪的root用戶保持root帳號權限;
anonuid=<UID>:指定匿名訪問用戶的本地用戶UID,默認爲nfsnobody(65534);
	anongid=<GID>:指定匿名訪問用戶的本地用戶組GID,默認爲nfsnobody(65534);
secure(默認):限制客戶端只能從小於1024的tcp/ip端口連接服務器;
insecure:允許客戶端從大於1024的tcp/ip端口連接服務器;
	sync:將數據同步寫入內存緩衝區與磁盤中,效率低,但可以保證數據的一致性;
	async:將數據先保存在內存緩衝區中,必要時才寫入磁盤;
	wdelay(默認):檢查是否有相關的寫操作,如果有則將這些寫操作一起執行,這樣可以提高效率;
no_wdelay:若有寫操作則立即執行,應與sync配合使用;
	subtree_check(默認) :若輸出目錄是一個子目錄,則nfs服務器將檢查其父目錄的權限;
no_subtree_check :即使輸出目錄是一個子目錄,nfs服務器也不檢查其父目錄的權限,這樣可以提高效率;
5.配置文件生效
exportfs -rv
exportfs命令說明:
不重啓nfs服務應用更新,相關選項如下:
-a 全部掛載或卸載 /etc/exports中的內容
	-r 重新讀取/etc/exports 中的信息 ,並同步更新/etc/exports、/var/lib/nfs/xtab
	-u 卸載單一目錄(和-a一起使用爲卸載所有/etc/exports文件中的目錄)
	-v 在export的時候,將詳細的信息輸出到屏幕上。
6.啓動rpcbind、nfs服務
service rpcbind start
service nfs start

查看RPC服務的註冊狀況

rpcinfo -p localhost

查看RPC是否開啓

service rpcbind status

查看NFS的運行狀態

nfsstat

查詢nfs共享目錄信息

showmount
-a 顯示已經於客戶端連接上的目錄信息
-e IP或者hostname  顯示此IP地址分享出來的目錄
如:showmount -e localhost
3.客戶端配置

安裝nfs-utils客戶端

yum -y install nfs-utils

創建掛載目錄

mkdir /opt/mnt

查看服務器拋出的共享目錄信息

showmount -e 123.57.41.175

爲了提高NFS的穩定性,使用TCP協議掛載,NFS默認用UDP協議

mount -t nfs 123.57.41.175:/opt/share /opt/mnt -o proto=tcp -o nolock

查看掛載情況

df -h

在這裏插入圖片描述

注:另一臺tomcat客戶端服務器同上。

測試:

在任意一臺tomcat所在機器的/opt/mnt目錄下新建一個文件/文件夾,然後去123.57.41.175的NFS服務器上查看/opt/share目錄下是否已經存在同樣的文件/文件夾

nginx提示點:(此爲參考,未驗證)

nginx訪問的時候,可以配置一個訪問靜態資源的server,然後root指向這個NFS的共享文件夾,
就實現了一個tomcat集羣下的文件服務器功能,從統一路徑訪問文件。

tomcat配置虛擬目錄

server.xml中添加host:

   <Context path="/mp3" docBase="/data/nfs" reloadable="true"></Context> 

NSF(Network File System)文檔服務器概念

1.簡介

NFS 就是 Network FileSystem 的縮寫,最早之前是由sun 這家公司所發展出來的。
 它最大的功能就是可以透過網絡,讓不同的機器、不同的操作系統、可以彼此分享個別的檔案 (share files)。
 所以,你也可以簡單的將他看做是一個文件服務器 (file server) 呢!這個 NFS 服務器可以讓你的 PC 來將網絡遠程的 NFS 服務器分享的目錄,掛載到本地端的機器當中, 
 在本地端的機器看起來,那個遠程主機的目錄就好像是自己的一個磁盤分區槽一樣 (partition)!使用上面相當的便利!

2.RPC簡介

NFS 支持的功能相當的多,而不同的功能都會使用不同的程序來啓動, 每啓動一個功能就會啓用一些端口來傳輸數據,因此, NFS 的功能所對應的端口才沒有固定住, 而是隨機取用一些未被使用的小於 1024 的埠口來作爲傳輸之用。但如此一來又造成客戶端想要連上服務器時的困擾, 因爲客戶端得要知道服務器端的相關埠口才能夠聯機吧
此時我們就得需要遠程過程調用 (RPC) 的服務啦!RPC 最主要的功能就是在指定每個 NFS 功能所對應的 port number ,並且回報給客戶端,讓客戶端可以連結到正確的埠口上去。 那 RPC 又是如何知道每個 NFS 的埠口呢?這是因爲當服務器在啓動 NFS 時會隨機取用數個埠口,並主動的向 RPC 註冊,因此 RPC 可以知道每個埠口對應的 NFS 功能,然後 RPC 又是固定使用 port 111 來監聽客戶端的需求並回報客戶端正確的埠口, 所以當然可以讓 NFS 的啓動更爲輕鬆愉快了
所以你要注意,要啓動 NFS 之前,RPC 就要先啓動了,否則 NFS 會無法向 RPC 註冊。 另外,RPC 若重新啓動時,原本註冊的數據會不見,因此 RPC 重新啓動後,它管理的所有服務都需要重新啓動來重新向 RPC 註冊

3.客戶端存取文件過程

1)客戶端會向服務器端的 RPC (port 111) 發出 NFS 檔案存取功能的詢問要求;
2)服務器端找到對應的已註冊的 NFS daemon 埠口後,會回報給客戶端;
3)客戶端了解正確的埠口後,就可以直接與 NFS daemon 來聯機
由於 NFS 的各項功能都必須要向 RPC 來註冊,如此一來 RPC 才能瞭解 NFS 這個服務的各項功能之 port number, PID, NFS 在服務器所監聽的 IP 等等,而客戶端才能夠透過 RPC 的詢問找到正確對應的埠口。 也就是說,NFS 必須要有 RPC 存在時才能成功的提供服務,因此我們稱 NFS 爲 RPC server 的一種

4.所需要的軟件及軟件結構

RPC 主程序:rpcbind
NFS 主程序:nfs-utils
主要配置文件:/etc/exports
NFS 文件系統維護指令:/usr/sbin/exportfs
分享資源的登錄檔:/var/lib/nfs/*tab
客戶端查詢服務器分享資源的指令:/usr/sbin/showmount
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章