使用docker swarm叢集心得
本片關於使用docker swarm 叢集心得,也是一些經驗吧!過程描述可能簡單!
根據一些公司使用經歷接收一下問題並針對問題作出應對策略
1、docker swarm叢集 主節點數必須是單數,也就是說主節點數控制一般是1、3、5、7.......
為什麼是單數,大家可能都知道很多叢集都是這樣設定主節點的 像zab paxos raft等分散式一致性協議都是以多數節點存活作為可用部分,
docker swarm 叢集內部選主機制是raft(https://raft.github.io
加入有5個節點,連續三個主節點down掉了這個時候就剩下兩個從節點這個時候誰也不能達到半數以上的選票導致叢集暫停等待有新的節點加入。
2、docker swarm 所有主機儘量配置相同
為什麼說要配置儘量相同,雖然docker會根據俄cpu和記憶體做一些簡單的容器編排平衡,如果存在配置資源有的高有的低的情況,配置資源高的宿主機執行的容器就會較多,如果這個機器重啟或者宕機這個時候容器會漂移到兄弟節點。兄弟節點配置比較低就會壓垮配置低的節點。
3、docker swarm 所有主機儘量都在一個網段,如果不在一個網段多個網段宿主機儘量均等,保證一定比例的冗餘資源
為什麼說盡量在一個網段那,因為網段之間加入有問題了很可能會將叢集分成兩半,同樣很容易導致上面第一點的問題,
所以說如果叢集時跨網段的儘量將raft協議節點分佈在合適的網段(“合適”根據業務情況定)
4、docker swarm 叢集所有使用資源必須要一定的冗餘數量,冗餘數量的多少以可宕機宿主機數量百分比來定
回到上面第2點內容的回答,我們叢集資源一定要有冗餘,因為docker swarm容器會漂移到正常的節點,所以為了不讓節點因為資源壓垮要有一定的冗餘,docker swarm目前好像沒有根據資源降級的特性。
5、宿主機作業系統一定要用對
根據個大社群的建議 使用ubuntu,原因有一下幾點:
第一、核心更新快,更適應docker的快速迭代,很多linux功能支援也很新。
第二、根據經驗ubuntu使用出現莫名其妙問題最少社群強大
6、儘量再生產環境使用物理機作為宿主機