docker如何處理高可用

docker如何處理高可用

來自 VMware 環境,我的整個過程是:

  1. 多台Docker機器(swarm),掛載相同的NFS資料存儲
  2. 在 Docker swarm 上部署一個容器(例如 Maria dB)
  3. 如果 swarm 中的一個節點發生故障,服務仍在其他節點上執行

所以我安裝了/var/lib/docker/卷在 NFS 共用上、在多台 Docker 機器上並嘗試建立一個群組。但最終我發現,如果多台 Docker 機器掛載同一個 NFS 資料存儲,則 Docker 服務只能在其中一台節點上啟動。

所以我想我的問題是,如何建立一個群,在多個節點上運行相同的服務,並將資料保存在 NFS 共享上?

當然,我很可能還沒有完全理解 Docker 群如何運作的想法,而且我從錯誤的角度看待這個問題。

答案1

正確的是,您不想共享 /var/lib/docker 中的任何內容,這是資料和配置該引擎位於單一伺服器上

在 Swarm 中,您將節點作為管理者或工作人員新增至 Swarm 中,管理者複製儲存 Swarm 配置和狀態的 raft 共識資料庫。

然後,您可以建立服務,這些服務具有相同容器映像的一個或多個副本,並根據需求和可用性在不同節點上啟動。

對於資料庫,您正在處理持久性資料(每個資料庫執行個體的資料庫和日誌)。這與 Docker Volume(儲存持久性資料的位置)有關,特別是您選擇的磁碟區驅動程式。預設僅將該服務副本(容器)的磁碟區儲存在目前執行的節點上。如果您希望該資料庫容器能夠在發生故障時自動在新節點上啟動(容器編排器的功能之一),您需要使用不同的「群體感知」卷驅動程序,並且知道如何確保NFS 掛載放置在正確的節點上,以便為正確的服務副本做好準備。

您可以查看雷克斯射線它充當管理外部儲存上的磁碟區的中間層(並且有自己的後端類型驅動程式)或查看Docker Store 中的完整列表

相關內容