驗證 Swarm 數據持久性 - 每天5分鍾玩轉 Docker 容器技術(104)


上一節我們成功將 Rex-Ray Volume 掛載到了 Service。本節驗證 Failover 時,數據不會丟失。

Scale Up

增加一個副本:

docker service update --replicas 2 my_web

運行之前我們先推測一下,理想的結果應該是:swarm 在 swarm-worker2 上啟動第二個副本,同時也將掛載 volume my_web

對比一下實際的運行結果:

535.png

出現了一點復雜的狀況:

  1. swarm 首先嘗試在 swarm-worker2 上啟動第二個副本,但在 mount volume 失敗。

  2. 重試了三次都失敗了。

  3. 最后在 swarm-worker1 成功啟動第二個副本。

mount 失敗的原因是:以 VirtualBox 為 backend 的 Rex-Ray volume 不支持同時 attach 到多個 Host。

需要注意:這實際上是 VirtualBox 的限制,而非 Rex-Ray。如果 backend 選擇 Ceph RBD 就沒有這個問題。

更新 Volume

更新 volume 的內容。

536.png

service 返回更新內容,數據已經同步到副本。

540.png

當前的實驗環境如圖所示:

538.png

Failover

現在模擬故障情況。shutdown 節點 swarm-worker1,過一會,所有副本都會遷移到 swarm-worker2

539.png
 

訪問 service,以前更新的內容完整地保留了下來。

540.png

當前的實驗環境如圖所示:

541.png

Rex-Ray 作為 Swarm 的存儲編排方案能夠很好地支持跨主機 volume 管理,而且當容器在集群中遷移時 volume 也能夠自動遷移。

Swarm 數據管理就討論到這里,下一節我們學習 Service 的 Replicated Mode 和 Global Mode。

書籍:

1.《每天5分鍾玩轉Docker容器技術》
https://item.jd.com/16936307278.html

2.《每天5分鍾玩轉OpenStack》
https://item.jd.com/12086376.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM