我目前正在修改使用CoreOS的场景。这可能不是第一类用例。但是我想得到一个指针,如果它是有效的。当我真正开始掌握CoreOS的时候,我希望我的“用例”不会完全消失。
假设有一个多租户应用程序,每个租户都应该获得它自己的运行时环境。让我们以一个运行在Node.js和PostgreSQL上的web应用程序作为数据存储的例子。每个租户环境都将在各自容器中的CoreOS上运行。目前还没有数据支持。对我来说,目前更多的是关于总体可行性的。
那为什么是CoreOS?
目前,我试图坚持每个租户都要隔离环境的想法。为了优化每个硬件主机的DB和web服务器实例的密度,我认为CoreOS可能是正确的选择,而不是“经典的”虚拟化。
另一个原因是,许多租户可能只需要一个小型DB实例和一个小型web服务器。但可能还有其他租户需要不断扩大部署。其他人可能需要在爆发期暂时扩大规模。CoreOS听起来也很适合这里。
另一方面,后面必须有一个可伸缩的消息传递基础设施(RabbitMQ),它将处理大量消息。这个基础设施将被所有租户使用,并且需要在最好的情况下动态地进行可伸缩。可能还会有一个“有待扩展”的Elasticsearch基础设施。通过我目前的"CoreOS为一切护目镜“,这似乎也是一个很好的适合。
如果整个场景都是有效的,我目前还不知道如何将通用网站的流量路由到不同的租户容器。
想象一下,该应用程序正在app.greatthing.tld运行。用户可以登录,并且应该为它的租户提供应用程序。这是套接式飞机和/或法兰绒需要解决的问题吗?或者解决方案是如何让租户得到正确的容器服务的呢?我觉得这是个普遍的问题。但是,至少在CoreOS容器化环境中,我根本看不出如何处理这个问题。
发布于 2015-08-31 23:36:33
听起来你的主要问题是路由。您需要配置某种类型的路由层,即集群的入口点,读取主机头并将流量转发到适当的容器(S)。一种常见的方法是在容器中运行confd + nginx。
第二部分是让后端容器“宣布”自己,也就是当后端容器处于活动状态并通过健康检查时,在etcd中写入一些数据。这允许您在部署新版本、扩展等时在后端移动。
那你是怎么部署这个的?首先,查看集群体系结构文档。我会把你的机器的一个子集放在一个云LB (或做循环DNS)后面,它指向在80/443上运行的路由容器。然后将通信量转发到适当的后端。
如果您只是存储要连接的后端的IP/端口组合,则不需要使用法兰绒或其他网络项目。
https://serverfault.com/questions/716405
复制相似问题