DockOne微信分享(一一八):容器技术在企业级服务里的实践


【编者的话】邻盛在做面向中小微企业做服务的时候, 实际遇到很多情况, 比如对方IT基础过于薄弱, 比如基础设施过于简陋, 比如产品要解决行业需求, 企业个性需求等等,经过几年积累目前摸索出了一套完整的产品方案。目前产品是以容器为核心的一套完整的PaaS平台+全新的微服务架构+底层能力构成的完整解决方案, 目前也进入到了几家传统大型制造企业协助他们完成新一代的信息升级。

【深圳站|3天烧脑式Kubernetes训练营】培训内容包括:Kubernetes概述、架构、日志和监控,部署、自动驾驶、服务发现、网络方案等核心机制分析,进阶篇——Kubernetes调度工作原理、资源管理及源码分析等。

邻盛在企业级服务市场面向对象以及产品说明

邻盛是一家企业级服务创业企业,主要面向企业提供业务管理方案(产品),目前客户主要对象是中型和小微型企业,目前也在探索面向大型制造企业的方案。目前针对中型企业提供私有云、混合云、公有云多种方案,对小微型企业主要提供公有云方案。

私有云产品:
QQ图片20170514083604.png

产品截图:
QQ图片20170514083614.png

以上每个应用都是一组独立的容器组,企业可以根据需要随时删除、添加、关闭相应的应用。

IT架构
QQ图片20170514083627.png

如何利用容器技术实现企业免部署免维护

由于我们用户IT基础较差,而我们要产品化,必须解决不管是哪种云(私有云、公有云,混合云)必须是免部署,免维护,特别是在私有云上。因为我们是做的业务系统,企业的核心数据都在上面,因此很多企业选择数据放在本地。我们将几个核心容器设置为--restart=always,比如定时任务容器,base容器,健康检查容器,注册中心容器。同时利用健康检查来实现免维护。用户拿过去直接接上电源和网线,在局域网内下载客户端激活即可。

(题外话,我们为了解决企业恶劣环境,无机房、经常断电问题造成设备损坏,我们在第七代产品设备上采用全封闭式服务器,无风扇,解决大量静电灰尘问题,采用全铜导片将内部热量全部通过底部导出到外壳,外壳和内壳之间采用真空绝热,同时在设备前端安装小UPS提供20分钟以上电源供应,在刚才的定时容器上面提供网络监测,一旦网络断网,会过15分钟左右再次检测如果没有通就会执行自动关机,避免断电带来的硬件损坏。)

如何利用容器编排工具实现计算资源的随意扩展

在企业发展过程中,用户会越来越多,那么如何实现用户随意扩展?我们提供单独的设备,用户只需要在局域网内插上网线,便可以实现资源扩展,整个过程流程:添加的设备会以NODE节点注册到server端;接着会在节点起在原来设备里面压力较大的应用容器组并注册到网关上,网关通过流量来做相关流量分配。

如何利用容器实现业务的扩展?

比如我原来就是个贸易企业,现在我想开厂了,需要生产了,也就是原来是进销存那几个应用,现在需要加入生产几个应用,实际在系统内就是新起几组容器。微服务架构如下:

企业内部应用微服务架构是LINKSAME全新开发的框架,网关是采用的Nginx + Lua开发的。

企业内部应用--lote网关设计说明:
QQ图片20170514083642.png

Lote网关是企业内部应用的核心组件,主要负责2部分功能:第一,授权验证以及合法性验证,当用户通过用户名和密码进来后,除了在SDN网络上做了私有验证外,还提供了本地授权验证,是否为本企业用户,是否有权限进入到对应的应用,应用KEYNOTE是否合法;第二,引导合法请求到对应的微服务应用,具备一定的路由功能。Lote网关在企业下载应用时候还会验证应用是否合法,能否安装,保证企业数据的安全性与可靠性。

如何解决产品在各个行业或者企业可适应性的问题?

任何一个产品不可能去满足所有的行业,所有的用户,但大致业务是基本类似的,因此我们在单个应用上开发了一个相关企业单应用网关--mote网关设计说明:
QQ图片20170514083655.png

单个应用(比如CRM其实是无法一定满足一个企业的全部需求的,现在要修改其中某一部分业务逻辑)要修改某一部分业务逻辑来满足行业或者企业的需求,开发者或者用户只需要指定主应用(from keyapp:),通过我们指定的接口(by setp2 第二步流程『替换第二部流程』或者更细的修改 by setp 2.1『替换第二步流程里面的2.1小步流程』)便可以随意开发对应业务逻辑,无需了解和关注原应用本身背后的代码和数据,自己修改部分是个完全单独的应用,数据也是单独存储。PS:单应用不允许超过5个修正应用。

利用容器与IOT框架在物联网领域实践

QQ图片20170514083706.png

底层通信基于UDP,CoAP是IETF为constrained device制定的通信标准,包含了两层:Message和req/rsp,Message层定义了数据传输的格式,并且针对UDP传输的不可靠性,加入了安全传输的机制,req/rsp层为RESTful框架提供链路支撑。目前我们自己和相应合作伙伴开发了物联网门禁和打印机(注意不是互联网的),也兼容市面上机器手臂等制造型设备或者带物联网芯片设备。当然这个部分还有跟区块链的整合,主要是为了解决物联网里面的安全问题,有机会再跟大家做更详细的交流。

利用容器与MXNet实现AI人工智能在企业初始化和产品设计中的优化

用户在用软件的过程中一开始最大的障碍就是大量的初始化数据输入,比如组织结构、权限、行业数据(物料、产品),行业打印模板等等。我们一开始提供一些基础模板在云上,用户云上修改过程我们记录下来,通过收集大量的样板进行分析,最后通过程序给出一个最优模板数据和词汇,行业用户使用越多越接近行业标准。另外一个应用就是用户设计完产品后,我们提供一个产品云端评测,整个流程就是用户将产品提交后,AI会通过提交的一些信息跟我们云端AI库进行对比,通过维度来判断值,最后返回给用户一个产品竞争力表给用户提供参考,例如一件衣服,我们会从图片上抽取出一些维度(纹路,颜色),再从文本信息中提取一些信息,通过AI接口自动建立衣服的相关模型。

Q&A

Q:请问在容器和虚拟机之间访问网络有什么经验,通过Calico使跨主机之间容器互访,容器外的虚拟机如何访问容器,特别是在公有云环境下PaaS服务如何与容器之间进行访问?

A:我们现在公有云PaaS每个用户是一个虚拟机的方式,虚拟机内部的通讯采用的默认的网络方式Overlay,在不是大并发情况下这种问题并不明显。
Q:容器是否裸机部署、容器编排和调度工具?

A:我们私有云产品是裸机部署,容器编排和调度工具目前有版Kubernetes。
Q:请问你们的私有云建设主要用了什么软件?

A:私有云就是裸机+容器+编排工具+基础能力容器(比如消息、SDN等)。
Q:Auto Scaling是垂直的,还是水平的?

A:是水平扩展的,就是在另外设备里面重新启动一组容器,并且将数据库容器加入到ge节点中取。
Q:微服务注册,服务发现是怎么做到的?

A:微服务注册分成2部分:1. 微服务是否经过了云审核,是否能通过LOTE网关验证;2. 在内部是通过etcd一整套来实现的(健康检查)。
以上内容根据2017年5月2日晚微信群分享内容整理。分享人姚能伟,武汉邻盛在线科技有限公司创始人。10年企业级经验, 连续创业者, 技术爱好者, 架构师。 DockOne每周都会组织定向的技术分享,欢迎感兴趣的同学加微信:liyingjiesz,进群参与,您有想听的话题或者想分享的话题都可以给我们留言。

0 个评论

要回复文章请先登录注册