我正在使用Smart Stack(来自airbnb)和Docker来构建分布式服务云的概念验证项目。
我有3项服务:
前端应用程序显然使用其他两种服务。
我计划使用docker部署所有3个,并使用smartstack使分布式服务发现动态化。
据我了解Docker,使用它的最佳方法(如果不是唯一的方法)是每个容器只运行一个进程。
Smart Stack是在主服务运行的同一台机器上构建3个辅助进程(神经,突触,haproxy)。
所以,这就是我的问题:完全使用Docker和Smart Stack是否有意义?如果是这样,人们如何做到这一点?一个Docker容器上有4个进程?
这种架构的最佳设计模式是什么?
答案 0 :(得分:1)
据我了解架构,内部容器(LXC或码头)你只需要神经。神经是一个注册守护进程。它独立于您的服务或应用程序工作,只需告知Service Discovery在哪个端口上运行它。
取决于您选择哪种服务发现,您需要不同的架构
*动物园管理员 - 避免分裂大脑 - 奇数个服务器n * 2 + 1像3来获得法定人数
* Serf - 分布式且高效的一个
* etcd以及更多
看看这个:
http://www.activestate.com/blog/2014/05/service-discovery-solutions
然后在最后你需要与HAProxy进行突触(将它们放在一起,可以在一个单独的主机上) Synapse从Zookeeper / Serf获取信息如何服务 并为HAproxy生成动态配置。
如果您使用Serf,则需要使用不同的分支 (https://github.com/getyourguide/synapse/tree/serf)
您也可以尝试此项目:http://gilliam.github.io/ 它会给你最后一片你的云 部署和管理(检查此项目的调度程序)