APP下载
报价宝  ›  综合  › 

【K8s台湾企业实战经验谈:中华电信】因应短暂而量大的预购压力,以微服务实现弹性部署与标准化维运

报价宝 来源:baojiabao.com 发布时间:2019-10-02 09:48:00 09月11日更新
报价宝综合消息【K8s台湾企业实战经验谈:中华电信】因应短暂而量大的预购压力,以微服务实现弹性部署与标准化维运

关于将预购系统导入容器化、微服务架构的工程,中华电信规划了三个阶段,初期的重点是容器化,中期则是将应用程序拆解开来,后期则是希望达成DevOps的流程。(图片来源/黄昭文)

云端服务当道,接连掀起了服务器虚拟化、容器化、微服务化的风潮,应用系统的开发、整合、测试、上线的速度有了剧烈的提升,承载应用系统的平台发生量变与质变,在企业IT环境里面的工作负载,除了支撑日常关键应用系统的稳定运作,也面临更多极端的需求,像是持续时间不长、负载量却超高的应用服务,越来越常出现,该如何因应这样的挑战?

在iThome主办的Kubernetes Summit大会当中,今年就有两家台湾电信业者谈到他们导入容器服务平台的经验,中华电信就是其中之一,他们目前是将这样的架构用在既有的预购系统上,而且,建置的平台是企业级软件──红帽的OpenShift Container Platform,不过,即便如此,他们在系统搬迁过程中,仍经历了预期以外的状况,有意采用这类环境的企业,若能及早掌握可能影响搬迁作业的各种细节,应能减少出错机会。

先拿预购系统开刀,因其服务特性很适合移植到云端环境

身为成立时间最久的台湾电信业者,中华电信所经营的各种通讯、网络与加值服务,背后都由资讯系统支撑,当中有许多都是十年以上的老旧系统,因此,他们近期开始思考把这些系统搬到云端服务的环境,而预购系统的搬迁就是率先进行的工程。

为什么是这套系统先行?中华电信资讯处工程师黄昭文表示,传统预购系统最大问题就是瞬间的抢订压力,许多网站往往承受不住,为了解决问题,业界提出的作法是运用分散式架构,但同时也须面对一些问题,像是网络管理、多台设备管理、数据库系统负荷能力、储存管理,建置这些环境的成本也很高。

第二个考量是预购系统的另一个特性:使用时间很短。一般而言,电信业者的预购系统,运作时间并不长,可能上线为期三天、一周,之后就会下架,若要建置专属环境,不敷成本效益。

这是一般电信业者预购系统的运作架构,在设计上,是以分散负载的方式来考量,希望能够妥善消化瞬间抢购的压力,但需要针对网络管理、设备管理、储存管理、高可用性的需求,来配置IT资源,搭建成本相当高,而且这类系统服务时间并不长,之后又需要撤下、回收,想要以更经济的方式快速扩展(缩回)应用系统规模,相当不容易。(图片来源/黄昭文)

这是中华电信建置的容器服务平台,他们采用的是Red Hat OpenShit Container Platform,在Kubernetes Summit大会上,他们首度揭露目前系统的架构。(图片来源/黄昭文)

历经容器化、解构,进入微服务

在系统搬迁的作业时程上,中华电信规划了下列3个阶段。

第一阶段:原貌搬迁

系统搬迁初期,他们对应用系统的调整幅度不大,优先考量服务正常运作。此时主要的工作,是将应用程序的执行环境,从实体服务器、虚拟机器,搬到OpenShift。过程当中,他们先把虚拟机器当中的应用程序,放到Docker container,再将容器搬到OpenShift。以耗费时间而言,从VM转到Docker较短,从Docker到OpenShift较久。

关于这阶段的搬迁,黄昭文列出7大工作重点。首先是盘点程式行为,因为当应用程序改到OpenShift执行之后,开始会有一些横向扩充(Scale out)的活动,可能就会相互冲突;其次是参数需重新设计,若能用对参数、改变参数喂送的方式,对于K8s的操作比较友善。

第二阶段:系统解构

此时,中华电信开始执行预购系统的解构,提高逻辑的清晰度。相较之下,前一个阶段,他们是把整个应用系统包进容器当中,但在这个阶段,则是开始进行合理拆解,导入微服务的概念,让系统上下游之间可透过RESTful API去串接,应用程序当中的不同部分,可以横向扩充规模。同时,他们也选用轻量的Web应用程序框架,像是Spring Boot来进行改写,而不再采用WebLogic这类应用程序服务器。

关于Kubernetes平台的使用上,黄昭文也特别提醒,要注意Pod的串接数量。他们发现,串连路径越长,效能折损越大。所谓的Pod是指一群容器的代称,对于K8s环境而言,是最小的物件模型单位。

他也秀出效能测试的图表,当Pod串接到两个站点时,网络呼叫的效能就会瞬间降至低点。若要增加效率,他提出以下几个建议:我们可以在应用系统上游的呼叫端,导入共用连线(Connection Pool),或是运用异步作业的机制,也可以在应用系统下游的服务端,采用高效能的应用程序框架。若需要非常高的效能,我们可以多个相关的容器封装在同一个Pod里面,如此可以大幅减轻网络流量的负担。

第三阶段:微服务、DevOps

在预购系统的搬迁进入最终阶段之际,中华电信期望可以跨入微服务、DevOps的应用。

在此之前,黄昭文呼吁企业应评估自身体质是否适合,确认应用系统架构的调整,究竟是想要还是必要。同时,也要注意单位组织分工的变化,如果是横向切割,未来在DevOps的流程当中,彼此合作会更为密切,在系统维运的惯性上,IT人员也要有心理准备,因为复杂度可能会提升。

在资料处理的结构与流程,这时也可能需要重新设计。例如,应用程序连接的数据库系统可能需要拆解,才能支应微服务的存取需求,而拆解之后的资料内容同步,也需要注意。

事实上,这个阶段的目标更为宏观,希望达到独立开发、高效率部署、维运标准化的要求。黄昭文坦言,其实在中华电信内部有太多系统,每一套系统都有不同维运的方式,对于经验传承、未来招募新人而言,都是困难的地方,于是,他们希望应用系统的开发与维运,从需求管理延伸到交付部署,都有一模一样的流程,对于企业而言,不论是成本或管理考量,都会比较简单、稳定。

掌握不同环境差异,可少走冤枉路

除了规划三大阶段,黄昭文也列出多项过程当中需注意的技术细节。首先是底层环境,有些商用软件的登录机码或组态授权,会捆绑处理器或服务器的型号,如果没有处理好,系统搬移到另一个环境时,可能无法启动。

软硬件的相依性上,由于部分软件授权有处理器核心数量授权限制,因此,若搬迁到新环境,提供的处理器核心数量很多时,也可能无法启动系统。

系统软件本身也有一些相依性的议题,那就是与操作系统核心(Kernel)版本之间的捆绑。举例来说,若底层服务器的操作系统更新核心,应用系统可能就会受到影响而停摆。

在容器的部分,黄昭文建议,每个容器里面不要放置太多处理程序,否则当多个容器同时执行,可能会相互干扰。

接着要注意的部分,在于容器的执行权限,以及K8s或OpenShift本身的环境变数,在配置上,应避免与其冲突,因为若发生这样的状况,原本自定的部分,将会被系统覆盖。

容器的Volume设定也要关照一下,当我们包好容器或采用他人的容器之后,请记得打开里面的组态,例如,查看Dockerfile,确认储存Volume挂载的位置,以防出现资讯遗漏的状况。

在Kubernetes的部分,我们要注意ConfigMap的只读限制,有些应用程序需要修改设定时,若没有考虑到这个因素的影响,可能就无法启动。对于实体储存配置上,也要关注可用空间的多寡,因为若出现容量不足的状况,Kubernetes系统会停用Pod。

 相关报导  企业K8s实战在台湾 

文章标签: 报价宝 降噪耳机价格 耳机价格 红米手机价格 华为手机价格 小米手机价格 电视机价格 笔记本电脑价格 笔记本价格 汽车价格 数码相机价格 汽车价格 笔记本价格 小米手机价格 降噪耳机价格