炼数成金 门户 大数据 虚拟化 查看内容

运行Docker:物理机vs虚拟机,五方面详细对比!

2018-8-7 11:19| 发布者: 炼数成金_小数| 查看: 9014| 评论: 0|原作者: 杨俊俊|来自: 新钛云服订阅号

摘要: 从2013年3月dotCloud公司发布第一个版本的Docker以来,已经有越来越多的公司将自己的线上业务跑在了Docker里面,大量的实战经验证明Docker是一种值得信赖和拥抱的技术。不论网上,还是各种技术交流会上,大家也都在 ...

测试 硬件 自动化 运维 Docker 故障

从2013年3月dotCloud公司发布第一个版本的Docker以来,已经有越来越多的公司将自己的线上业务跑在了Docker里面,大量的实战经验证明Docker是一种值得信赖和拥抱的技术。不论网上,还是各种技术交流会上,大家也都在交流Docker的使用经验,Docker的话题很多,本篇就针对“Docker运行在物理机还是云主机上,该如何选择?”这个话题展开讨论。

对于这个问题,很多朋友第一反应可能是先找找官网有没有类似的较佳实践,笔者也顺着这个思路来,在搜索之后发现Docker官方并不要求你一定要将Docker跑在物理机或者云主机上,它更关注的是应用而非基础架构,无论是物理机,还是云主机,无论你的操作系统是CentOS,Fedora,Ubuntu,Debian,MAC,Windows它都支持。

官方没有明确的较佳实践,那对于新用户来说怎么办呢?
习惯性的想到了另一条路“借鉴”;对于新用户,借鉴是个不错的选择,看看大公司都是怎么用的,比如BAT,京东,网易他们是怎么用的。不过就笔者在与这些公司的朋友交流之后发现,这条路似乎也给不了我们答案。他们的Docker跑在物理机和云主机里面都有,大家也都用的很好。

两条途径都给不了我们现成的答案,那看来只能靠自己了。
明确了Docker在物理机和云主机里面都能跑,而且每个场景也都有人在线上用,那我们就来比较一下,各种的优势和不足,简单点就从五个关键字出发。

1.性能
性能包括CPU性能和IO性能,相同配置的情况下,物理机都是胜出的,这点源自于云主机的硬件都是由软件模拟出来的(passthrough硬件给云主机的情况,暂不考虑,因为一般情况下passthrough的云主机很难得到,且成本较高),性能到底损耗多少呢?

国外有人做过相关的测试,使用了一台8核32G Amazon EC2 m4.2xlarge 云主机和一台8核32G的物理机进行对比测试,测试的结果是物理机上比云主机上运行Docker,在IO和CPU方面要快25%-30%,当然这个结果只能代表他的测试场景,但大家也可以参考他的测试方法,在自己的环境里面亲测一下。25%-30%的性能优势,物理机完胜;(附上链接性能测试连接
https://www.stratoscale.com/blog/containers/running-containers-on-bare-metal/ )。

2.多租户
同一个Docker节点,如果多人使用,且对于某些用户的工作负载无法共享内核或者需要监听相同的端口。在这种情况下,因为云主机提供了额外的隔离层,所以是物理机无法满足的,云主机完胜。

3.自动化
自动化,是目前大家都绕不开的话题,因为对于繁琐重复的事情,谁都不喜欢天天干(特别是运维),所以大部分公司,都有运用自动化,差别在于大公司有完整的平台,小公司有一堆脚本。

目前各大云基本都有各自的API,可以非常方便的管理自己的云主机,创建,删除,都非常方便。但是对于物理机的API,这个就非常困难了,因为涉及到不同的型号,使用IPMI也需要做大量的适配,目前能提供物理机租赁的云厂商也没有好用的API提供给用户。所以当需要临时搞活动的时候,结合自动化/API, 将Docker跑在云主机上是能满足需求的方案。

4.灵活性
灵活性包括两方面,一是服务器配置调整;云主机配置调整,只需要关机,页面升配,开机,整个升配过去1-2分钟就能搞定;物理机调整配置,首先需要确认是否支持,比如硬盘槽位够不够,服务器网口够不够,网线是否布好,交换机口够不够等等,即使可以升配,那升级硬盘还要系统里面重新做raid,升级内存还需要开机箱等等,一系列繁琐的操作,最终完成升配那最快也需要几个小时。1-2分钟 PK 几个小时,云主机完胜。

二是用户配额,云主机的配置是灵活的,可定制的,比如某个用户,需要搭建一套测试环境,需要8核16G的资源就够了,这种情况下,一台云主机即可满足。但如果使用物理机的话,就非常不灵活了,因为物理机在采购的时候,通常是一个规格的,不可能穷举不同的规格。所以这一点上,云主机完胜。

5.灾难恢复
硬件故障,这个谁都无法完全避免,那么出现故障的时候,恢复一台云主机和恢复一台物理机哪个更快?目前的公有云,很多都采用的计算节点和存储节点分开的架构,存储节点做了高可用,所以计算节点出现硬件故障时,只需要将云主机做迁移,再开机即可完成故障恢复。时间可以控制在5分钟内完成。

物理机故障恢复,首先需要判断是什么故障,一般硬盘故障都不影响系统(物理机硬盘都会做raid进行保护),内存故障,主板故障,如果有备机,那可以进行更换至少30分钟+,如果没有备机,那就需要报修,派单,上门更换,整个流程走完需要1-2天(这个还取决你购买的服务,服务器是否过保等等);5分钟 PK 1-2天,云主机完胜。

总结
在通过“性能”,“多租户”,“自动化”,“灵活性”,“灾难恢复”这五个关键字的对比分析之后,简单总结一下, 对于大多数场景,Docker运行在云主机上是就够了,但是对性能要求非常高的应用,还是建议直接在物理机上运行Docker,所以混合云,才是最终的解决之道。将Docker混合部署在物理机和云主机上,根据应用的需求,灵活的分配资源,在满足业务的前提下,较大限度的提高资源利用率才是真正的较佳实践。

作者介绍
杨俊俊 新钛云服运维架构师
十年运维经验,曾任盛大游戏资深云工程师,前隆科技系统运维主管。《深度实践KVM》,《Linux运维较佳实践》作者。精通KVM,VMWare,Docker等虚拟化相关技术。在基础架构、虚拟化和自动化运维方面具有丰富的实战经验,主导实施过上万台服务器上云迁移。

声明:文章收集于网络,如有侵权,请联系小编及时处理,谢谢!

欢迎加入本站公开兴趣群
软件开发技术群
兴趣范围包括:Java,C/C++,Python,PHP,Ruby,shell等各种语言开发经验交流,各种框架使用,外包项目机会,学习、培训、跳槽等交流
QQ群:26931708

Hadoop源代码研究群
兴趣范围包括:Hadoop源代码解读,改进,优化,分布式系统场景定制,与Hadoop有关的各种开源项目,总之就是玩转Hadoop
QQ群:288410967

鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

热门频道

  • 大数据
  • 商业智能
  • 量化投资
  • 科学探索
  • 创业

即将开课

 

GMT+8, 2018-8-19 11:31 , Processed in 0.280843 second(s), 25 queries .