胡道成 2014-12-10
有这么一个需求,一家企业里的 IT 经理,由于最近几年云计算炒的非常火爆,老板一直让他弄一个云计算,问我有什么好的想法没有?
我问:你们有多少物理资源?主营业务是什么?
他问:我们只有不到 20 台物理服务器(机架式),主营业务是汽车配件,还有一个他们的电子商务网站。
我问:这个网站用户量怎么样?服务器是否可以支撑这些高峰期的用户,服务器上还部署着什么其它的软件么?
他说:现在服务器资源足够用,网站用户量也不是太多,偶尔搞搞什么活动,就把其它两个服务器也部署一套网站应付一下,平时轻闲的很,其它几个服务器部署了一些类似于 ERP 的软件,但是平时用的不是很多,又跟我说,部门就他们两三个人,但是他们还有一个不到十人的团队,在做一个汽车配件类的移动 APP。
我问:你们用虚拟化了么?
他说:用了,有两台 VMWare,平时也会试试 KVM。
我问:你们的网站有涉密数据么?
他说:没有。
我问:你们那个开发团队在需要申请资源的时候,都是走什么样的流程,走完整个流程大概需要多长时间?
他说:先在邮件上提出资源配置要求,邮件回复结果。如果有可用的资源配备,在从 OA 上申请,整个周期快的话需要大概 2 天,慢的话估计得 3 到 4 天,如果需要资源(物理服务器)被其他人占用的话,就需要购买,这个周期就长了。
我问:那些被占用的资源,使用率怎么样?
他说:就跑服务器端程序,开发类的居多,占用的资源很少。
通过以上一问一答的聊天,我给出了以下结论,来分享给大家:
1、这位朋友现有的资源,足以满足他们企业的需求,而且还有大部分资源没有利用起来,我建议除了数据库外的资源全部虚一下,先将资源整合,把资源池化,提升资源的利用率;
2、完成以上资源池化以后,就是要做一个集中管理,如果以 VMWare 为主,可以用 vCenter 来做管理,KVM 的话也有一些开源的管理工具。这样就可以做一些简化的管理操作;
3、根据企业的业务属性,再将多虚拟化环境管理起来,类似的工具有 CloudStack、OpenStack 等,这样就形成了一个小的 IaaS 私有云;
4、通过对 CloudStack、OpenStack 等工具的功能扩展,可以实现对资源申请、回收等流程的统一管理,大大提高交付资源的质量;
5、对于网站和移动 APP类的应用,如果高峰期来临,本地的资源抗不住,也可以通过对 CloudStack、OpenStack 的扩展,借用一部分外部资源,比如 AWS、阿里云等,这样就可以在需要的时候申请外部资源,空闲的时候就释放外资源,按需使用、按量计费,维护成本也大大降低了,这样就又打造了一个企业的混合云环境。
通过以上结论,又帮着这位朋友简单的梳理了一下建设流程。
一阶段(资源整合阶段):
1、将物理资源按物理配置进行分类;
2、先将空闲的物理资源池化;
3、对公司业务进行再分类,梳理流程;
4、根据资源和业务分类,将网络资源和存储资源进行池化;
5、对资源池进行统一的集中管理。
二阶段(IaaS 实施阶段):
1、 IaaS 工具选型,根据企业的特性选择一个合适的 IaaS 工具。方便灵活、又偏交付质量,且稳定的可以选择 CloudStack;公司即有Python开发能力,对虚拟化又有较深的技术能力,且有独特的企业业务特性,自主能力比较强的可以选择 OpenStack;
2、把虚拟化集中管理工具接入到选好的 IaaS 工具中;
3、初始化 IaaS 工具;
三阶段(己有资源迁移阶段):
1、将现有资源中的数据向私有云环境进行迁移,可选的方式有 V2V(虚机到虚机)、P2V(物理资源到虚机)、D2V(数据到虚机)等;
2、迁移后的一致性校验和试运行;
3、试运行无问题后,将原有设备进行初始化,然后加入到 IaaS 环境。
四阶段(开发阶段):
1、根据企业的性质,对业务进行梳理;
2、收集最终(其它部门)用户需求,整理预开发的功能列表;
3、对将要开发的功能进行优先级划分,分阶段进行开发;
4、研发完毕,联调测试;
5、BUG 修证;
6、上线。
五阶段(混合云开发阶段):
1、整理业务需求和对公有云服务进行选型,比如阿里云、AWS 等;
2、在现在的 IaaS 工具上接入公有云服务,以支持业务的需要;
3、研发完毕,联调测试;
4、BUG 修证;
5、上线。
当然也要注意以下问题:
1、技术方面:云计算是一个架构,包含很多种技术的组合;应用方面:云计算是一个优秀的商业模式;要用云计算,就要先清楚他的定义。
2、虚拟化不是云计算,充其量也就是云计算中的一个模块,一种实现技术。没有了传统的虚拟化技术,我们还有基于容器的技术,同样可以实现类似功能,比如:Docker、LXC、OpenVZ 等;
3、由于一些商业限制和一些稳定性的原因,传统或开源的云计算工具 CloudStack、OpenStack 等无法百分百的支持流行的商业虚拟化技术,会对一些商业限制的功能和一些在云环境下不稳定的因素阉割掉,大家一定要注意;
4、一些物理服务器数量未达到某个量级时,又或者相应的业务不符合云计算的定义时,使用云计算反而会带来更多的问题,比如使用习惯上、某些虚拟化特性上等等。所以资源少的情况下,只做到虚拟化的集中管理就可以了;
5、在资源(当然更多的还是物质上)充足的情况下,可以采用一些商业的 IaaS 工具。