使用docker swarm集群心得
Posted zhyg
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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使用出现莫名其妙问题最少社区强大
如果使用其他linux操作系统尽量使用最新稳定版内核
6、尽量再生产环境使用物理机作为宿主机
以上是关于使用docker swarm集群心得的主要内容,如果未能解决你的问题,请参考以下文章