私有云平台落地(一)——需求和矛盾
题前话:
矛盾不能根本消除,矛盾只能不断的演变转换。
随着云平台落地的持续升温,各种私有云解决方案提供商也基于OpenStack和CloudStack推出各家独有的行业云解决方案。更多的企业则是希望通过使用OpenStack或者CloudStack的社区版本,为自己搭建私有云服务。
但是,怎么进行云平台的落地却是个很大的问题。
各种开源云平台,在长时间发展之后,都会演变成一个比较全方位的解决方案。但是根据企业现有业务和将来可能发展的业务,都不大可能使用到一个开源云平台所有的功能。
对于云平台的选择,还需要从企业自身的需求开始整理。
需求(找出矛盾)
能源和空间问题
传统数据中心场景中,随着业务线的扩张,并发量的增加,需要的是 更高运算能力的小型机,更大容量,更高IO的存储设备,更稳定,更高效的数据库系统。这样的扩张,势必需要配备更多的机柜,更大的机房来满足。在地皮价值 越来越高的情况下,在电力成本越来越高的情况下,这样的扩张似乎也不是公司管理层愿意见到的结果。
在使用云平台之后,可以通过弹性调度和横向扩展,来满足业务的需求,在不增加物理资源的情况下,通过提升物理资源利用率来降低能源和空间成本。
线上生产系统的发布和横向扩展
生产环境中的业务系统,根据访问高峰期和资源占用率来调度系统,不必再持续购买硬件设备。通过云平台的自动化弹性扩展功能,在某服务的高峰期自动启动新的vm来均衡现有系统负载。
例如公司的两类业务,业务A主要访问期是在白天9:00~17:00,业务B主要访问时间为20:00~24:00,这样如果按照传统物理集群部署方案,同一数据中心内,则需要同时满足2个业务线的峰值配备,在访问低谷期的时候,则会造成不同程度的资源浪费。
使用云平台之后,则将该数据中心的资源全部整合成一个私有云。在业务A的高峰期时,恰好是业务B的低谷时期,则可以通过关闭业务B的负载,增加业务A的负载来调整整个云平台的资源调度状况。
以上简单的使用场景,可以方便的看出来,通过分时段的调度和弹性扩展,可以有效的节约业务线硬件成本,在不为所有业务线配备最高配置物理资源的情况下,也可以进行资源的完整隔离,用以节约资源并为业务高峰期提供更高量的负载。
解决运维对于大规模服务器的运维痛点
通过开源云平台的调度和HA,基于分布式存储和集群存储,实现虚拟机自动迁移和重启,减少人员干预,使业务意外宕机到恢复服务中间时间减少。
在千台以上级别的服务器集群中,主机频繁出现故障的概率会变得很大,运维人员如果关注于主机的恢复(更换硬盘、网卡、内存条,重启机器)等操作,无疑会降低运维对于业务线其他需求的响应速度。而往往,业务上线和调优才是运维的最重要任务之一。
引入问题(新的矛盾)
云平台的超配问题(over-provision)
为了增加资源的利用率,在不影响负载的前提下,一般都会对资源进行不同程度的超配。
CPU和磁盘是2个比较常见的超配资源。
CPU超配:除了极端情况,比如业务线整体负载飙升到满载,一般不会有太明显的问题,因为云平台大多是对物理CPU进行了虚拟化,即VM CPU也是使用物理CPU进行时间片轮询进行运算。
磁盘超配:以KVM+本地存储为例,KVM格式设置为qcow2,目前测试比较划算的方式。qcow2格式的磁盘,在hyperviser的文件系统中是一个随读写逐渐增大的文件。随着业务线log的写入,文件会逐步增大到额定值,即便其中有log的压缩和删除,因为文件存储格式的问题,qcow2文件在hyperviser中也不会回缩,而是一直增大下去。长期运行这样的VM,会导致VM磁盘占满整个物理磁盘而导致无法在物理磁盘中运行其他系统服务。
内存超配:这个是最容易产生问题的超配项目,一般不建议开启内存超配。在业务负载稍微高一些的时候,几台VM内存占用可能会撑满整个hyperviser,于是就进入了不停的读写swap,进而导致业务线IO和并发严重下降。
线上生产系统的发布和横向扩展
业务访问高峰期,占用资源就会大量增加,为了保证高峰期业务的负载需求,则需要关闭非高峰期业务的vm,或者进行超配来抢占其他vm的资源。
关闭vm一般不可取,因为对于运维来说,维护一个动态的集群,比维护一个静态集群的成本要更高。而且,关闭的vm中,可能有正在处理的业务或者保存了用户登录的session。
不关闭vm的情况下,只能通过超配来抢占其他vm资源,以保证当前业务线高峰时间负载增加。
监控平台的部署
解决运维对于大规模服务器的运维痛点
1、云平台搭建成功后,运维可能不再需要特别迅速的相应业务线,因为VM的HA可以由云平台自身搞定。
相应带来的问题,是云平台的运维和网络维护,运维需要对云平台自身故障(hyperviser宕机、网络延迟过高、云平台消息队列故障等)引起的部分服务无法正常运行,进行迅速响应。虽然因为业务相关VM正常启动着,不会对时间有之前那么严格的要求,但是云平台本身架构带来的复杂程度也给解决问题带来了很高的人力开销。
对于搭建私有云的公司来讲,云平台的运维人员,应该是预算中必不可少的。
2、运维人员查看业务系统日志的难度增加
假设业务线稳定性全部由运维负责,如果由业务线研发负责,则把该人力成本计入运维。
生成环境中的虚拟机数量,一般是传统数据中心物理机数量的5~10倍左右。
相应线上环境的业务信息监控,日志排查,所需要的成本也会相应增加为5~10倍。所以,对于运维来说,服务监控和日志的排查则需要付出更多的时间成本。
解决方案(矛盾转移)
超配问题
简单粗暴点可以限制不进行超配,则不会产生以上问题,相应物理资源的利用率就不会有大幅提升,所以,能源和空间消耗并不能得到明显降低。
增加监控告警机制,在资源达到临界值时及时告警,由运维人员来处理当前问题。比如磁盘整体占用达到临界值,则对vm磁盘文件进行处理,shrink或者日志导出并重新部署vm来减少磁盘的占用。
线上生产系统的发布和横向扩展
如果有超配的情况下,需要对某些资源进行特定设置。
内存:需要关闭linux的swap机制,强制vm不去使用缓存,以保证系统当前负载。
结论:
以哲学思想为理论指导,云平台的落地,并不能一劳永逸解决企业问题。
在解决掉资源、能源、运维人力等问题之后,所产生的新矛盾则需要带入新的