【编者的话】本次将分享的容器化ICT融合平台是一种面向未来ICT系统的新型云计算PaaS平台,它基于容器这一轻量级的虚拟化技术以及自动化的“微服务”管理架构,能够有效支撑应用快速上线和自动扩缩容,最大化IT基础设施资源利用率并降低总体拥有成本(TCO)。未来的网络正在向IT化、云化方向发展,容器与微服务技术,完美契合“网络即服务”、网络切片等发展理念,将有助于实现更加灵活、智能、高效和开放的5G新型网络。

2015年,NFV和容器无疑都是最热门的技术,被很多业内人士认为是未来的发展趋势;2016年,当NFV遇上容器,会碰撞出什么新的火花?当容器化的CT/IT业务在同一平台内融合部署,又会产生怎样新的体验?下面和大家分享一下,从2015年到2016年,我们做的容器化CT-IT融合方面的工作。IT我就不解释了,CT这里主要指的是电信业务。



容器化CT-IT融合系统是一种面向未来ICT系统的新型云计算PaaS平台,它基于容器这一轻量级的虚拟化技术以及自动化的微服务管理架构,能够有效支撑应用快速上线和自动扩缩容,最大化IT基础设施资源利用率并降低总体TCO。未来的网络正在向IT化、云化方向发展,容器与微服务技术,完美契合“网络即服务”、网络切片等发展理念,将有助于实现更加灵活、智能、高效和开放的5G新型网络。



下面是从2015年到2016年,我们做的容器化CT-IT融合方面的工作:

  • 2015年,我们首次提出容器化ICT融合方案
  • 2016年初,我们完成容器化ICT融合原型系统
  • 2016年4月8日~4月9日,中国移动召开2016年度技术工作会,容器化ICT融合原型系统首次亮相技术工作会精品展。
  • 2016年6月20日~6月23日,OPNFV Summit在德国柏林召开。在OPNFV PoC战区,中国移动和红帽公司联合展示了容器化ICT融合平台
  • 2016年6月29日,由GSMA主办的2016世界移动大会-上海(Mobile World Congress,简称MWC)在上海新国际博览中心盛大开幕,在中国移动研究院5G展区,我们为参会专家演示了容器化ICT融合原型系统。

最初产生将网元容器化的想法来源于2015年,我们正在进行NFV IMS测试,同时也正在进行容器和DCOS的相关技术研究和验证性工作,关于应用场景,最适合容器化的应用无疑是所谓的云原生应用,或者说是微服务,其主要特点是分布式、无单点失效、无状态,这和我们测试的某些厂商的IMS网元的特征竟然如此地一致,而容器的轻量级、高性能、快速启动等优势,也恰好是网元所需要的,几分钟部署一套核心网元或许真的会从梦想变成现实。于是,一对新的组合诞生了,NFV Container=NFC。



理论+实践才能创造出真理,在理论分析的基础上,可行性验证必不可少,而惊喜总是无处不在,尝试创新的道路也不是总那么孤独,开源的IMS项目Clearwater也在做和我们类似的工作。Clearwater是IMS网元的一个开源实现,其主要目标是开发一套适合在云上(如aws)部署的IMS网元,提供语音、视频、消息服务。Clearwater在架构上就以微服务的方式设计各个组件,并且提供了docker格式的容器镜像,我们将它移植到Kubernetes平台上,平台具有负载均衡、容灾恢复、支持资源监控等特点使其更适合服务化

测试环境

硬件

Red Hat 3D打印演示系统,内含3台服务器。

软件

  • 操作系统:Red Hat Enterprise Linux Server release 7.2 (Maipo)
  • 容器引擎:docker-1.8.2-10.el7.x86_64
  • 容器编排:kubenetesv1.1.0-origin-1107-g4c8e6f4

Clearwater架构

Clearwater架构主要分为六大组件,Bono、Ralf、Sprout、Homer、Homestead、Ellis,如下图所示,其中Sprout作为SIP Router,是核心业务处理模块,也是业务量增加时,需要做动态扩容的主要部分。

NFC测试方案

针对Clearwater中每个组件,定义一个Kubernetes Service,每个服务中包含一个或多个POD,可以通过增加POD个数进行横向扩展。



Kubernetes中服务列表如下图所示:

Kubernetes中POD列表如下图所示。测试过程中,通过基于SIPP的clearwater组件增加并发用户量,系统压力增加,触发sprout服务中POD个数增加。

为实现POD的动态扩展,一方面,利用Kubernetes本身的replication controllers,根据负载增加或减少POD副本数量,另一方面,clearwater sprout是微服务架构,分布式,无状态,数据和应用分离,可通过集群配置,让集群中各个容器共享数据库。



在并发用户数为300个时,sprout模块POD数量一般为2~3个,在并发用户数增加到2000个时,sprout模块POD数量达到11个,如果继续增加并发用户数到3000个,sprout模块POD数量达到15个左右。

CT-IT融合测试方案

在大数据应用中,容器的轻量级、高性能、快速启动等特点同样具有优势,而CT和IT业务融合部署,也是未来发展的一个趋势,在本次测试中,我们在同一个容器平台上,部署了IMS网元和大数据应用。



在CT应用负载比较低的时候,系统主要用于进行大数据应用计算,大数据应用所占系统CPU资源比例较高。如下图资源监控界面所示。

当CT业务量增加,系统负载增大,为满足在线CT业务要求,增加CT业务容器数量,同时减少大数据离线业务占用资源。资源使用情况变化如下图所示。

总结

容器作为轻量级的虚拟化技术,可以降低系统开销,提升系统性能。

  • CT/IT融合部署:CT和IT应用在同一平台内混合部署,共享资源,提高资源利用率。
  • 统一资源调度:打破应用竖井,统一建设,统一运维,降低TCO
  • 系统性能提升:采用容器技术,轻量级的虚拟化,降低系统开销
  • 微服务架构:分布式、无状态的云原生应用,实现应用于数据的分离
  • 弹性伸缩、自动扩容:支持自定义的资源调度策略,实现根据业务量变化的资源动态调度。

Q&A

Q:网络转发有没有遇到瓶颈?有没有尝试一些加速技术,比如DPDK?

A:因为是控制面网元,目前没有遇到瓶颈,没有用DPDK,我们之前测试过虚拟机的,因为网元特点,也是没有配置DPDK,目前的测试上看,性能上没有问题。

Q:现在数据库也放在容器中吗?

A:是的,但是也是数据库集群,我们正在做将数据库分离的工作。

Q:你们实测的容器运行于虚拟机环境,性能如何,你们容器网络如何实现NFV互联?

A:容器没有基于虚拟机环境,因为是控制面网元,性能没有遇到瓶颈。

Q:容器不会包打天下,与虚机,物理机并存可能是一段时间内的一种常态,我们有没有分析哪些业务适合容器化,哪些业务不宜改变?并且在利用Kubernetes作为容器的编排调度工具时,如何实现容器与虚机应用的互通?

A:其实业务不宜改变不仅仅是技术问题,也和业务厂商是否愿意改变有关,毕竟一些遗留的业务已经在现网运行很久了,很难短期内容器化。另外,我们确实碰到了需要内核优化的业务。我们系统中还没有做容器和虚拟机应用互通。

Q:传统CT网络不仅仅是IMS吧,对于CS、PS,SDN/NFV化,你们有什么思路吗?

A:IMS使我们容器化的第一个尝试,其他的网元也正在研究中,后续也会做相关的测试,如果有兴趣,也欢迎参加我们后面的测试。

Q:你们的资源池,有路由器,安全组,负载均衡之类的功能嘛?路由器,负载均衡器可以被分配公网IP吗?

A:指的是容器的资源池还是我们已有的私有云资源池,已有的私有云资源池是有的,但是容器这个原型系统还没有。

Q:类似Clearwater的开源项目还有哪些?

A:NFV方面的吗,如果是IMS,Clearwater业界用的比较多,NFV其他网元开源项目很多。

Q:你们的虚拟机底层使用什么虚拟化技术支撑?

A:这次演示,底层用的就是Docker,我们的私有云资源池有VMware、KVM也有Xen。

以上内容根据2016年8月16日晚微信群分享内容整理。分享人马轶慧,中国移动通信有限公司研究院私有云项目经理,之前曾任VMware研发中心研发工程师。一直关注并致力于虚拟化、容器、云计算等相关领域。

容器化ICT融合初体验的更多相关文章

  1. .NET自带IOC容器MEF之初体验

    .NET自带IOC容器MEF之初体验   本文主要把MEF作为一种IOC容器进行讲解,.net中可用的IOC容器非常多,如 CastleWindsor,Unity,Autofac,ObjectBuil ...

  2. vue组件化初体验 全局组件和局部组件

    vue组件化初体验 全局组件和局部组件 vue组件化 全局组件 局部组件  关于vue入门案例请参阅 https://www.cnblogs.com/singledogpro/p/11938222.h ...

  3. Docker深入浅出系列 | 容器初体验

    目录 Docker深入浅出系列 | 容器初体验 教程目标 预备工作 容器与虚拟化技术 什么是Docker 为什么要用Docker 事例 什么是容器镜像和容器 容器与虚拟机的区别 Vagrant与Doc ...

  4. Spring核心原理之IoC容器初体验(2)

    本文节选自<Spring 5核心原理> 1 IoC与DI基本概念 IoC(Inversion of Control,控制反转)就是把原来代码里需要实现的对象创建.依赖,反转给容器来帮忙实现 ...

  5. 【阿里云产品公测】结构化数据服务OTS之JavaSDK初体验

    [阿里云产品公测]结构化数据服务OTS之JavaSDK初体验 作者:阿里云用户蓝色之鹰 一.OTS简单介绍 OTS 是构建在阿里云飞天分布式系统之上的NoSQL数据库服务,提供海量结构化数据的存储和实 ...

  6. Coding-Job:从研发到生产的容器化融合实践

    大家好,我是来自 CODING 的全栈开发工程师,我有幸在 CODING 参与了 Coding-Job 这个容器化的编排平台的研发.大家对 CODING 可能比较了解, Coding.net 是一个一 ...

  7. 传统.NET 4.x应用容器化体验(1)

    我们都知道.NET Core应用可以跑在Docker上,那.NET Framework 4.x应用呢?借助阿里云ECS主机(Windows Server 2019 with Container版本), ...

  8. 传统.NET 4.x应用容器化体验(4)

    上一篇我们试着将.NET 4.x的镜像推送到harbor私有镜像仓库,本篇我们来使用一下阿里云的镜像仓库服务并了解一下携程的实践. 1 关于阿里云镜像仓库 阿里云容器镜像服务(简称 ACR)是面向容器 ...

  9. 传统.NET 4.x应用容器化体验(5)

    前面几篇都是基于阿里云ECS直接玩的,有童鞋问直接用Windows Server 2019可以玩不,本篇就为你介绍一下如何给Windows Server 2019配置Docker环境. 1 准备工作 ...

随机推荐

  1. 洛谷 P3956 棋盘

    题目描述 有一个m ×m的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的.你现在要从棋盘的最左上角走到棋盘的最右下角. 任何一个时刻,你所站在的位置必须是有颜色的(不能是无色的), 你只能向上 ...

  2. Django项目:CRM(客户关系管理系统)--18--10PerfectCRM实现King_admin日期优化

    #kingadmin_tags.py # ————————06PerfectCRM实现King_admin注册功能获取内存优化处理———————— # # 因为前端禁止使用下划线开头(_meta.ve ...

  3. CF 549B Looksery Party

    题面 解题思路 如果a数组全部>0,那么都不去即可.从这个角度出发,每次选出a[i]为0的,让它们去更新a数组,相当于拓补排序. 代码 #include<iostream> #inc ...

  4. bzoj 2662 [BeiJing wc2012]冻结——分层图

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2662 这种的都是分层图. #include<iostream> #include ...

  5. 磁力搜索网站 BT torrent search engine 推荐 2019/12/25日更新

    btkitty 知名的BT磁力搜索,资源很多,中文友好 btdb 知名的BT磁力搜索,资源很多,中文友好 838888 不错的 BT 磁力搜索引擎,资源很多,中文友好 idope.se 资源丰富的BT ...

  6. logo 编程

    玩了一把logo语言,好学易懂,小朋友有兴趣是个挺不错的玩意.当然也可用于一些机器人等控制 apt install ucblogo ;一个多边形 l 边长 n 边数 to sj :l :n repea ...

  7. @Service ,@Controller,@Component注解

    首先,在applicationContext.xml文件中加一行: <context:component-scan base-package="com.hzhi.clas"/ ...

  8. GIT生成公钥和私钥

    转载至:https://blog.csdn.net/gwz1196281550/article/details/80268200 打开 git bash! git config --global us ...

  9. win10 下安装docker,创建镜像,push镜像到私有仓库,创建私有仓库,修改镜像仓库地址

    通过连接下载window docker安装文件,https://download.docker.com/win/stable/Docker%20for%20Windows%20Installer.ex ...

  10. Lua报unexpected symbol near错误

    如果Lua脚本没有错误,那可能是UTF8 BOM的问题