基于容器的通服物联-物联网服务平台部署架构

信息化观察网
信息化观察网
容器技术(Docker)的发展使得平台级系统具有更强的生命力,更灵活的扩展性。然而在实际使用容器平台时还是会遇到不少优化的地方,需要根据情况进行重新构架,才能使得容器技术得到充分的利用。

容器技术(Docker)的发展使得平台级系统具有更强的生命力,更灵活的扩展性。然而在实际使用容器平台时还是会遇到不少优化的地方,需要根据情况进行重新构架,才能使得容器技术得到充分的利用。我们在通服物联-物联网服务平台部署方面做了以下几个方面的优化:

一.数据库、中间件等持久化集群模式的实现

数据库等服务一方面需要保持数据的持久性,不会因为容器的重建而导致数据的丢失;另一方面需要保证高可用性而采用集群模式。一般的容器是状态无关性的,但容器平台提供了一种StatefulSet模式,它可以保持集群中容器每次启动时一直挂上和容器编号一致的云盘,从而保证数据的持久化。因为容器实例每次建立都会分配新的ip,所以对于应用访问来说不能直接使用ip地址。但容器平台提供了一种Headless模式的服务,它可以为每个容器实例提供一个和容器编号一致的域名,保证通过同一个域名每次都可以访问到集群中的指定的那个容器实例,因此应用可以采用域名访问进行访问。对于多主集群的容器服务可以通过统一服务(Service)进行负载均衡供客户端访问:

通服物联-物联网服务平台各类服务客户端访问的模式如下:

多主模式可以通过service负载均衡到任意一个容器实例上。

二.Java应用/微服务共用java镜像

常规的java应用部署模式是:从代码仓库中拉取代码编译并构建相应的镜像,或者上传jar来构建相应镜像。这种模式每个项目都会创建一个对应的容器镜像,一个方面它的构建时间过长,新的宿主节点都会重新拉取镜像,发布周期长,另一方面不同的项目构建不同镜像,在镜像仓库中的存储消耗较大。

为了简化发布,缩短发布周期,通服物联-物联网服务平台对java应用的发布进行如下优化:

统一构建了一个java镜像,它同时集成了中文支持、应用监控等统一的附加功能,应用的更新不再需要java镜像的重新构建。我们定义“java应用”和“java微服务”2种组件模版。Java应用需要暴露服务到外部,java微服务不需要暴露出去。

通服物联-物联网服务平台java应用部署过程如下:

1.首先将打包好的jar包上传到统一的部署服务器;

2.然后在容器管理平台的编排发布中选择“java应用”/“java微服务”来进行发布,其中指定要发布的jar名;

3.容器启动时,自动根据传入的jar包名从部署服务器下载,然后启动java服务。

4.后续更新java应用时,只需要上传jar,然后在对应java应用上点击一下“部署”即可。

Java应用容器可以设置自动伸缩,根据实际资源消耗情况来扩展或者减少容器数量。

三.Web应用集群通过nfs共享

为了简化发布,Web应用集群采用共享文件系统的方式来保证集群一次性发布。由于通福云不支持多容器的云盘共享,因此通服物联-物联网服务平台搭建了一个单独的nfs文件服务容器来实现web应用集群间的web文件共享:

部署服务容器挂载nfs文件服务器上共享的文件系统/html。Web应用容器挂载nfs文件服务器上共享的文件系统/html。

Web应用部署过程:

1.将打包好的web文件上传到部署服务器上;

2.在部署服务器上将web文件包解压到/html路径下即可,web文件更新不需要重启web容器立即生效。

以上是通服物联-物联网服务平台基于容器部署方面的实践,希望能够给大家带来启发。欢迎大家积极讨论,分享经验。

作者介绍

袁刚:架构师,就职于中通服创立科技信息有限责任公司。长期从事系统架构设计、技术咨询。曾就职于中国惠普公司,担任解决方案架构设计顾问。

联系方式:QQ/微信:12998295

THEEND

最新评论(评论仅代表用户观点)

更多
暂无评论