容器服務中的節點失效時Docker容器重新排程介紹

2021-09-23 19:52:13 字數 791 閱讀 3118

生產環境部署的服務都會考慮單點失效情況下的高可用性。在容器服務中,當節點失效的時候,能否重新排程容器到健康節點上繼續提供服務對於生產環境中的服務高可用性尤為重要。下面我們就演示一下容器服務的重新排程功能。

首先建立乙個含有3個節點的集群。

我們使用如下編排模板建立乙個含有三個例項的nginx service,注意到新增了乙個屬性reschedule:on-node-failure意思是在節點失效的時候 會重新排程這個容器。

web:

image: nginx

restart: always

environment:

- reschedule:on-node-failure

labels:

aliyun.scale: "3"

建立成功後容器分布如下:

下面我們在 ecs 控制台上將其中一台機器關掉來模擬節點宕機。

我們來看看目前容器情況如何

可以看到,在失效節點上的容器已經被自動遷移到另外乙個機器上,而且這樣配合前面的 slb 負載均衡,可以做到節點宕機不影響線上服務的效果。

下面我們將宕機的那台機器重新啟動起來。因為我們的容器都設定了restart: always, 這樣我們原來在這台機器的容器就會重新啟動,會導致原service多出乙個容器。這裡我們會將多餘出來的這個容器刪除,保證service的容器個數。

docker swarm 在overlay 網路下不會重新排程失效節點的容器,而且對於"復活"的節點,它也不會去刪除掉多餘的容器。 從上面的例子我們可以看到,我們解決了這些問題。

STL中容器vector迭代器失效的相關問題

無法通過迭代器 操作遍歷整個stl容器。記作 第一層失效。無法通過迭代器訪問迭代器所指向的記憶體。記作 第二層失效。insert i,value 在迭代器i前插入乙個元素value,返回指向value迭代器 erase i 刪除迭代器i位置的元素,返回指向後乙個元素的迭代器 i insert i,v...

修改alpine的docker容器中的時區

檢視alpine容器時間 其實現在已經是下午5點了,差了8個小時。utc coordinated universal time 需要改為cst china standard time home test date wed nov 25 08 57 30 utc 2020修改容器時間 安裝tzdata...

C 容器作為引用傳參時導致的迭代器失效問題

容器作為引用傳參可能導致迭代器失效 一 序列型容器 包括vector,deque,string等,其特點是元素儲存在連續記憶體中,插入和刪除會導致之後的元素移動,所以插入和刪除都會導致插入 刪除點及其之後的所有迭代器失效。在迴圈中刪除元素的正確寫法 for auto it nums.begin it...