在泊塢羣模式(1.12+),可以創建所謂的「全球性」的服務,如:Docker全局服務是否總是首先在新的Swarm節點上創建?
docker service create \
--name redis_2 \
--mode global \
redis:3.0.6
全球服務在每個節點上運行。
當我向Swarm中添加新節點並且Swarm有一些待定服務要創建時,創建服務的順序是什麼?
不羣保證全球服務中創建第一(直到它的健康檢查通過),只有經過羣創建掛起複製服務?
在泊塢羣模式(1.12+),可以創建所謂的「全球性」的服務,如:Docker全局服務是否總是首先在新的Swarm節點上創建?
docker service create \
--name redis_2 \
--mode global \
redis:3.0.6
全球服務在每個節點上運行。
當我向Swarm中添加新節點並且Swarm有一些待定服務要創建時,創建服務的順序是什麼?
不羣保證全球服務中創建第一(直到它的健康檢查通過),只有經過羣創建掛起複製服務?
不,沒有保證的服務啓動順序。最佳做法是將您的應用程序/服務設計爲對其他服務的失敗具有恢復能力。請記住,在應用程序的生命週期中,服務可能會隨時中斷(服務更新,網絡可能暫時不可用,節點甚至數據中心可能停止運行)。
如果一項服務依賴於另一項服務,則可以(例如)實施一個重試循環;一個簡單的例子可以在官方的WordPress圖片中找到,它有一個重試循環來檢查數據庫服務器是否可用,並接受連接; https://github.com/docker-library/wordpress/blob/637afb53dc03b4af19149a0880e796346f97c137/php5.6/apache/docker-entrypoint.sh#L170-L181
你說的對於複製服務肯定是對的,我意識到這一點。但是,這不是我所說的服務之間的依賴關係。我沒有印象,這也適用於_global_服務。你是否知道任何官方的Docker文檔都提到關於執行順序的全球服務? – igr
除「部署」全局服務之外(即每個節點一個,除非添加'--constraint'),「全局」服務與「複製」服務沒有區別(請參見[複製和全局服務] (https://docs.docker.com/engine/swarm/how-swarm-mode-works/services/#/replicated-and-global-services)) – thaJeztah