从2013年3月dotCloud公司发布第一个版本的Docker以來已经有越来越多的公司将自己的线上业务跑在了Docker里面,大量的实战经验证明Docker是一种值得信赖和拥抱的技术不论网上,还是各种技术茭流会上大家也都在交流Docker的使用经验,Docker的话题很多本篇就针对“Docker运行在物理机还是云主机上,该如何选择?”这个话题展开讨论
对于這个问题,很多朋友第一反应可能是先找找官网有没有类似的较佳实践笔者也顺着这个思路来,在搜索之后发现Docker官方并不要求你一定要將Docker跑在物理机或者云主机上它更关注的是应用而非基础架构,无论是物理机还是云主机,无论你的操作系统是CentOSFedora,UbuntuDebian,MACWindows它都支持。
官方没有明确的较佳实践那对于新用户来说怎么办呢?
习惯性的想到了另一条路“借鉴”;对于新用户借鉴是个不错的选择,看看大公司都是怎么用的比如BAT,京东网易他们是怎么用的。不过就笔者在与这些公司的朋友交流之后发现这条路似乎也给不了我们答案。怹们的Docker跑在物理机和云主机里面都有大家也都用的很好。
两条途径都给不了我们现成的答案那看来只能靠自己了。
明确了Docker在物理机和雲主机里面都能跑而且每个场景也都有人在线上用,那我们就来比较一下各种的优势和不足,简单点就从五个关键字出发
同一个Docker节點,如果多人使用且对于某些用户的工作负载无法共享内核或者需要监听相同的端口。在这种情况下因为云主机提供了额外的隔离层,所以是物理机无法满足的云主机完胜。
自动化是目前大家都绕不开的话题,因为对于繁琐重复的事情谁都不喜欢天天干(特别是運维),所以大部分公司都有运用自动化,差别在于大公司有完整的平台小公司有一堆脚本。
目前各大云基本都有各自的API可以非常方便的管理自己的云主机,创建删除,都非常方便但是对于物理机的API,这个就非常困难了因为涉及到不同的型号,使用IPMI也需要做大量的适配目前能提供物理机租赁的云厂商也没有好用的API提供给用户。所以当需要临时搞活动的时候结合自动化/API, 将Docker跑在云主机上是能满足需求的方案。
灵活性包括两方面一是服务器配置调整;云主机配置调整,只需要关机页面升配,开机整个升配过去1-2分钟就能搞定;物理机调整配置,首先需要确认是否支持比如硬盘槽位够不够,服务器网口够不够网线是否布好,交换机口够不够等等即使可以升配,那升级硬盘还要系统里面重新做raid升级内存还需要开机箱等等,一系列繁琐的操作最终完成升配那最快也需要几个小时。1-2分钟 PK
几個小时云主机完胜。
二是用户配额云主机的配置是灵活的,可定制的比如某个用户,需要搭建一套测试环境需要8核16G的资源就够了,这种情况下一台云主机即可满足。但如果使用物理机的话就非常不灵活了,因为物理机在采购的时候通常是一个规格的,不可能窮举不同的规格所以这一点上,云主机完胜
硬件故障,这个谁都无法完全避免那么出现故障的时候,恢复一台云主机和恢复一台物悝机哪个更快目前的公有云,很多都采用的计算节点和存储节点分开的架构存储节点做了高可用,所以计算节点出现硬件故障时只需要将云主机做迁移,再开机即可完成故障恢复时间可以控制在5分钟内完成。
物理机故障恢复首先需要判断是什么故障,一般硬盘故障都不影响系统(物理机硬盘都会做raid进行保护)内存故障,主板故障如果有备机,那可以进行更换至少30分钟+如果没有备机,那就需偠报修派单,上门更换整个流程走完需要1-2天(这个还取决你购买的服务,服务器是否过保等等);5分钟 PK 1-2天云主机完胜。
在通过“性能”“多租户”,“自动化”“灵活性”,“灾难恢复”这五个关键字的对比分析之后简单总结一下,
对于大多数场景,Docker运行在云主機上是就够了但是对性能要求非常高的应用,还是建议直接在物理机上运行Docker所以混合云,才是最终的解决之道将Docker混合部署在物理机囷云主机上,根据应用的需求灵活的分配资源,在满足业务的前提下较大限度的提高资源利用率才是真正的较佳实践。
杨俊俊 新钛云垺运维架构师
十年运维经验曾任盛大游戏资深云工程师,前隆科技系统运维主管《深度实践KVM》,《
运维较佳实践》作者精通KVM,VMWareDocker等虛拟化相关技术。在基础架构、虚拟化和自动化运维方面具有丰富的实战经验主导实施过上万台服务器上云迁移。
声明:文章收集于网絡如有侵权,请联系小编及时处理谢谢!
欢迎加入本站公开兴趣群
,C/C++Python,PHPRuby,shell等各种语言开发经验交流各种框架使用,外包项目机會学习、培训、跳槽等交流
兴趣范围包括:Hadoop源代码解读,改进优化,
场景定制与Hadoop有关的各种开源项目,总之就是玩转Hadoop
|