天天看點

驗證 Swarm 資料持久性 - 每天5分鐘玩轉 Docker 容器技術(104)

上一節我們成功将 Rex-Ray Volume 挂載到了 Service。本節驗證 Failover 時,資料不會丢失。

Scale Up

增加一個副本:

運作之前我們先推測一下,理想的結果應該是:swarm 在 <code>swarm-worker2</code> 上啟動第二個副本,同時也将挂載 volume <code>my_web</code>。

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

出現了一點複雜的狀況:

swarm 首先嘗試在 <code>swarm-worker2</code> 上啟動第二個副本,但在 mount volume 失敗。

重試了三次都失敗了。

最後在 <code>swarm-worker1</code> 成功啟動第二個副本。

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

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

更新 Volume

更新 volume 的内容。

service 傳回更新内容,資料已經同步到副本。

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

Failover

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

通路 service,以前更新的内容完整地保留了下來。

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

Swarm 資料管理就讨論到這裡,下一節我們學習 Service 的 Replicated Mode 和 Global Mode。

書籍:

1.《每天5分鐘玩轉Docker容器技術》

<a href="https://item.jd.com/16936307278.html" target="_blank">https://item.jd.com/16936307278.html</a>

2.《每天5分鐘玩轉OpenStack》

<a href="https://item.jd.com/12086376.html" target="_blank">https://item.jd.com/12086376.html</a>