https://www.jianshu.com/p/62ccab5ec964
容器宿主机的选择需要考虑如下几个问题
这些问题,每一个单独拿出来,都不是很好回答,并且每个企业实际情况不尽相同,我将结合我们在生产环境的实际使用经验,来谈一谈如何选择容器的宿主机,你从本文中可以获得一些启发,来规划符合自己的容器集群。
采用物理机的好处
采用虚拟机的好处
采用虚拟机,可以获得虚拟机带来的诸多好处,采用物理机唯一的优势是资源利用率高。考虑到资源利用率并不是问题, 最终采用虚拟机。
从 http://openskill.cn/article/88 这里的测试数据可以看出, KVM 虚拟化
实际生产需要落地的数据,放在共享存储上 (cephfs, moosefs) , 其iops 由存储系统提供,本地磁盘只用来存储镜像及容器运行的临时数据。 对磁盘的性能要求,无需特别苛刻。
在实际的运维过程中,我们发现部分场景下,会出现主机卡死,或者docker进程卡死, 这时,最快恢复业务的方法是重启主机。 容器在主机重启后,可以自动恢复,因此可以做到在1到2分钟内快速恢复业务。这一点太重要了,物理机重启由于需要做各种硬件检测,重启时间一般在5到10分钟, 虚拟机重启一般在1分钟以内 , 物理机显然无法满足需求。
容器平台经常需要更新操作系统,或者根据需要调整主机规格
我们起初上线了 8 核 32G规格的虚拟机。 运维过程中发现了如下的问题
从以上角度来看, 容器主机的规格越大越好
后来,我们将主机规格调整为 32核 128G (为什么不用物理机请参考,为什么考虑重启速度?,为什么资源利用率不是问题? )。 运维过程中发现了如下问题
从以上角度来看, 容器主机的规格越小越好。 物理机的容量更加大(内存可以配置到 512G 甚至更高), 故障时,影响范围更加巨大。
8核32G 的配比为 1:4 ,从以往的运行监控数据来看。当内存使用到 90%左右时, CPU使用率 40%。
目前在资源利用率上,docker已经做得很好, 主要考虑稳定性和弹性。 采用 1:4 的配比。
假设一个环境中有2台主机, 当其中一台主机故障时,为了能将业务迁移到另外一台主机, 这两台主机的利用率最高可以到 50% 。
为了给集群提供弹性, 当有主机故障时, 其他主机要有能力承载这台主机上的业务。 我们可以算出相关关系, N为集群主机数量, M为能够承受损坏的主机数量
(N - 1 )* (1 - usage% ) = M * usage%
N = (M*usage%) / (1- usage%) + 1
我们看一下,为了能够承受一台主机完全损坏, N= usage%/ ( 1- usage%) + 1 , usage% = N-1 /N
集群利用率和集群主机数量关系为
我们挑选一个合理且方便计算的利用率 80% , 那么集群中最少需要5台主机。
结合主机的规格,我们可以算出一个集群的最小容量。
按照一个业务占用 2G (QA环境经验值)内存来算 , 集群可承载的业务数量为
过大或过小的规格,都会导致问题。 目前合理的规格为 16核64G, 或者 32核128G , 一个集群主机数量不少于5台.
原文:https://www.cnblogs.com/jinanxiaolaohu/p/12206795.html