本文作者分享了身处中小型企业在云平台建设过程中的若干感受,既有经历的坎坷也有收获的经验,供广大同行参考借鉴。
作者Rock,目前担任某国内著名餐饮连锁企业运维负责人,从事过数据库、大数据和容器集群的工作,对DevOps流程和工具方面有比较深刻的理解。
云计算这个话题,已经被谈论了好多年了,从最初的使用公有云,到现在越来越多的开始建设或已经建设自己的私有云,中小型企业历经了很多坎坷,也积累了大量的经验,本文想从几个方面来谈谈前进道路上的几点感受。
一、传统架构捉襟见肘
越来越多的企业开始关注IT基础架构对上层业务系统的支撑能力。在传统的IT基础架构环境下,为了支撑起越来越多的业务系统,底层IT基础架构正变得越来越复杂,使得企业要想对IT系统实现高效的管控变得越来越难,与此同时也导致IT运维成本不断增加。体现在如下几个方面。
(1)IT系统日趋庞杂且难以维护
随着业务规模的不断扩张,用于支撑业务运行的IT系统和基础设施也日趋庞杂,从前台、中台到后台,从网络、业务到数据,企业在业务应用需求变得日趋复杂的同时,企业的IT基础设施也开始变得复杂且难以有效管控。
(2)IT运维力不从心,成本日渐高企
在传统IT基础架构下,随着企业IT基础架构的不断扩张,企业需要投入越来越多的IT人员保证IT系统的正常运行,同时IT系统的故障率也快速攀升,IT系统的运行效率却呈下降趋势。
(3)IT系统无法快速适应业务需求
扎克伯格曾经对传统架构提出一个问题,他无法知道该购买多少服务器,原因是当业务高峰来临时需要大量的服务器节点扩容,而常规时间则需要少量的服务器足矣。传统架构的服务器通常是根据项目来购买的,无法实现快速的扩容和缩容。
(4)IT系统集成难度日益加大
由于企业普遍缺乏一个长远的信息化规划,企业的信息化系统的实施存在随机性和随意性,在软硬件部署过程中不会太注重整体的兼容性,其结果导致大量的异构系统独立并存,信息孤岛普遍存在,对后期信息系统之间的集成造成难以逾越的障碍。
二、云架构的优势
互联网时代的到来改变了很多原有的定式,而中国特有的互联网+模式的出现也改变了很多企业的经营运作方式,云计算逐步已经成为众多企业关注的焦点。究其原因就在于,云计算平台架构能突破传统IT基础架构所面临的诸多问题,比如资源利用效率低、成本投入高、系统调整不灵活等。这些问题在云计算平台上都能得到很好的解决。基于云的平台部署架构具备以下几个优势:
(1)大幅降低IT投入成本
传统IT系统实施过程中主要包括三大成本投入:软硬件系统购买成本、IT系统部署和实施成本、IT系统运维成本。随着企业业务的不断扩张,企业需持续不断的进行IT成本的投入,导致三大成本会持续增长。在很多企业,IT成本投入已经占据企业利润的很大一部分,给企业的资金带来了不小压力。这使得越来越多的企业考虑通过将业务托管到云平台来降低IT投入费用。
(2)根据业务需求快速调整IT需求
在云平台架构下,企业只需要登录云平台进行资源的重新申请和配置就可以实现,而且不需要停机操作,极大的缩短的调整周期和业务运行风险,而且云平台通常具备自动扩缩容的能力,能根据负载情况,自动调节节点或负载点的数量。
(3)极大的降低业务集成难度
在云平台上,所有的系统可以基于统一的架构体系,系统之间只要简单的二次开发就能实现对接。
三、云建设的选型
目前在企业内部实施云平台的企业比比皆是,比如德国大众,这样的超大型企业使用了Mirantis公司Openstack架构,对企业内部各种平台进行了整合,建立了统一的企业云平台。但是中小企业由于其业务量和资金的限制,在云计算平台的建设方面需要考虑自身的特点,主要有以下几点。
(1)公有云还是私有云?
公有云无疑是有其优势的,特别对于企业云平台发展的初期,由于无须初期的投入,中小型企业可以避免在建设初期对基础设置投入大笔的资金,把有限的资金和时间投入业务软件代码开发中,而且还可以省去中后期的基础架构运维人员的成本,而把自己的注意力集中在业务软件上。目前,亚马逊云、阿里云拥有大量的中小型企业客户,这都体现出公有云对它们的魅力所在。但是,随着企业规模的扩大,在公有云上的缺点也就暴露出来了,那就是成本。虽然公有云上规模后,费用可以大幅降低,但大量云上IaaS和PaaS的成本,还是不断的在敲打着企业管理者的心弦。我曾经见到过,某个互联网中小型的独角兽企业,一买腾讯云的服务器都是上千台的量级,这里所花的费用自然非常之高。所以,当企业在服务器达到一定规模后,都会建立自己私有云。这里涉及到成本的核算,以及业务规模和发展的衡量。通常,混合云的架构会被采用,即利用公有云作为流量的入口,可以必然在网络入口设置上巨大的投入,而自己的业务放在私有云上,用以降低成本。
(2)数据放在公有云上还是私有云?
在混合云架构下,数据是放在云上,还是云下呢?这在国内和国外还真的不一样。老外的思维和中国人不太一样,比如美国公司是绝对信任云商的,所有,有大量的中小型企业把数据放在云上,亚马逊云的DynamoDB每年都会从Oracle抢走不少市场份额,让不少中小型企业将数据库迁移到云上,此举导致了Oracle的市场份额每年都以一定的微小幅度下滑。国内的中小型企业正好相反,他们更相信数据保留在IDC或私有云中是安全的。所以数据是放置在公有云还是私有云,需要根据企业数据的属性,如果是金融或财务类数据,倾向于放在私有云内,而一般数据放置在公有云内。现在公有云,比如阿里云的RDS,已经有了金融云数据库,所以,金融类数据有的也放置在了公有云上。
(3)Openstack架构还是Kubernetes架构?
早些年的私有云建设还要在Openstack和VMware之间做选择题,OpenStack是这样使用Python写的半成品平台,如果简单使用,是不用二次开发的,但要用开源的Openstack用于生产环境运行,说真的,业界可能还没有见到过。OpenStack的结构非常松散,项目特别多,开发的团队也特别多,源代码一直缺乏很好的管理。所以,目前公有云运行的都是魔改后的OpenStack框架,比如IBM的Bluebox,EasyStack。VMware是商业化产品,受制于庞大的许可证方面的原因,很少有中小型企业,会采用这个方案。近些年来,随着Kubernetes技术的成熟,越来越多的企业的云平台转向了Kubernetes,Kubernetes简称为k8s,虽然也是开源的实现,但由于谷歌主导CNCF组织的加入,对源代码的控制力非常强,所以,使得Kubenetes的稳定性和效率不断提高。目前已经推出的1.20版本,3年了还没出2.x版本,足见对其代码质量要求之高。
All In Kubenetes的容器云已经成为了新一代的标准,过去数据库是不建议部署在容器云内的,主要考虑到稳定性、效率和传统的理念,但是随着TIDB和Vitness的出现,这已经被克服了。
Kubernetes本质上是IaaS结合PaaS的平台,由于其稳定性、自动监控性、先天编排自愈等的特性,比OpenStack更为受到欢迎,又有谷歌这样的一方巨擘为其背书。各大公有云厂商早就各自推出了自己容器云的平台供企业选择。
(4)网络的重要性
这里要尤其突出云平台网络的重要性。云平台无论是哪种架构,都是分布式的存在,实现的是存储和计算分离,对于网络的依赖比传统架构更强烈。在传统架构中,如果网络一部分不可用,不会影响到其他,但是在云平台系统中,网络不可用,甚至工作缓慢,可能就是致命的。所以,如果要建立私有云,选择可靠且高速的网络是非常重要的。笔者曾经使用过一个大厂的商业化的kubenetes集群产品,使用不到半年就退货了,为什么呢?让厂商到我们机房来自建网络设备,而且全部使用这个大厂推荐的品牌的网络设备,还是时常报出网络卡死导致Ceph不可用的情况,发生状况时,登录mysql要花10分钟,实在不敢用于生产系统,最后只能遗憾退货了。
四、云平台建设的组成部分
总的说来,构建云平台的主要驱动力包括降低软硬件成本、实现应用系统快速部署、应对业务负载突发性增长需求、构建安全可靠自主可控的基础架构环境等,在设计中小型企业私有云过程中需要对以下四点需要重点关注。
(1)资源池
云计算要进行软硬件资源的统一管控和灵活调度,首先需要做到的就是对资源纳管,即构建资源池。而需要注意的是资源池的意义并非仅仅是通过平台使软硬件资源的可知可控成为可能,更为重要的是明确与之相匹配的管控手段和策略,使其涵盖资源的全生命周期管理。
A、资源可达
资源池是在技术层面打破旧有的竖井式信息系统建设模式的关键,是软硬件资源实现统一管控、灵活调度的基础。使任意资源在技术上都可以通过网络以服务的形式被无障碍、无区别的供给。
B、规模可控
主要是在指云计算的弹性,制定资源池扩展和收缩的规则,通过使用时间、使用量、持续时间、优先级等一系列量化阈值触发规则在资源池体量不足时可以灵活的向资源池中添加各种资源。这点对于中小型企业而言,可以实现在混合云架构中,在公有云上进行自动扩缩容,来弥补本身IDC资源的不足。
C、能力可知
这点需要逐步完成,因为云计算的本质是种服务,通过具备科学完备的统计方法和计算规则,评估可供给的服务能力,配以必要的系统监控、资源使用监控、计量计费等手段,实现资源池的能力可知。
(2)云管理平台
云管平台是云服务设计、发布和管理是云计算的核心,体现了云计算的运营形态,而云管理平台是实现云服务全生命周期管理的基础,是实现云计算运营模式的载体。它的建设需要实现以下几点。
A、状态可视
对于云平台而言,可视并不仅仅代表图形化的访问和管控,企业建设私有云更为重要的是从云服务供应商的视角通过云管理平台实现对资源的集中管控。因此云计算环境中,监控的重要性将上升到前所未有的高度,同时相比于传统信息系统架构,监控的含义和涵盖的范围也有了很大的变化,一般说来,在企业私有云平台中,必须具备对包括基础架构资源、服务、安全审计在内的监控能力。
B、分配可控
基础架构资源的管控是云计算运营最重要的基础和最核心的资源。对基础架构资源的合理管控是企业建设自己的私有云的重要出发点,而对资源管控的实现需要通过云管理平台完成。对于云计算环境中的基础架构资源,从初始建设、分配使用在到回收等一系列动作都应该根据服务设计和相关SLA规定制定详细、规范的流程以及科学合理的处理手段,使云管理平台对资源的管控涵盖资源的全生命周期,做到初始建设合理、管控过程合规、资源分配合适、管控操作可回溯、已分配资源可回收。
C、服务可用
服务是云计算环境的核心。在构建私有云时企业往往会从自身的应用特点和需求出发进行服务的设计和实现,因此很难针对私有云制定通用的服务模板,依据云计算建设的通用方法,对于云服务的建设,一般说来会关注云服务的识别、设计、实现和维护四个阶段。
(3)自动化和标准化
在云计算环境中,自动化对象往往是那些经常使用、手工发起的复杂操作,这就要求自动化的对象应符合通用设计,遵循相同的技术规范,具备一致的处理流程,动作行为可参数化,即自动化的目标应该是标准化的。
标准化时,可以考虑构建基于基础架构资源的IaaS云、Paas云乃至SaaS云,需要注意的是一并非所有的基础架构、平台软件和应用软件都具备标准化的条件,而标准化的代价同样高昂,中小型企业开始没有必要构建一个大而全的标准化体系,应该从小处入手,从自身的需求出发,构建一个定制的标准化平台。比如笔者的公司在开发PaaS云标准化平台时,只是根据开发的需求开发和完善Kafka、ElasticSearch、Redis Cluster,很多参数都写死在PaaS中,并没有暴露出来,秉承着“先有后优”的方针,后期慢慢优化。二是不合理的自动化流程设计将可能会导致错误的蔓延和环境的失控.因此,在进行自动化设计过程中,尤其需要注意规则的设定和异常处理。比如:Kubernetes中的Redis Cluster的Operator,笔者公司原来找了一个开源的,但是发现这个Operator考虑的不是很周到,有很多坑,那么处理的方法无非两种,一避免某些方面Operator的使用,二改写这种Operator的代码。
(4)云安全
在云计算体系中,安全涉及到很多层面,一般说来,在云计算环境中应主要考虑网络安全、存储安全、物理机安全、虚拟化安全、虚拟化管理安全、交付层安全、数据安全、安全服务和运维安全等9个层面和领域。这也是中小型企业初期最容易忽视的一部分。全部要做好,有点力不从心。所以,建议全力先做好网络安全这一点,在前文中,笔者提出互联网的入口借助于公有云的入口,有部分原因也是为了安全考虑,要知道公有云对网络安全的投入是非常大的,除了防火墙,WAF以外,比如腾讯云还有云镜等设备。
本文是笔者身处中小型企业在云平台建设过程中的若干感受,当然中小型企业不能和大型企业一样去一味的购买商业化产品,也不能如同大型互联网公司一样,招聘大量的业务资深人才去设计一个功能齐全完备的公有云产品(比如拥有serverless、Lamda等功能)。中小型企业必须从自身的需求和能力出发,去建设一个符合自身发展需求的云平台。