【趙強老師】Docker Swarm集羣的數據持久化

若是Docker Swarm集羣中運行了mysql、nginx等服務,這些服務的數據若是沒有掛載到宿主機中,那麼容器一旦中止運行,那就意味着數據丟失。html

有什麼方法能夠解決swarm集羣中運行的服務可以數據持久化呢?咱們能夠經過volme、nfs等方法來實現swarm集羣應用數據持久化,其實也和docker數據持久化的形式是同樣的。node

能夠用兩種方式來實現:mysql

  1. volume 默認模式:工做節點宿主機數據同步到容器內。nginx

  2. volume NFS 共享存儲模式:管理節點宿主同步到工做節點宿主,工做節點宿主同步到容器。sql


1、經過volume實現數據持久化 docker

注意:這種方式各個節點的數據不能共享。 安全

卷是繞過聯合文件系統的一個或多個容器內的特定目錄。 卷被設計爲保持數據,與容器的生命週期無關。 所以,Docker在刪除容器時不會自動刪除卷,也不會「垃圾收集」再也不由容器引用的卷。 也稱爲:數據卷。服務器

 

 

使用的語法格式以下:  網絡

   

 

使用案例:  異步

  •  在Swarm上部署服務,同時指定相應的數據卷

docker service create -p 7788:80 --replicas 3 --name myswarmtest \
--mount type=volume,src=myvolumn,dst=/usr/share/nginx/html/ collenzhao/mynginx:v1

 

  •  查看數據卷

docker volume ls

 

 

  • 查看數據卷掛載的目錄

docker volume  inspect myvolumn

 

2、經過NFS實現數據持久化  

NFS(Network File System)即網絡文件系統,它容許網絡中的計算機之間經過TCP/IP網絡共享資源。在NFS的應用中,本地NFS的客戶端應用能夠透明地讀寫位於遠端NFS服務器上的文件,就像訪問本地文件同樣。  

   

 

爲了方便咱們進行測試,單獨準備一臺機器做爲NFS的服務器:node3。接下來,咱們就須要安裝NFS了。  

 

一、全部節點安裝NFS  

yum -y install nfs-utils

   

 

二、NFS服務器端的部署    

  • 開啓NFS服務

systemctl enable nfs
systemctl start nfs

   

  • 建立NFS目錄

mkdir /nfs

   

  • 編輯NFS配置文件

vi /etc/exports

輸入如下內容:
/nfs *(rw,sync,no_root_squash)

參數說明:
/nfs : 共享的目錄
* : 能夠訪問的主機網段,星號表示全部網段。
rw : 可讀寫權限,只讀權限ro
sync : 同步,數據更安全,速度慢
async : 異步,速度快,效率高,安全性低
no_root_squash :NFS 服務共享的目錄的屬性, 若是用戶是root, 對這個目錄就有root的權限

     

  • 重啓NFS

systemctl restart nfs

     

三、NFS客戶端的部署    

  • 啓動NFS客戶端

systemctl start rpcbind

     

  •  測試掛載nfs共享目錄

mount -t nfs 192.168.15.140:/nfs /mynfs

其中:192.168.15.140爲node3(NFS服務器的地址)

     

  •  在文件/mynfs/a.txt 輸入一些內容,在nfs服務器端查看是否可以看到剛纔輸入的內容。也能夠經過下面的語句卸載NFS目錄。

umount /mynfs/

     

 四、基於NFS共享目錄,建立Swarm集羣服務

docker service create \
--replicas 3 \
--name my-nginx \
-p 7788:80 \
--mount 'type=volume,src=my-nfs-vol,dst=/usr/share/nginx/html,volume-driver=local,volume-nocopy=true,volume-opt=type=nfs,volume-opt=device=192.168.15.140:/nfs,"volume-opt=o=addr=192.168.15.140,vers=4,soft,timeo=180,bg,tcp,rw"' \
collenzhao/mynginx:v1

     

 參數說明:

       

 

五、驗證明驗環境      

  • 在Manager節點上,查看服務和數據卷目錄

docker service ls

     

docker volume ls

     

 

  • 查看node1數據卷目錄

docker volume ls

     

 

  • 查看node2數據卷目錄

docker volume ls

     

 

  •  在任意一個節點上,進入數據卷共享目錄修改a.html

     

相關文章
相關標籤/搜索