关于集群的自动化配置部署和更新方案

guo_ang 2016-04-11 07:37:50
先花些时间唠叨下我做的《XX行业生产云》的需求,然后结合着这些需求请教各位专家一系列的问题。

功能需求:
生产企业内部有局域网,连接办公环境和相关的生产设备,并且有连接互联网的出口。生产过程由办公环境(B/S架构)向局域网内的设备发送生产指令,生产的运行状态实时可以回显给办公环境。局域网内满足该需求就需要部署一个常规的Web应用服务站点加关系型数据库(目前尚不需要实时数据库)就可以完成。


多租户需求:
《XX行业生产云》提供“多租户”的模式,为XX行业各相关生产企业提供SaaS云服务。之所以采用“云”的形式,是因为这个行业内各工厂生产流程和业务逻辑基本类似,从技术角度来说可以用同一套代码逻辑和相同的数据库结构。

稳定性和实时性需求:
由于生产企业对数据和操作有一定的实时性要求,并且网络(运营商提供的互联网服务)短时间的中断不能影响生产进度,因此各工厂局域网内部需要部署一个服务器,为办公环境提供Web服务(B/S架构)并连接相关的生产设备。

运维需求:
使用这个服务的工厂有上百家,如果每个工厂都部署一台服务器并为厂区内提供相关的服务的话,这样运维这么多台服务器的难度和工作量很大。更何况系统建设初期服务版本升级(如代码补丁、数据库结构变化、安装软件等)会比较频繁,大量的服务器升级也会有很多的问题,如升级期间服务中断、升级失败造成版本不一致影响以后的升级、升级期间接口要同时支持两个版本等。

我的方案:
为了满足以上需求,我把生产云设计为“云+端”两部分。“云”提供对实时性要求不是很高的SaaS服务;“端”部署在每个工厂的局域网内提供对实时性要求较高的服务,对“云”进行扩展。形成一个“云”多个“端”的模式(这里的“端”和物联网中“端”的概念是有区别的)。每个工厂里的“端”都有着相同的逻辑代码和数据结构,不同的可能就只有IP地址、MAC地址以及数据库中的数据了。


部署方案如下:


问题来了:
1、 这种类似“云+端”的模式业界都怎么实现的?没有成熟的方案和案例?如果有的话我们可以考虑购买或合作。
2、 SaaS云的目的是为了抽取共性而集中提供服务、为了整合资源而集中管理,其部署一般是通过集群计算来实现的。而“端”又是分布式的方式,很接近于网格计算。集群计算与网格计算这两种模式共存是否矛盾?
3、 “端”是否可以使用CDN技术以降低其管理难度?
4、 “云”要对所有的“端”进行管理和控制,通过什么技术方式来实现?用Linux下的集群管理工具Puppet/Chef/Ansible/SaltStack/Cfengine?还是Zookeeper?还是Google的Borg?还是用现在比较流行的CoreOS?(一定要结合上面的需求)
5、 CoreOS既然是精简版的Linux,那么在其上安装软件和服务是否有限制?单个文件的更新是否高效便捷?
6、 如果“端”上安装CoreOS的话,其应用和数据库如何部署?主要考虑数据结构的升级以及不同“端”存储数据不同的问题。
7、 “云”和“端”之间需要数据同步(异步),有什么比较好的数据同步方案或产品支持?ETL工具,如开源的Kettle?还是MQ产品,如支持MQTT协议的?

请大神赐教!
...全文
979 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
业余草 2016-04-12
  • 打赏
  • 举报
回复
不懂帮顶
Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。虽说我们可以使用比如Kubeadm工具可以简化k8s集群部署,但这却对我们k8s的各个组件如何协同工作,及排错造成困扰。本套课程主要是以二进制的方式来一步步的安装k8s的集群,来加深我们对K8s集群进一步的理解。同时也可以作为我们生产部署的一种方式。知识讲解:   1.   概述了K8s的集群的一个整体架构。 2. 为了实现各个组件的通信,讲解了如何为各组件签发证书、配置kubeconfig、和产生加密的key及密钥。 3. Etcd键值存储集群部署。 4. K8s的主节点的三大组件一步步的部署。 5. K8s的worker节点的三大组件及flannel网络插件部署。 6. 部署kube coredns作为k8s内部的域名解析。注意:本课程学习需要具有一定的Linux基础,**是学习过K8s集群或者在使用K8S使用有一段时间的。这样可以更好的理解本套课程内容。

1,162

社区成员

发帖
与我相关
我的任务
社区描述
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux 机器上,也可以实现虚拟化。
社区管理员
  • Docker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧