NFS共享储存
目錄
- NFS
- 為什么要使用共享存儲
- 集群沒有共享存儲的情況
- 集群有共享存儲
- NFS的工作原理
- NFS部署
- 1.環境準備
- 2.關閉防火墻和selinux
- 3.部署nfs服務端
- 4.啟動rpcbind
- 5.檢測端口和進程
- 6.編輯配置文件
- 7.部署NFS客戶端
- 8.啟動rpcbind
- 9.查看可掛載點
- 10.掛載目錄
- 統一web、nfs、backup的用戶權限
- 代碼部署步驟
- rsync+nfs實戰,解決nfs的單點故障
- 配置客戶端
- 結合rsync
- rsync服務端操作(backup)
- web01客戶端寫腳本
- 檢測
NFS
共享存儲,文件服務器
NFS是Network File System的縮寫及網絡文件系統。NFS主要功能是通過局域網絡讓不同的主機系統之間可以共享文件或目錄。NFS系統和Windows網絡共享、網絡驅動器類似, 只不過windows用于局域網, NFS用于企業集群架構中, 如果是大型網站, 會用到更復雜的分布式文件系統FastDFS,glusterfs,HDFS,ceph
為什么要使用共享存儲
1.實現多臺服務器之間數據共享
2.實現多臺服務器之間數據一致
集群沒有共享存儲的情況
1.A用戶上傳圖片經過負載均衡,負載均衡將上傳請求調度至WEB1服務器上。
2.B用戶訪問A用戶上傳的圖片,此時B用戶被負載均衡調度至WEB2上,因為WEB2上沒有這張圖片,所以B用戶無法看到A用戶傳的圖片。
集群有共享存儲
1.A用戶上傳圖片無論被負載均衡調度至WEB1還是WEB2, 最終數據都被寫入至共享存儲
2.B用戶訪問A用戶上傳圖片時,無論調度至WEB1還是WEB2,最終都會上共享存儲訪問對應的文件,這樣就可以訪問到資源了
NFS的工作原理
1.用戶進程訪問NFS客戶端,使用不同的函數對數據進行處理
2.NFS客戶端通過TCP/IP的方式傳遞給NFS服務端。
3.NFS服務端接收到請求后,會先調用portmap進程進行端口映射。
4.nfsd進程用于判斷NFS客戶端是否擁有權限連接NFS服務端。
5.Rpc.mount進程判斷客戶端是否有對應的權限進行驗證。
6.idmap進程實現用戶映射和壓縮7.最后NFS服務端會將對應請求的函數轉換為本地能識別的命令,傳遞至內核,由內核驅動硬件。
NFS部署
1.環境準備
| backup | nfs的客戶端 | 10.0.0.41 | 172.16.1.41 |
| nfs | nfs的服務端 | 10.0.0.31 | 172.16.1.31 |
| web01 | nfs的客戶端 | 10.0.0.7 | 172.16.1.7 |
2.關閉防火墻和selinux
#1.關閉Firewalld防火墻 [root@nfs ~]# systemctl disable firewalld [root@nfs ~]# systemctl stop firewalld#2.關閉selinux防火墻 [root@nfs ~]# sed -ri '#^SELINUX=#cSELINUX=Disabled' /etc/selinux/config [root@nfs ~]# setenforce 03.部署nfs服務端
yum -y install nfs-utils rpcbind4.啟動rpcbind
#啟動rpcbind [root@nfs01 ~]# systemctl start rpcbind [root@web01 ~]# systemctl start rpcbind [root@backup ~]# systemctl start rpcbind#添加開機自啟 [root@nfs01 ~]# systemctl start rpcbind [root@web01 ~]# systemctl enable rpcbind [root@backup ~]# systemctl start rpcbindll /etc/systemd/system/multi-user.target.wants/#查看開機自啟5.檢測端口和進程
[root@nfs01 ~]# ps -ef|grep rpc rpc 11746 1 0 01:12 ? 00:00:00 /sbin/rpcbind -w root 11750 11421 0 01:15 pts/1 00:00:00 grep --color=auto rpc[root@nfs01 ~]# netstat -lntup|grep 111 tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp6 0 0 :::111 :::* LISTEN 1/systemd udp 0 0 0.0.0.0:111 0.0.0.0:* 1/systemd udp6 0 0 :::111 :::* 1/systemd6.編輯配置文件
[root@nfs01 ~]# vim /etc/exports /data 172.16.1.0/24(rw,sync,all_squash)6.1創建/data目錄
[root@nfs01 data]# mkdir /data [root@nfs01 data]# chown -R nfsnobody.nfsnobody /data6.2啟動NFS
[root@nfs01 ~]# systemctl start nfs-server7.部署NFS客戶端
yum install -y rpcbind nfs-utils8.啟動rpcbind
#只啟動rpcbind [root@web01 ~]# systemctl start rpcbind [root@backup ~]# systemctl start rpcbind9.查看可掛載點
[root@backup ~]# showmount -e 172.16.1.3110.掛載目錄
[root@backup ~]# mount -t nfs 172.16.1.31:/data /backup#永久掛載 #編輯fstab文件 [root@nfs-client ~]# vim /etc/fstab 172.16.1.31:/data /backup nfs defaults 0 0#驗證fstab是否寫正確 [root@nfs-client ~]# mount -a統一web、nfs、backup的用戶權限
#創建www用戶和組 [root@backup html]# groupadd www -g 666 [root@backup html]# useradd www -u 666 -g 666---------------------------------WEB----------------------------------- #修改httpd的配置文件 yum -y install httpd php vim /etc/httpd/conf/httpd.conf User www Group www[root@web01 html]# systemctl restart httpd ps -ef|grep httpd ------------------------------------NFS-------------------------------------- #修改nfs的配置文件 [root@nfs01 data]# vim /etc/exports /data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)[root@nfs01 data]# systemctl restart rpcbind nfs-server#重新授權 [root@nfs01 data]# chown -R www.www /data代碼部署步驟
1.安裝服務,httpd(apache)和php
yum install -y httpd php2.查找httpd的站點目錄
[root@web01 html]# rpm -ql httpd|grep html [root@web01 html]# rz windows-提交作業代碼.zip [root@web01 html]# yum install -y unzip [root@web01 html]# unzip windows-提交作業代碼.zip3.修改上傳目錄
[root@backup ~]# vim /var/www/html/upload_file.php $wen="/var/www/html/tupian";#修改背景圖片 vim /var/www/htmlindex.html排錯:
rpm -ql httpd ll tail -f +加路徑4.啟動服務
systemctl start httpd
5.掛載
#兩臺客戶端重新掛載,實現共享 mount -t nfs 172.16.1.31:/data /var/www/html/tupianrsync+nfs實戰,解決nfs的單點故障
| CentOS 7.5 | NfsServer(A) | 172.16.1.31 |
| CentOS 7.5 | NfsClient(B) | 172.16.1.41 |
| CentOS 7.5 | NfsClient(C) | 172.16.1.7 |
1)安裝服務端
yum install -y rpcbind nfs-utils2)編輯服務端的配置文件
vim /etc/exports /data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)3)創建用戶
groupadd www -g 666 useradd www -u 666 -g 666 -s /sbin/nologin -M4)創建目錄并授權
mkdir /data chown -R www.www /data5)啟動服務
systemctl start rpcbind nfs-server#centos6先停nfs-server后停rpcbind,rpcbind類似于中介6)檢查
cat /var/lib/nfs/etab /data 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=666,anongid=666,sec=sys,rw,secure,root_squash,all_squash)配置客戶端
1)安裝客戶端服務
yum install -y rpcbind nfs-utils2)啟動rpc
systemctl start rpcbind3)查看掛載點
showmount -e 172.16.1.31#安裝httpd yum -y install httpd #修改權限 vim /etc/httpd/conf/httpd.conf #重啟httpd systemctl restart httpd4)掛載
mount -t nfs 172.16.1.31:/data /var/www/html/tupian #通過mount -o指定掛載參數,禁止使用suid,exec,增加安全性能 [root@nfs-client ~]# mount -t nfs -o nosuid,noexec,nodev 172.16.1.31:/data /mnt結合rsync
1)NFS安裝rsync
yum install -y rsync2)客戶端與服務端的關系
3)使用免密的方式
export RSYNC_PASSWORD=123456rsync服務端操作(backup)
1)創建www用戶
groupadd www -g 666 useradd www -u 666 -g 666 -s /sbin/nologin -M2)統一rsync服務的用戶和用戶組(修改配置文件)
vim /etc/rsyncd.conf uid = www gid = www port = 873 fake super = yes use chroot = no max connections = 200 timeout = 600 ignore errors read only = false list = false auth users = rsync_backup secrets file = /etc/rsync.passwd log file = /var/log/rsyncd.log ##################################### [zls] comment = welcome to oldboyedu backup! path = /backup[naonao] comment = welcome to oldboyedu nfs! path = /data3)創建目錄并授權
[root@backup ~]# mkdir /data [root@backup ~]# chown -R www.www /data/ systemctl start rsync export RSYNC_PASSWORD=123 #測試推 rsync -avz --delete /data rsync_backup@172.16.1.41::naonao4)編寫備份腳本
vim rsync.sh #!/bin/bashPATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin' H=`hostname` I=`ifconfig eth1|awk 'NR==2{print $2}'` D=`date +%F` S=${H}_${I}_${D} BD=/backup export RSYNC_PASSWORD=123456mkdir -p ${BD}/${S}tar zcf ${BD}/${S}/conf.tar.gz /etc/passwd &>/dev/nullmd5sum ${BD}/${S}/conf.tar.gz > /backup/${I}.txtrsync -az ${BD}/ rsync_backup@172.16.1.41::zls rsync -az --delete /data/ rsync_backup@172.16.1.41::nfs find ${BD} -type d -mtime +7|xargs rm -fr5)安裝nfs服務端
[root@backup ~]# yum install -y rpcbind nfs-utils6)編輯配置文件
[root@backup ~]# vim /etc/exports /data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)7)啟動服務
[root@backup ~]# systemctl start rpcbind nfs-server rsyncd [root@backup ~]# systemctl enable rpcbind nfs-server rsyncdweb01客戶端寫腳本
#!/bin/bashcheck_nfs=`df -h|grep '/var/www/html/tupian'|wc -l` if [ $check_nfs -eq 0 ];thenshowmount -e 172.16.1.31 &>/dev/nullif [ $? -eq 0 ];thenmount -t nfs 172.16.1.31:/data /var/www/html/tupianelsemount -t nfs 172.16.1.41:/data /var/www/html/tupianfi fi檢測
systemctl stop nfs-server df -h轉載于:https://www.cnblogs.com/1naonao/p/11305568.html
總結
- 上一篇: 总复习(一)
- 下一篇: HTTP:Form表单的交互与抓包