Linux基礎系列:常用命令(5)_nfs服務與nginx服務
介紹:
NFS 是Network File System的縮寫,即網絡文件系統。一種使用於分散式文件系統的協定,由Sun公司開發,於1984年向外公布。功能是通過網絡讓不同的機器、不同的操作系統能夠彼此分享個別的數據,讓應用程序在客戶端通過網絡訪問位於服務器磁盤中的數據,是在類Unix系統間實現磁盤文件共享的一種方法。
NFS 的基本原則是“容許不同的客戶端及服務端通過一組RPC分享相同的文件系統”,它是獨立於操作系統,容許不同硬件及操作系統的系統共同進行文件的分享。
NFS在文件傳送或信息傳送過程中依賴於RPC協議。RPC,遠程過程調用 (Remote Procedure Call) 是能使客戶端執行其他系統中程序的一種機制。NFS本身是沒有提供信息傳輸的協議和功能的,但NFS卻能讓我們通過網絡進行資料的分享,這是因為NFS使用了一些其它的傳輸協議。而這些傳輸協議用到這個RPC功能的。可以說NFS本身就是使用RPC的一個程序。或者說NFS也是一個RPC SERVER。所以只要用到NFS的地方都要啟動RPC服務,不論是NFS SERVER或者NFS CLIENT。這樣SERVER和CLIENT才能通過RPC來實現PROGRAM PORT的對應。可以這麽理解RPC和NFS的關系:NFS是一個文件系統,而RPC是負責負責信息的傳輸。
安裝nfs服務
1、準備環境
iptables –F 臨時清除防火墻
systemctl stop firewalld
systemctl disable firewalld 關閉開機自啟
setenforce 0
/etc/sysconfig/selinux
#SELINUX=disabled
====》part2:配置ip arping ip地址 ping通時返回ip地址
2、安裝軟件包
yum install rpcbind nfs-utils –y
3、修改配置文件
NFS服務的配置文件:/etc/exports,這個文件是NFS的主要配置文件,不過系統並沒有默認值,
所以這個文件不一定會存在,可能要使用vim手動建立,然後在文件裏面寫入配置內容。
/etc/exports文件內容格式:
<輸出目錄> [客戶端1 選項(訪問權限,用戶映射,其他)] [客戶端2 選項(訪問權限,用戶映射,其他)]
客戶端常用的指定方式
指定ip地址的主機:192.168.0.200
指定子網中的所有主機:192.168.0.0/24 192.168.0.0/255.255.255.0
指定域名的主機:david.bsmart.cn
指定域中的所有主機:*.bsmart.cn
所有主機:*
NFS主要有3類選項:
訪問權限選項
設置輸出目錄只讀:ro
設置輸出目錄讀寫:rw
用戶映射選項
all_squash:將遠程訪問的所有普通用戶及所屬組都映射為匿名用戶或用戶組(nfsnobody);
no_all_squash:與all_squash取反(默認設置);
root_squash:將root用戶及所屬組都映射為匿名用戶或用戶組(默認設置);
no_root_squash:與rootsquash取反;
anonuid=xxx:將遠程訪問的所有用戶都映射為匿名用戶,並指定該用戶為本地用戶(UID=xxx);
anongid=xxx:將遠程訪問的所有用戶組都映射為匿名用戶組賬戶,並指定該匿名用戶組賬戶為本地用戶組賬戶(GID=xxx);
其它選項
secure:限制客戶端只能從小於1024的tcp/ip端口連接nfs服務器(默認設置);
insecure:允許客戶端從大於1024的tcp/ip端口連接服務器;
sync:將數據同步寫入內存緩沖區與磁盤中,效率低,但可以保證數據的一致性;
async:將數據先保存在內存緩沖區中,必要時才寫入磁盤;
wdelay:檢查是否有相關的寫操作,如果有則將這些寫操作一起執行,這樣可以提高效率(默認設置);
no_wdelay:若有寫操作則立即執行,應與sync配合使用;
subtree:若輸出目錄是一個子目錄,則nfs服務器將檢查其父目錄的權限(默認設置);
no_subtree:即使輸出目錄是一個子目錄,nfs服務器也不檢查其父目錄的權限,這樣可以提高效率
例如:vim /etc/exports
/share 192.168.31.0/24(rw,sync,fsid=0)
4、啟動服務
chmod -R o+w /share #開權限(nfs開啟了w權限還不行,others還需要對/share目錄有w權限)
systemctl enable nfs-server.service #為nfs做開機啟動:
systemctl enable rpcbind.service #為rpcbind做開機啟動:
systemctl start rpcbind.service 啟動(必須先啟動rpcbind服務)
systemctl start nfs-server.servic 啟動(必須先啟動rpcbind服務)
5、測試
# showmount -e //服務端默認查看自己共享的服務
# showmount -e NFS服務器IP //客戶端查詢NFS的共享狀態
作業一:nginx反向代理三臺web服務器,實現負載均衡所有的web服務共享一臺nfs的存儲
1、在共享服務端安裝nfs服務,安裝方法見上面介紹
2、在服務端創建共享區間
mkdir /nfs_share
3、編輯配置文件
1 vim /etc/exports
2 編輯內容:
3 /nfs_share 192.168.16.0/24(rw,sync)
4、啟動服務端服務
1 systemctl enable nfs-server.service
2 systemctl enable rpcbind.service
3 systemctl start rpcbind.service
4 systemctl start nfs-server.service
6、客戶端安裝nfs和nginx服務,安裝方法如服務端
7、在客戶端創建將要掛載的目錄 #mkdir /nfs_share_server
8、客戶端掛載NFS的共享目錄 #mount 192.168.16.205:/nfs_share/ /nfs_share_server/
9、在客戶端掛載目錄/nfs_share_server(即服務端共享目錄)創建配置目錄/nfs_share_server/nginx_conf/和web服務目錄/nfs_share_server/server,並分別創建配置文件lb.conf 、web1.conf、web2.confweb3.conf和index.html
10、修改配置文件lb.conf
#user nobody; worker_processes 3; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; #使用客戶端的mime.types庫 default_type application/octet-stream; upstream nginx_webs{ server 192.168.16.206:8080; #ip改為客戶端ip server 192.168.16.206:8081; server 192.168.16.206:8082; } #log_format main ‘$remote_addr - $remote_user [$time_local] "$request" ‘ # ‘$status $body_bytes_sent "$http_referer" ‘ # ‘"$http_user_agent" "$http_x_forwarded_for"‘; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://nginx_webs; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; }
11、修改虛擬web服務的配置文件web1.conf
1 #user nobody; 2 worker_processes 3; 3 4 #error_log logs/error.log; 5 #error_log logs/error.log notice; 6 #error_log logs/error.log info; 7 8 #pid logs/nginx.pid; 9 10 11 events { 12 worker_connections 1024; 13 } 14 15 16 http { 17 include /etc/nginx/mime.types; #改為客戶端類庫 18 default_type application/octet-stream; 19 20 #log_format main ‘$remote_addr - $remote_user [$time_local] "$request" ‘ 21 # ‘$status $body_bytes_sent "$http_referer" ‘ 22 # ‘"$http_user_agent" "$http_x_forwarded_for"‘; 23 24 #access_log logs/access.log main; 25 26 sendfile on; 27 #tcp_nopush on; 28 29 #keepalive_timeout 0; 30 keepalive_timeout 65; 31 32 #gzip on; 33 34 server { 35 listen 8080; #端口改為客戶端端口 36 server_name localhost; 37 38 #charset koi8-r; 39 #access_log logs/host.access.log main; 40 41 location / { 42 root /nfs_share_server/server; #路徑改為客戶端共享NFS下的目錄 43 index index.html index.htm; 44 } 45 46 #error_page 404 /404.html; 47 48 # redirect server error pages to the static page /50x.html 49 # 50 error_page 500 502 503 504 /50x.html; 51 location = /50x.html { 52 root html; 53 } 54
12、客戶端啟動nginx服務
1 pkill -9 nginx 2 /usr/sbin/nginx -c /nfs_share_server/nginx_conf/lb.conf 3 /usr/sbin/nginx -c /nfs_share_server/nginx_conf/web1.conf 4 /usr/sbin/nginx -c /nfs_share_server/nginx_conf/web2.conf 5 /usr/sbin/nginx -c /nfs_share_server/nginx_conf/web3.conf
13、瀏覽器測試
Linux基礎系列:常用命令(5)_nfs服務與nginx服務