前提
最近項目做負載均衡的時候多個服務之間的數據需要同步,同步的方案有:
1.NFS文件掛載
2.rsync等數據同步工具
3.fastdfs分佈式文件系統
考慮到易用性以及文件不會太多,將每個服務的數據掛載到同一個地方是最簡單的方法了。
NFS簡介
NFS是Network File System的縮寫,即網絡文件系統。客戶端通過掛載的方式將NFS服務器端共享的數據目錄掛載到本地目錄下。
NFS工作流程
1、由程序在NFS客戶端發起存取文件的請求,客戶端本地的RPC(rpcbind)服務會通過網絡向NFS服務端的RPC的111端口發出文件存取功能的請求。
2、NFS服務端的RPC找到對應已註冊的NFS端口,通知客戶端RPC服務。
3、客戶端獲取正確的端口,並與NFS daemon聯機存取數據。
4、存取數據成功後,返回前端訪問程序,完成一次存取操作。
centos7下配置nfs並遠程掛載
首先檢查是否缺少基礎環境
rpm -qa | grep nfs-utils
rpm -qa | grep rpcbind
沒有則通過以下命令安裝
yum -y install nfs-utils rpcbind
開機啓動
systemctl enable rpcbind
systemctl enable nfs-server
#取消開機啓動
systemctl disable rpcbind
systemctl disable nfs-server
查看服務狀態及啓動命令
systemctl status rpcbind
systemctl status nfs
systemctl start rpcbind
systemctl start nfs
創建共享目錄並配置權限
mkdir /data/images
chmod 777 -R /data/images
配置NFS服務
vi /etc/exports
#內容爲
#[共享目錄] [客戶端地址1(參數1,參數2,...)] [客戶端地址2(參數1,參數2,...)] ,例如
/data/images 192.168.126.0/24(rw,sync,all_squash)
#設置並保存成功後執行exportfs -r命令刷新
配置詳解
1.共享目錄要用絕對路徑,可被nfsnobody讀寫
2.NFS客戶端地址:
指定IP: 192.168.0.1
指定子網所有主機: 192.168.126.0/24
指定域名的主機: test.com
指定域名所有主機: *.test.com
所有主機: *
3.參數:
ro:目錄只讀
rw:目錄讀寫
sync:將數據同步寫入內存緩衝區與磁盤中,效率低,但可以保證數據的一致性
async:將數據先保存在內存緩衝區中,必要時才寫入磁盤
all_squash:將遠程訪問的所有普通用戶及所屬組都映射爲匿名用戶或用戶組(nfsnobody)
no_all_squash:與all_squash取反(默認設置)
root_squash:將root用戶及所屬組都映射爲匿名用戶或用戶組(默認設置)
no_root_squash:與rootsquash取反
anonuid=xxx:將遠程訪問的所有用戶都映射爲匿名用戶,並指定該用戶爲本地用戶(UID=xxx)
anongid=xxx:將遠程訪問的所有用戶組都映射爲匿名用戶組賬戶
NFS其它常用目錄
/usr/sbin/exportfs NFS服務的管理命令
/usr/sbin/showmount 客戶端的查看命令
/var/lib/nfs/etab 記錄NFS分享出來的目錄的完整權限設定值
/var/lib/nfs/xtab 記錄曾經登錄過的客戶端信息
相關命令
exportfs -r #修改了/etc/exports後立即生效
nfsstat #查看NFS的運行狀態
rpcinfo #查看rpc執行信息,可以用於檢測rpc運行情況的工具,利用rpcinfo -p 可以查看出RPC開啓的端口所提供的程序
showmount -e ip #顯示此IP地址分享出來的目錄
掛載測試
#當修改了服務配置並生效後,我們就可以掛載相應的目錄到共享目錄,nfs服務再101,我們在102執行以下命令
mount -t nfs 192.169.126.101:/data/images /data/images
df -h #查看掛載情況,掛載成功則可以新增數據測試數據是否同步
umount /data/images #卸載掛載