NFS服務


第1章 NFS介紹

1.1 NFS的概念

NFS是Network File System的縮寫,即網絡文件系統,它的主要功能是通過網絡(一般是局域網)讓不同的主機系統之間可以共享文件或目錄。NFS客戶端(一般為應用服務器如web)可以通過mount掛載的方式將NFS服務器端共享的數據目錄掛載到NFS客戶端本地系統中(就是某一個掛載點下)

1.2 NFS在企業中的應用場景

在企業集群架構的工作場景中,NFS網絡文件系統一般被用來存儲共享視頻、圖片、附件等靜態資源文件,通常網站用戶上傳的文件都會放到NFS共享里,然后前端所有的節點訪問這些靜態資源時都會讀取NFS存儲上的資源

1.2.1 NFS文件系統存在的作用

01. 實現數據信息的共享

02. 實現數據信息的一致

1.2.2 共享存儲的實現方式

1.硬件實現共享存儲

IBM(服務器 小型機 大型機 存儲 DS V7000 V5000) Oracle EMC ==>去IOE

2.軟件實現共享存儲

本地文件系統NFS 分布式文件系統mfs FTP samba

說明:互聯網領域發展過程詳細了解(浪潮之巔)

1.3 NFS共享系統原理

01. 在NFS服務器端創建一個共享目錄/video

02. 通過mount網絡掛載,將這個共享目錄/video掛載到客戶端本地掛載點(不同客戶端的掛載點可以不相同)

03. 客戶端掛載完畢后,進入NFS客戶端掛載點所在的目錄就可以看到NFS服務器端/video共享出來的目錄下的所有數據。在客戶端的掛載目錄上進行創建/刪除/查看數據操作時,就相當於在服務器進行的創建/刪除/查看操作

顯示本地共享服務器掛載的基本信息

 1 [root@nfs01 ~]# df -h
 2 
 3 Filesystem         Size  Used  Avail Use% Mounted on
 4 
 5 /dev/sda3          6.9G  1.6G  5.0G  24% /
 6 
 7 tmpfs              491M    0  491M   0% /dev/shm
 8 
 9 /dev/sda1          190M 33M  147M  19% /boot
10 
11 172.16.1.31:/data  6.9G  1.6G  5.0G  24% /mnt  #使用率到達99%時擴容對端NFS

說明:mount -t 指定掛載類型   源           目標

mount -t     nfs    172.16.1.31:/data    /mnt

1.4 RPC遠程過程調用

1.4.2 NFS工作流程原理

1.4.2.1  服務端三部曲

01.啟動RPC服務/etc/init.d/rpcbind start

02.啟動NFS服務/etc/init.d/nfs start

03.NFS服務會向RPC服務注冊啟動的端口信息(只能注冊一次,要想注冊第二次要重啟NFS服務)

1.4.2.2  客戶端三部曲

01.啟動RPC服務/etc/init.d/rpcbind start,通過TCP/IP和服務端的RPC服務建立連接

02.通過mount進行掛載,將遠程磁盤目錄掛載到本地

03.通過客戶端RPC服務向服務端RPC服務請求NFS服務端口信息,根據不同的進程和端口進行應用NFS服務

1.5 NFS服務網絡文件共享RPC服務

由於NFS支持的功能很多,當NFS啟動時會出現多個進程,網絡服務又會自動生成一些隨機的端口信息。NFS的隨機端口造成了客戶端與服務端的通信障礙,因為NFS客戶端必須要知道NFS服務器端的數據傳輸端口才能進行通信,這時就生成了RPC遠程調用服務

當RPC啟動時會記錄每個NFS功能所對應的端口信息,由RPC服務提供用戶訪問,並且在NFS客戶端請求時將該端口和功能對應的信息傳遞給請求數據的NFS客戶端,從而確保客戶端可以連接到正確的NFS端口,達到實現數據傳輸交互數據目的

 

第2章 NFS服務器端部署環境准備

2.1 NFS服務端部署

服務器系統

角色

IP

Centos6.9x86_64

NFS客戶端(web-client)

10.0.0.7

Centos6.9x86_64

NFS服務器端(nfs-server)

10.0.0.8

Centos6.9x86_64

NFS客戶端(web-client)

10.0.0.9

2.1.1 centos6.x x86_64模擬環境信息

NFS服務器端操作系統信息及內核版本信息

 1 [root@nfs01 ~]# cat /etc/redhat-release
 2 
 3 CentOS release 6.9 (Final)
 4 
 5 [root@nfs01 ~]# uname -r
 6 
 7 2.6.32-696.el6.x86_64
 8 
 9 [root@nfs01 ~]# uname -m
10 
11 x86_64

NFS客戶端操作系統信息及內核版本信息如下:

 1 [root@web01 ~]# cat /etc/redhat-release
 2 
 3 CentOS release 6.9 (Final)
 4 
 5 [root@web01 ~]# uname -r
 6 
 7 2.6.32-696.el6.x86_64
 8 
 9 [root@web01 ~]# uname -m
10 
11 x86_64

2.1.2 檢查NFS RPC服務軟件是否安裝

 1 rpm -qa |grep nfs 2 3 rpm -qa |grep rpc 

說明:當不知道軟件名字時候,可以用rpm -qa|grep -E "nfs-|rpcbind"來過濾包含在引號內的字符串;默認centos6.x系統沒有安裝nfs和rpc軟件包(centos5默認會安裝)

2.1.3 進行yum安裝nfs與rpc服務軟件

注意:這里安裝的rpc軟件是rpcbind,centos5.x安裝portmap

 1 yum install -y nfs-utils rpcbind 

查看已安裝的軟件包里的內容

 1 [root@nfs01 ~]# rpm -ql nfs-utils
 2 
 3 /etc/rc.d/init.d/nfs     #啟動腳本命令
 4 
 5 /usr/sbin/exportfs    #NFS共享服務的管理命令
 6 
 7 /usr/sbin/showmount  #查看NFS共享列表信息
 8 
 9 [root@nfs01 ~]# rpm -ql rpcbind
10 
11 /etc/rc.d/init.d/rpcbind #啟動腳本命令
12 
13 /usr/sbin/rpcinfo      #查看NFS注冊信息

查看某個命令/文件屬於哪個大禮包

 1 rpm -qf `which ssh` 

2.1.4 進行NFS配置文件/etc/exports編寫

NFS服務的默認配置文件路徑為/etc/exports且默認為空

說明:NFS默認配置文件是存在的,但是沒有內容,需要用戶自行配置

1 vim /etc/exports
2 
3 #share /data by shine for share at 20171013
4 
5 /data 172.16.1.0/24(rw,sync)

第一部分:/data  <=指定共享目錄信息

第二部分:172.16.1.0/24  <=指定目標網段,表示允許指定網段主機掛載到本地的共享目錄上

第二部分:(rw,sync)  <=定義共享服務相關參數信息

rw表示讀寫,對共享目錄設置的權限;

sync同步,數據先寫入NFS服務器內存,立刻同步到磁盤中==>即直接寫入到磁盤中

說明:修改/etc/exports后,需執行/etc/init.d/nfs reload平滑重啟或exportfs -rv重新加載NFS配置,不進行重啟NFS

2.1.5 創建共享目錄並更改權限

 1 mkdir -p /data 2 3 chown -R nfsnobody.nfsnobody /data 4 5 ll -d /data 

在NFS服務器端把要共享的NFS目錄賦予NFS默認用戶nfsnobody用戶和用戶組權限,如果不設置則會導致NFS客戶端無法通過NFS本地共享目錄權限寫入;當然也可以給NFS服務器端本地共享目錄777的權限,但工作中最好不要用,因為777的權限太大

說明:NFS共享目錄管理用戶這里為nfsnobody,服務端(個人)沒有創建nfsnobody用戶但仍可以賦予用戶權限,是由於nfsnobody用戶是在進行nfs軟件的yum安裝時自動創建的

2.1.6 啟動NFS服務

1.首先啟動rpc服務(檢查狀態/etc/init.d/rpcbind status)

 1 /etc/init.d/rpcbind start 

2.查看NFS向rpc服務注冊的本地端口信息

 1 ps -ef |grep rpcbind 2 3 netstat rpcbind 4 5 rpcinfo -p 10.0.0.31 #這時由於NFS還未啟動,所以沒有過多注冊的端口映射信息 

3.其次啟動NFS服務

 1 /etc/init.d/nfs start 2 3 rpcinfo -p 10.0.0.31 #NFS服務啟動會有很多端口和功能的對應,每次啟動時除了873和2049其他端口均隨機 

說明:如果rpcbind服務未啟動,執行命令rpcinfo -p localhost檢查時,會報如下錯誤

rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused

解決辦法:執行/etc/init.d/rpcbind start啟動rpcbind服務即可

2.1.7 檢查NFS服務配置及本地測試掛載

測試掛載結果

1 mount -t nfs 172.16.1.31:/data /mnt  #mount -t 掛載類型 要掛載的服務器:共享目錄 客戶端的掛載點
2 
3 df -h  #查看掛載后的結果
4 
5 #172.16.1.31:/data  8.8G  1.7G  6.7G  20% /mnt
6 
7 mount

2.2 NFS客戶端部署(以下步驟均在backup和web01服務器中執行)

2.2.1 檢查NFS RPC服務軟件是否安裝

 1 rpm -qa |grep nfs 2 3 rpm -qa |grep rpcbind 

2.2.2 進行yum安裝nfs與rpc服務軟件

 1 yum install -y nfs-utils rpcbind 

說明:進行同時安裝的操作:在命令行界面右鍵→"發送鍵輸入到所有會話"

nfs-utils和rpcbind軟件安裝后,均不是必須要啟動的,也可以不啟動。但是,軟件必須要安裝

  如果nfs/rpc軟件不安裝會造成的問題:

a 客戶端無法使用showmount/rpcinfo命令

b 掛載時客戶端無法識別nfs/rpc文件系統類型

2.2.3 檢查nfs客戶端是否有可以進行共享掛載目錄的包

 1 rpm -qf `which showmount` 

說明:showmount使用,需要安裝nfs-utils軟件

2.2.4 進行nfs客戶端共享目錄掛載

進行共享目錄掛載

 1 mount -t nfs 172.16.1.31:/data /mnt 

說明:只要nfs服務端進行修改配置文件重新掛載,客戶端也必須重新進行掛載

2.2.5 進行文件創建/刪除測試檢查

在備份服務器中,新建oldboy文件

 1 [root@web01 ~]# touch /mnt/oldboy.txt 2 3 [root@web01 ~]# rm -f /mnt/oldboy.txt 

此時,nfs和web客戶端均能共享到oldboy文件

注意:客戶端測試如果有異常,可以把測試過程轉移到服務端,通過服務端進行測試,便可確認異常問題原因

 

第3章 NFS深入擴展知識

3.1 NFS服務相關進程說明

 1 [root@nfs01 ~]# ps -ef |egrep "rpc|nfs"
 2 
 3 rpc        1185      1  0 20:17 ?        00:00:00 rpcbind      <-RPC主進程
 4 rpcuser    1207      1  0 20:17 ?        00:00:00 rpc.statd      <-檢查數據存儲一致性
 5 root       1367      2  0 20:19 ?        00:00:00 [rpciod/0]
 6 root       1376      1  0 20:19 ?        00:00:00 rpc.rquotad   <-磁盤配額進程(remote quota server)
 7 root       1381      1  0 20:19 ?        00:00:00 rpc.mountd   <-服務端掛載權限管理驗證等(NFS mount daemon)
 8 root       1388      2  0 20:19 ?        00:00:00 [nfsd4]
 9 root       1389      2  0 20:19 ?        00:00:00 [nfsd4_callbacks]
10 root       1390      2  0 20:19 ?        00:00:00 [nfsd]                   <-NFS主進程daemon
11 root       1391      2  0 20:19 ?        00:00:00 [nfsd]                   <-NFS主進程
12 root       1392      2  0 20:19 ?        00:00:00 [nfsd]                   <-NFS主進程,管理登入,ID身份判別等
13 root       1393      2  0 20:19 ?        00:00:00 [nfsd]
14 root       1394      2  0 20:19 ?        00:00:00 [nfsd]
15 root       1395      2  0 20:19 ?        00:00:00 [nfsd]
16 root       1396      2  0 20:19 ?        00:00:00 [nfsd]
17 root       1397      2  0 20:19 ?        00:00:00 [nfsd]        <-NFS主進程
18 root       1428      1  0 20:19 ?        00:00:00 rpc.idmapd   <-name mapping daemon用戶壓縮/用戶映射
19 root       1432   1305  0 20:19 pts/0    00:00:00 egrep --color=auto rpc|nfs


NFS查看以上進程,可以通過man進程名命令,如man rpcidmapd

3.2 配置NFS服務端開機自啟動

 1 [root@nfs01 ~]# chkconfig rpcbind on 2 3 [root@nfs01 ~]# chkconfig nfs on 

3.3 NFS服務端配置文件路徑

NFS服務的默認配置文件路徑為/etc/exports且默認為空

1 [root@nfs01 ~]# ls -l /etc/exports
2 
3 -rw-r--r-- 1 root root 29 Oct 11 11:13 /etc/exports
4 
5 [root@nfs01 ~]# cat /etc/exports

說明:NFS默認配置文件是存在的,但是沒有內容,需要用戶自配

 

第4章 NFS配置參數權限說明


 
4.1 squash參數詳解

rpc.idmapd      名字映射后台進程

4.2 anonuid、anongid參數詳解

作用:修改映射后的默認用戶信息,默認映射用戶為65534-nfsnobody

4.2.1 實踐操作配置1:修改NFS默認映射用戶(nfsnobody->www)

4.2.1.1  服務端配置

第一個里程碑-創建映射用戶(服務端與客戶端都創建,且uid和gid保持一致)

說明:因為兩端識別用戶身份並不是依靠用戶名識別的,而是識別uid和gid信息,需要 uid和gid信息來判斷用戶是否一致,不一致則出現拒絕訪問錯誤!

#客戶端和服務端創建用戶www

 1 useradd www -u 666 2 3 id www 

第二個里程碑-服務端進行nfs文件配置,修改共享目錄權限(客戶端不進行修改)

1 [root@nfs01 ~]# vim /etc/exports
2 
3 #share /data by root for www at 20171015
4 
5 /data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

說明:不指定anon參數這里就以uid為65534的nfsnobody用戶作為默認映射用戶

提示:用戶默認的映射參數為root_squash、no_all_squash,所以配置文件中一定要進行參數設置

第三個里程碑-修改上級目錄權限

 1 [root@nfs01 ~]# chown -R www.www /data 

第四個里程碑-重啟服務器

 1 [root@nfs01 ~]# /etc/init.d/nfs reload 

4.2.1.2  客戶端配置

第一個里程碑-進行掛載/重新掛載

 1 [root@backup ~]# mount -t nfs 172.16.1.31:/data /mnt
 2 
 3 [root@backup ~]# df -h
 4 
 5 Filesystem         Size  Used Avail Use% Mounted on
 6 
 7 /dev/sda3          8.8G  1.7G  6.7G  20% /
 8 
 9 tmpfs              238M     0  238M   0% /dev/shm
10 
11 /dev/sda1          190M   40M  141M  22% /boot
12 
13 172.16.1.31:/data  8.8G  1.7G  6.7G  20% /mnt

第二個里程碑-創建指定www用戶

 1 useradd www -u 666 2 3 id www 4 5 uid=666(www) gid=666(www) groups=666(www) 

第三個里程碑-客戶端進行測試

01.測試root用戶映射

1 [root@backup mnt]# touch user_root.txt
2 
3 [root@backup mnt]# ll
4 
5 total 0
6 
7 -rw-r--r-- 1 www www 0 Oct 15 16:25 user_root.txt

02.測試普通用戶映射

#www用戶映射

1 [www@backup mnt]$ touch user_www.txt
2 
3 [www@backup mnt]$ ll
4 
5 total 0
6 
7 -rw-r--r-- 1 www www 0 Oct 15 16:25 user_root.txt
8 
9 -rw-rw-r-- 1 www www 0 Oct 15 16:26 user_www.txt

注意:當服務端創建用戶而客戶端不存在此用戶時,客戶端在掛載點下創建目錄,文件用戶屬性出現nobody信息

4.2.2 實踐操作配置2:修改客戶端配置文件進行測試

no_all_squash

 1 [oldboy@backup mnt]$ touch user_oldboy.txt 2 3 touch: cannot touch `user_oldboy.txt': Permission denied 

root_squash(服務端掛載目錄/data屬主為www,故www用戶仍能掛載)

 1 [oldboy@backup mnt]$ touch user_oldboy.txt 2 3 touch: cannot touch `user_oldboy.txt': Permission denied 

no_root_squash(root用戶不進行映射,其權限能創建文件且屬主依然為root)

1 [root@backup mnt]# touch user_root.txt
2 
3 [root@backup mnt]# ll
4 
5 -rw-r--r-- 1 root root 0 Oct 15 17:06 user_root.txt
6 
7 [oldboy@backup mnt]$ touch user_oldboy.txt
8 
9 touch: cannot touch `user_oldboy.txt': Permission denied

  NFS服務umount命令參數

-l  表示不用離開當前掛載目錄,進行懶惰卸載

-f  表示對掛載的目錄進行強制卸載

 

第5章 NFS服務企業案例配置實踐

5.1 實例:共享不同的兩個目錄,分別賦予讀和寫的權限

5.1.1 具體要求

服務端上面要求:nfs服務器172.16.1.31,共享下面兩個目錄

/data/w   要求的權限可讀寫,同步數據,所有用戶都壓縮為匿名用戶

/data/r   要求的權限為只讀,同步數據,所有用戶都壓縮為匿名用戶

客戶端上面要求 :

backup服務器   把NFS服務器的/data/r掛載到backup的/data/r

web01服務器   把NFS服務器的/data/w掛載到web01的/data/w

5.1.2 部署過程

5.1.3 第一個里程碑-卸載並創建目錄環境

 1 umount -lf /data 

①    服務端創建

 1 mkdir /data/{r,w} 2 3 chown -R nfsnobody.nfsnobody /data 4 5 ll -d /data/{r,w} 

②    客戶端創建(這里無需修改權限)

 1 [root@backup ~]# mkdir -p /data/r 2 3 [root@web01 ~]# mkdir -p /data/w 

5.1.4 第二個里程碑-編輯nfs服務端配置文件

1 [root@nfs01 ~]# vim /etc/exports
2 
3 #share /data by root at 20171015
4 
5 #/data 172.16.1.0/24(rw,sync)
6 
7 /data/w 172.16.1.0/24(rw,sync,all_squash)
8 
9 /data/r 172.16.1.0/24(ro,sync,all_squash)

5.1.5 第三個里程碑-重啟nfs

 1 [root@nfs01 ~]# /etc/init.d/nfs reload 

說明:在配置共享目錄時,需要考慮到子目錄會繼承上一級目錄的權限,即上一級目錄/data若有rw權限,/data/r將仍被繼承(ro權限不起作用),因此應盡量讓共享目錄之間沒有繼承關系,這里采用注釋/data目錄方法

5.1.6 第四個里程碑-客戶端進行重新掛載

 1 umount -lf /mnt  #卸載已掛載目錄
 2 
 3 backup
 4 
 5 [root@backup ~]# mount -t nfs 172.16.1.31:/data/r /data/r/
 6 [root@backup ~]# df -h
 7 Filesystem           Size  Used Avail Use% Mounted on
 8 /dev/sda3            8.8G  1.7G  6.7G  20% /
 9 tmpfs                238M     0  238M   0% /dev/shm
10 /dev/sda1            190M   40M  141M  22% /boot
11 172.16.1.31:/data/r  8.8G  1.7G  6.7G  20% /data/r
12 
13 web01
14 
15 [root@web01 ~]# mount -t nfs 172.16.1.31:/data/w /data/w/
16 [root@web01 ~]# df -h
17 Filesystem           Size  Used Avail Use% Mounted on
18 /dev/sda3            8.8G  1.7G  6.8G  20% /
19 tmpfs                238M     0  238M   0% /dev/shm
20 /dev/sda1            190M   40M  141M  22% /boot
21 172.16.1.31:/data/w  8.8G  1.7G  6.7G  20% /data/w

5.1.7 第五個里程碑-進行測試

①    測試讀寫功能

1 [root@web01 ~]# cd /data/w
2 
3 [root@web01 w]# touch test01.txt
4 
5 [root@web01 w]# ll
6 
7 total 0
8 
9 -rw-r--r-- 1 nfsnobody nfsnobody 0 Oct 15  2017 test01.txt

②    測試只讀功能

1 [root@backup ~]# cd /data/r
2 
3 [root@backup r]# touch test02.txt  #創建文件進行測試
4 
5 touch: cannot touch ` test02.txt': Read-only file system  #提示:不能創建文件,該文件為只讀文件系統

提示:在任何情況下,服務端重啟之后客戶端都必須進行重新掛載,否則就出現如下錯誤

 1 [root@backup r]# ll 2 3 ls: cannot open directory .: Stale file handle 

 

第6章 NFS服務的重點知識梳理

6.1 多個NFS客戶端訪問服務端的讀寫文件要具有的權限

01.NFS服務器/etc/exports設置需要開放可寫入的權限,即服務端的共享權限

02.NFS服務器實際要共享的NFS目錄權限具有可寫入w的權限,即服務端本地目錄的安全權限

03.每台機器對應存在和NFS默認配置UID的相同UID 65534的nfsnobody用戶(確保所有客戶端的訪問權限統一,否則每個機器都需要同時建立相同UID的用戶,並覆蓋NFS的默認用戶配置)

只有滿足上述三個條件,多個NFS客戶端才能具有查看/修改/刪除其它任意NFS客戶端上傳文件的權限,這在大規模的集群環境中作為集群共享存儲時尤為重要

6.2 NFS客戶端掛載命令格式

掛載命令

掛載的類型格式

指定掛載參數

NFS服務器端提供的共享目錄

NFS客戶端的掛載點

mount

-t nfs

-o ro

172.16.1.31:/data

/mnt(必須存在)

完整版的掛載命令:mount -t nfs 172.16.1.31:/data /mnt,此命令需在客戶端執行

6.2.1 NFS共享目錄自動掛載方法

01.將掛載命令放在/etc/rc.local里

偶爾開機掛載不上,工作中除了開機自啟動配置,還要對是否掛載做監控

02.將掛載命令放在/etc/fstab里

1 [root@nfs01 data]# chkconfig netfs on
2 
3 [root@nfs01 data]# chkconfig --list netfs
4 
5 netfs          0:off      1:off      2:on       3:on       4:on       5:on       6:off

注意:生產環境中一般不將其掛載信息寫入fstab中,因為開機啟動時,網絡連接不上nfs server的話,可能會導致客戶端主機無法啟動過不了fstab這項,可以將其放到/etc/rc.local中來實現開機自動掛載,但也有可能重啟nfs客戶端后掛載不成功

6.3 NFS服務的優缺點及應用建議

A.優點:

01.簡單,容易上手,容易管理

02.NFS文件系統內數據是在文件系統之上的,即數據是可見的

03.部署快速,維護簡單方便且可控,滿足需求就是最好的

04.可靠,從軟件層面上看,數據可靠性高,經久耐用。數據是在文件系統之上的

05.服務非常穩定

B.局限:

01.存在單點故障,如果NFS Server宕機了,所有客戶端都不能訪問共享目錄,這個在后期會通過負載均衡及高可用方案彌補

02.在大數據高並發的場合,NFS效率、性能有限(2 千萬/日以下PV的網站不是瓶頸,除非網站架構設計太差)

03.客戶端認證是基於IP 和主機名的,權限要根據ID 識別,無安全認證機制(用於內網則問題不大)

04.NFS數據是明文的,NFS本身不對數據完整性進行驗證

05.多台客戶機掛載一個NFS服務器時,連接管理維護麻煩(耦合度高)。尤其當NFS服務器端出問題后所有NFS客戶端都處於掛掉狀態測試環境可使用autofs自動掛載解決,正式環境可修復NFS服務或強制卸載)。

06.涉及了同步(實時等待)和異步(解耦)的概念,NFS服務器端和客戶端相對來說就是耦合度有些高。網站程序也是一樣,盡量不要耦合度太高,系統及程序架構師的重要職責就是為程序及架構解耦,讓網站的擴展性變的更好。

C.應用建議:

對於大中小網站(參考點2000萬舊PV以下)線上應用,都有用武之地,門戶網站也會有應用,生產場景應該多將數據的訪問往前推,即盡量將靜態存情里的資源通過CDN 或緩存服務器提供服務,如果沒有緩存服務或架構不好,存儲服務器數量再多也是扛不住壓力的,而且用戶體驗會很差。

 

第7章 利用ansible一鍵化nfs&rsync並實時同步劇本

  1 管理端 :
  2 [root@m01 tools]# cat quanwang.sh
  3 #!/bin/bash
  4 sh /server/scripts/piliangceshimiyao.sh
  5 ansible-playbook /server/tools/rsyncpiliang.yml
  6 ansible-playbook /server/tools/nfspiliang.yml
  7 ansible-playbook /server/tools/quanwang.yml
  8 
  9 01./server/scripts/piliangceshimiyao.sh
 10 
 11 [root@m01 tools]# cat /server/scripts/piliangceshimiyao.sh
 12 #!/bin/bash
 13 #生成密鑰
 14 \rm -f /root/.ssh/id_dsa*
 15 ssh-keygen -t dsa -f /root/.ssh/id_dsa -P "" -q
 16 #發送密鑰
 17 for ip in 61 8 31 41
 18 do
 19 echo "==== 現在分發 172.16.1.$ip=========="
 20 sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no root@172.16.1.$ip"
 21 echo "==============end======="
 22 echo
 23 done
 24 
 25 02.ansible-playbook /server/tools/rsyncpiliang.yml
 26 
 27 - hosts: 172.16.1.41 #服務端
 28 tasks:
 29 - name: yum 
 30 shell: yum install -y rsync #安裝rsync
 31 - name: yunm
 32 shell: yum -y install sshpass #安裝密鑰的軟件
 33 - name: chuangjianmulu
 34 shell: mkdir -p /server/tools/ #創建所在配置的文件
 35 - name: peizhi
 36 copy: src=/server/tools/peizhi.sh dest=/server/tools/peizhi.sh
 37 - name: yunxing 
 38 script: /server/tools/peizhi.sh #運行腳本
 39 - name: guanliyunhu
 40 shell: useradd -s /sbin/nologin -M rsync #創建rsync虛擬用戶
 41 - name: anquanwenjian
 42 shell: echo "rsync_backup:oldboy123" >/etc/rsync.password #設置密碼文件
 43 - name: quanxian
 44 shell: chmod 600 /etc/rsync.password #給予權限
 45 - name: beifenmulu
 46 shell: mkdir -p /backup && chown -R rsync.rsync /backup
 47 - name: qidong
 48 shell: rsync --daemon #運行rsync
 49 - hosts: 172.16.1.8
 50 tasks:
 51 - name: yum
 52 shell: yum install -y rsync # 客戶端
 53 - name: chuangjianmulu
 54 shell: mkdir -p /server/tools/
 55 - name: mimawenjian
 56 shell: echo "oldboy123" >/etc/rsync.password && chmod 600 /etc/rsync.password
 57 - hosts: 172.16.1.31
 58 tasks:
 59 - name: yum
 60 shell: yum install -y rsync #客戶端 
 61 - name: chuangjianmulu
 62 shell: mkdir -p /server/tools/
 63 - name: mimawenjian
 64 shell: echo "oldboy123" >/etc/rsync.password && chmod 600 /etc/rsync.password
 65 
 66 03.ansible-playbook /server/tools/nfspiliang.yml
 67 
 68 - hosts: 172.16.1.31 #服務端
 69 tasks:
 70 - name: yum 
 71 shell: yum install -y nfs-utils rpcbind #安裝nfs
 72 - name: yunm
 73 shell: yum -y install sshpass #安裝密鑰的軟件
 74 - name: chuangjianmulu
 75 shell: mkdir -p /server/tools/ #創建所在配置的文件
 76 - name: peizhi
 77 copy: src=/server/tools/nfspeizhi.sh dest=/server/tools/nfspeizhi.sh
 78 - name: yunxingjiaoben 
 79 script: /server/tools/nfspeizhi.sh #運行腳本
 80 - name: guanlimulu
 81 shell: mkdir -p /data && chown -R nfsnobody.nfsnobody /data
 82 - name: qidong 
 83 shell: /etc/init.d/rpcbind start && /etc/init.d/nfs start #啟動
 84 - name: kaijiqidong
 85 shell: chkconfig rpcbind on && chkconfig nfs on
 86 #設置密碼文件
 87 - hosts: 172.16.1.8
 88 tasks:
 89 - name: yum
 90 shell: yum install -y nfs-utils rpcbind # 客戶端
 91 # - name: gui
 92 # shell: umount -f /mnt
 93 - name: guazai
 94 shell: mount -t nfs 172.16.1.31:/data /mnt
 95 - hosts: 172.16.1.41
 96 tasks:
 97 - name: yumh
 98 shell: yum install -y nfs-utils rpcbind #客戶端 
 99 # - name: guih
100 # shell: umount -f /mnt 
101 - name: guazaih
102 shell: mount -t nfs 172.16.1.31:/data /mnt
103 
104 04.ansible-playbook /server/tools/quanwang.yml
105 
106 - hosts: 172.16.1.61
107 tasks:
108 # - name: anzhuangrsync
109 # shell: /server/scripts/piliangceshimiyao.sh
110 # - name: anzhuangrsync
111 # shell: /server/tools/rsyncpiliang.yml
112 # - name: anzhuangnfs
113 # shell: /server/tools/nfspiliang.yml
114 - hosts: 172.16.1.41
115 tasks: 
116 - name: chuangjianmulu41
117 shell: mkdir -p /server/tools/ #創建所在配置的文件
118 - name: peizhi41
119 copy: src=/server/tools/quanwangrsync.sh dest=/server/tools/quanwangrsync.sh
120 - name: rsyncdajian41
121 script: /server/tools/quanwangrsync.sh
122 - hosts: 172.16.1.8
123 tasks:
124 - name: chuangjianmulu8
125 shell: mkdir -p /server/tools/ #創建所在配置的文件
126 - name: peizhi8
127 copy: src=/server/tools/quanwangweb.sh dest=/server/tools/quanwangweb.sh
128 - name: quanwangweb8
129 script: /server/tools/quanwangweb.sh
130 - hosts: 172.16.1.31
131 tasks:
132 - name: chuangjianmulu31
133 shell: mkdir -p /server/tools/ #創建所在配置的文件
134 - name: peizhi31
135 copy: src=/server/tools/quanwangnfs.sh dest=/server/tools/quanwangnfs.sh
136 - name: quanwangnfs.sh31
137 script: /server/tools/quanwangnfs.sh
View Code

 

此筆記是本人學習摘記整理而成,此為初稿(尚有諸多不完善之處),原創作品允許轉載,轉載時請務必以超鏈接形式標明文章原始出處,作者信息和本聲明,否則將追究法律責任。http://www.cnblogs.com/bananaaa/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM