創作不易,來了的客官點點關注,收藏,訂閱一鍵三連?😜

前言
運維之基礎——Linux,我是一個即將畢業的大學生,超超,如果你也在學習Linux,不妨跟著萌新超超一起學習Linux,拿下Linux,一起加油,共同努力,拿到理想offer!
系列文章
Linux進階 | 超詳細全方面的Docker Swarm Web集群介紹與部署!
Linux進階 | docker compose的安裝與使用詳解,超詳細!
Linux進階 | Docker部署nginx的web服務,VOLUME的使用詳解,實作資料持久化!
Linux進階 | 2萬字總結最詳細的Docker的安裝、底層隔離機制和簡單使用!
概述
Docker 屬于 Linux 容器的一種封裝,提供簡單易用的容器使用介面,它是目前最流行的 Linux 容器解決方案,本期內容為Docker第六期,通過本期內容將會掌握NFS服務的部署,以及如何使用Docker+NFS|+Volume實作資料的一致性,
目錄
前言
系列文章
概述
超超Docker學習思維導圖
NFS與存盤服務器
NFS
NFS發的優缺點
存盤服務器
存盤服務器的優缺點
NFS和RPC
nfs服務和rpc到底是如何實作的呢?
RPC 是如何知道NFS的埠呢?
NFS服務器的使用
方法一:使用nfs-server
方法二:使用sshfs共享檔案
超超Docker學習思維導圖

NFS與存盤服務器
NFS
NFS,網路檔案系統(network files system)是一種基于TCP傳輸協議的檔案共享系統,它的主要功能是通過網路(一般是局域網)讓不同的主機系統之間可以共享檔案或目錄(在網路上共享自己機器里的檔案,其他的機器可以使用),(保持資料的一致性)
NFS是比較廉價的解決方案,一般的公司不會采用,性能一般,建議使用專業的存盤服務器,
NFS發的優缺點
優點: 隨便一臺linux服務器都可以搭建,成本非常低,構建非常容易,
缺點: 讀取速度有限,跟網路質量,磁盤IO,cpu,記憶體等因素有關,在傳統的TCP/IP網路上傳輸的,
存盤服務器
存盤區域網路(Storage Area Network,簡稱SAN)采用網狀通道(Fibre Channel ,簡稱FC,區別與Fiber Channel光纖通道)技術,通過FC交換機連接存盤陣列和服務器主機,建立專用于資料存盤的區域網路,
存盤服務器的優缺點
優點:讀寫性能好,有災備
缺點: 費用昂貴,成本高,需要一筆費用
NFS和RPC
nfs服務和rpc到底是如何實作的呢?
NFS服務的啟動,我們就得需要遠程程序呼叫RPC的服務,RPC 最主要的功能就是指定每個 NFS 功能所對應的埠號,并且回報給客戶端,讓客戶端可以連結到正確的埠上去,
RPC 是如何知道NFS的埠呢?
這是因為當服務器在啟動 NFS服務時,會隨機取用數個埠,并主動的向 RPC 注冊,因此 RPC 可以知道每個埠對應的 NFS 功能,
NFS自己并沒有去對外監聽某個埠號,而是外包給了rpc服務,rpc幫助nfs去監聽埠,然后告訴客戶機和服務器行程對應的連續埠號,
[root@nfs-server ~]# netstat -anplut|grep nfs
[root@nfs-server ~]# netstat -anplut|grep rpc
tcp 0 0 0.0.0.0:58511 0.0.0.0:* LISTEN 2337/rpc.statd
tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 2347/rpc.mountd
tcp6 0 0 :::20048 :::* LISTEN 2347/rpc.mountd
tcp6 0 0 :::35677 :::* LISTEN 2337/rpc.statd
udp 0 0 0.0.0.0:20048 0.0.0.0:* 2347/rpc.mountd
udp 0 0 0.0.0.0:36531 0.0.0.0:* 2337/rpc.statd
udp 0 0 127.0.0.1:817 0.0.0.0:* 2337/rpc.statd
udp6 0 0 :::20048 :::* 2347/rpc.mountd
udp6 0 0 :::48874 :::* 2337/rpc.statd
[root@nfs-server ~]#
NFS服務器的使用
方法一:使用nfs-server
1.準備一臺服務器擔任NFS Server
CentOS8(1核/2G)
配置好ip地址:192.168.232.135
修改好主機名:nfs-server
root@docker-4 ~]# hostnamectl set-hostname nfs-server
[root@docker-4 ~]# su
[root@nfs-server ~]#
IP:192.168.232.135 主機名:nfs-server 擔任角色:nfs server
IP:192.168.232.132 主機名:docker-manager-1 擔任角色:swarm manager
IP:192.168.232.133 主機名:docker-2 擔任角色:swarm node1
IP:192.168.232.134 主機名:docker-3 擔任角色:swarm node2
IP:192.168.232.131 主機(ubuntu)名:chaochao 擔任角色:swarm node3
2.安裝和啟動nfs服務
[root@nfs-server ~]# yum install nfs-utils -y
[root@nfs-server ~]# service nfs-server start
Redirecting to /bin/systemctl start nfs-server.service
[root@nfs-server ~]#
查看nfs服務的行程: ps aux|grep nfs
[root@nfs-server ~]# ps aux|grep nfs
root 2346 0.0 0.1 50108 2672 ? Ss 19:39 0:00 /usr/sbin/nfsdcld
root 2352 0.0 0.0 0 0 ? S 19:39 0:00 [nfsd]
root 2353 0.0 0.0 0 0 ? S 19:39 0:00 [nfsd]
root 2354 0.0 0.0 0 0 ? S 19:39 0:00 [nfsd]
root 2355 0.0 0.0 0 0 ? S 19:39 0:00 [nfsd]
root 2356 0.0 0.0 0 0 ? S 19:39 0:00 [nfsd]
root 2357 0.0 0.0 0 0 ? S 19:39 0:00 [nfsd]
root 2358 0.0 0.0 0 0 ? S 19:39 0:00 [nfsd]
root 2359 0.0 0.0 0 0 ? S 19:39 0:00 [nfsd]
root 2367 0.0 0.0 12324 1064 pts/0 S+ 19:40 0:00 grep --color=auto nfs
[root@nfs-server ~]#
3.通過NFS共享檔案
編輯/etc/exports,寫好共享的具體目錄、權限以及共享的網段、IP
[root@nfs-server /]# vim /etc/exports
[root@nfs-server /]# cat /etc/exports
/web 192.168.232.0/24(rw,all_squash,sync)
/download 192.168.232.0/24(ro,all_squash,sync)
[root@nfs-server /]#
重繪輸出檔案的串列
[root@nfs-server /]# exportfs -rv
exporting 192.168.232.0/24:/download
exporting 192.168.232.0/24:/web
[root@nfs-server /]#
[root@nfs-server /]# cd /download/
[root@nfs-server download]# ls
[root@nfs-server download]# vim chao.txt
[root@nfs-server download]# ls
chao.txt
[root@nfs-server download]# exportfs -rv
exporting 192.168.232.0/24:/download
exporting 192.168.232.0/24:/web
[root@nfs-server download]#
4.關閉防火墻和selinux
[root@nfs-server download]# service firewalld stop
Redirecting to /bin/systemctl stop firewalld.service
[root@nfs-server download]# systemctl disable firewalld
[root@nfs-server download]# getenforce
Disabled
[root@nfs-server download]#
5.在客戶機上掛載宿主機上的NFS服務器共享的目錄
在客戶機上安裝NFS服務:yum install nfs-utils -y
[root@docker-2 lianxi]# yum install nfs-utils -y
查看宿主機共享的目錄
[root@docker-2 lianxi]# showmount -e 192.168.232.135
Export list for 192.168.232.135:
/download 192.168.232.0/24
/web 192.168.232.0/24
[root@docker-2 lianxi]#
6.掛載nfs-server上的共享目錄到客戶機
[root@docker-2 lianxi]# mount 192.168.232.135:/web /web
[root@docker-2 lianxi]# cd /web
[root@docker-2 web]# ls
1.jpg index.html rep.html
[root@docker-2 web]#
[root@docker-2 web]# df -Th
檔案系統 型別 容量 已用 可用 已用% 掛載點
devtmpfs devtmpfs 876M 0 876M 0% /dev
tmpfs tmpfs 896M 0 896M 0% /dev/shm
tmpfs tmpfs 896M 18M 878M 2% /run
tmpfs tmpfs 896M 0 896M 0% /sys/fs/cgroup
/dev/mapper/cl-root xfs 17G 8.2G 8.9G 48% /
/dev/sda1 xfs 1014M 193M 822M 19% /boot
tmpfs tmpfs 180M 0 180M 0% /run/user/0
overlay overlay 17G 8.2G 8.9G 48% /var/lib/docker/overlay2/c2434295873b6ce0f136d4851cb9a9bf10b1ebf77e80f611841484967b857c94/merged
overlay overlay 17G 8.2G 8.9G 48% /var/lib/docker/overlay2/8b5420179cd05a4a8ea039ba9357f7d59ddfec2fd3f185702a5a0d97883564f2/merged
overlay overlay 17G 8.2G 8.9G 48% /var/lib/docker/overlay2/d9f99510abb4c5d5496e54d11ff763be47610ee7851207aec9fdbb1022f14016/merged
overlay overlay 17G 8.2G 8.9G 48% /var/lib/docker/overlay2/5a87e34567ece3a64a835bcd4cfe59d2ebdf0d36bf74fbd07dff8c82a94f37a2/merged
overlay overlay 17G 8.2G 8.9G 48% /var/lib/docker/overlay2/b70caa1ed0c781711a41cd82a0a91d465a6e02418633bfa00ce398c92405baff/merged
192.168.232.135:/web nfs4 17G 7.8G 9.2G 46% /web
[root@docker-2 web]#
[root@docker-manager-1 web]# ls
[root@docker-manager-1 web]# mount 192.168.232.135:/web /web
[root@docker-manager-1 web]# ls
[root@docker-manager-1 web]# cd /web
[root@docker-manager-1 web]# ls
1.jpg index.html rep.html
[root@docker-manager-1 web]# df -Th
……
overlay overlay 17G 8.3G 8.8G 49% /var/lib/docker/overlay2/06cbd339366e8aeb492b21561573d953073e203122262e5089461da0d0d316a0/merged
overlay overlay 17G 8.3G 8.8G 49% /var/lib/docker/overlay2/a132f32c9cff25a1a143e325f2aecd0186630df66748c95984bb3cf2ce9fe8b2/merged
overlay overlay 17G 8.3G 8.8G 49% /var/lib/docker/overlay2/e1efba32267a46940402f682034d07ed51b8ee200186d5acc0c48144cd9fe31e/merged
192.168.232.135:/web nfs4 17G 7.8G 9.2G 46% /web
[root@docker-manager-1 web]#
[root@docker-3 web]# showmount 192.168.232.135 -e
Export list for 192.168.232.135:
/download 192.168.232.0/24
/web 192.168.232.0/24
[root@docker-3 web]# mount 192.168.232.135:/web /web
[root@docker-3 web]# cd /web
[root@docker-3 web]# ls
1.jpg index.html rep.html
[root@docker-3 web]# df -TH
檔案系統 型別 容量 已用 可用 已用% 掛載點
devtmpfs devtmpfs 919M 0 919M 0% /dev
tmpfs tmpfs 939M 0 939M 0% /dev/shm
tmpfs tmpfs 939M 18M 921M 2% /run
tmpfs tmpfs 939M 0 939M 0% /sys/fs/cgroup
/dev/mapper/cl-root xfs 19G 8.8G 9.6G 48% /
/dev/sda1 xfs 1.1G 202M 862M 19% /boot
tmpfs tmpfs 188M 0 188M 0% /run/user/0
overlay overlay 19G 8.8G 9.6G 48% /var/lib/docker/overlay2/8b5420179cd05a4a8ea039ba9357f7d59ddfec2fd3f185702a5a0d97883564f2/merged
overlay overlay 19G 8.8G 9.6G 48% /var/lib/docker/overlay2/c2434295873b6ce0f136d4851cb9a9bf10b1ebf77e80f611841484967b857c94/merged
overlay overlay 19G 8.8G 9.6G 48% /var/lib/docker/overlay2/6b933ab92577f653a29dcac782a2c5e79bcdbbf219a7ccebb38b585ef117e0b4/merged
overlay overlay 19G 8.8G 9.6G 48% /var/lib/docker/overlay2/40cc77a0f1c7281915947c1fefeb595837eb75fffec0d808a9994ac1fbde5f90/merged
192.168.232.135:/web nfs4 19G 8.4G 9.9G 46% /web
[root@docker-3 web]#
root@chaochao:~# mkdir /web
root@chaochao:~# mount 192.168.232.135:/web /web
root@chaochao:~# cd /web
root@chaochao:/web# ls
1.jpg index.html rep.html
root@chaochao:/web# df -Th
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 433M 0 433M 0% /dev
tmpfs tmpfs 96M 1.6M 94M 2% /run
/dev/mapper/ubuntu--vg-ubuntu--lv ext4 19G 6.9G 11G 39% /
tmpfs tmpfs 477M 0 477M 0% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs tmpfs 477M 0 477M 0% /sys/fs/cgroup
/dev/sda2 ext4 976M 202M 707M 23% /boot
/dev/loop1 squashfs 70M 70M 0 100% /snap/lxd/19188
/dev/loop3 squashfs 71M 71M 0 100% /snap/lxd/21029
/dev/loop2 squashfs 56M 56M 0 100% /snap/core18/2074
/dev/loop4 squashfs 33M 33M 0 100% /snap/snapd/12704
/dev/loop5 squashfs 32M 32M 0 100% /snap/snapd/10707
/dev/loop6 squashfs 56M 56M 0 100% /snap/core18/2128
tmpfs tmpfs 96M 0 96M 0% /run/user/1000
overlay overlay 19G 6.9G 11G 39% /var/lib/docker/overlay2/a2d7dea3b856302cf61d9584be91aa69614a8b25db3a7b6c91317d71a6d68a3c/merged
overlay overlay 19G 6.9G 11G 39% /var/lib/docker/overlay2/c6188638a4df298b840dce222da041733de01e636362c34c4c0e34cec9a34e08/merged
overlay overlay 19G 6.9G 11G 39% /var/lib/docker/overlay2/e94850d48ea1962457edacef2d09cfaa838fad8b9899d4455c9b31caa11c07e1/merged
192.168.232.135:/web nfs4 17G 7.8G 9.2G 46% /web
root@chaochao:/web#
7.使用通過nfs服務共享的檔案
命令:docker service create --name nfs-service-1 --mount 'type=volume,source=nfs-volume,target=/usr/share/nginx/html,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/web,"volume-opt=o=addr=192.168.232.135,rw,nfsvers=4,async"' --replicas 10 -p 8026:80 nginx:latest
source=nfs-volume --> docker宿主機上的卷的名字
/usr/share/nginx/html -->容器里存放網頁的目錄
volume-driver=local --> 訪問本地的某個目錄的
volume-opt=type=nfs --> volume對nfs的支持選項
volume-opt=device=:/web --> 是nfs服務器共享目錄
volume-opt=o=addr=192.168.232.135,rw,nfsvers=4,async 掛載具體的nfs服務器的ip地址和選項
--replicas 10 副本的數量
nfsvers=4 --> nfs版本
async --> 異步
[root@docker-manager-1 web]# docker service create --name nfs-service-1 --mount 'type=volume,source=nfs-volume,target=/usr/share/nginx/html,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/web,"volume-opt=o=addr=192.168.232.135,rw,nfsvers=4,async"' --replicas 10 -p 8026:80 nginx:latest
3ws4b26bo2tgi48czckm6jin7
overall progress: 10 out of 10 tasks
1/10: running [==================================================>]
2/10: running [==================================================>]
3/10: running [==================================================>]
4/10: running [==================================================>]
5/10: running [==================================================>]
6/10: running [==================================================>]
7/10: running [==================================================>]
8/10: running [==================================================>]
9/10: running [==================================================>]
10/10: running [==================================================>]
verify: Service converged
[root@docker-manager-1 web]#
[root@docker-manager-1 ~]# cd /var/lib/docker/volumes/nfs-volume/_data
[root@docker-manager-1 _data]# ls
1.jpg index.html rep.html
[root@docker-manager-1 _data]#
[root@docker-2 ~]# cd /var/lib/docker/volumes/nfs-volume/_data
[root@docker-2 _data]# ls
1.jpg index.html rep.html
[root@docker-2 _data]#


方法二:使用sshfs共享檔案
1-4步與方法一一致,
5.客戶機安裝sshfs(以Ubuntu系統為例)
lizhichao@chaochao:~$ sudo apt install sshfs -y
6.掛載nfs-server共享的檔案
root@chaochao:~# sshfs root@192.168.232.135:/download /download
fuse: bad mount point `/download': No such file or directory
root@chaochao:~# mkdir /download
root@chaochao:~# sshfs root@192.168.232.135:/download /download
The authenticity of host '192.168.232.135 (192.168.232.135)' can't be established.
ECDSA key fingerprint is SHA256:H9UmgdDuOZykWs7ysydLjxzCS2tyNNrbylAGIa6pBgc.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
root@192.168.232.135's password:
root@chaochao:~# cd /download/
root@chaochao:/download# ls
chao.txt
root@chaochao:/download#
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/297403.html
標籤:其他
上一篇:Hyperledger Fabric 2.3環境配置搭建指南及BUG記錄
下一篇:Samba共享服務
