1. 程式人生 > >Linux基礎系列:常用命令(5)_nfs服務與nginx服務

Linux基礎系列:常用命令(5)_nfs服務與nginx服務

ash .com access emctl 磁盤 keepalive roo inux iptable

介紹:

  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服務