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