Docker容器上的分布式系统NSQ拓扑模式

时间:2013-12-02 10:49:06

标签: deployment go docker lxc nsq

是否可以使用Topology Patterns复制“Docker”的最后一个示例中描述的“NSQ实时分布式消息传递平台”?有人有dockerfile或图像示例吗?

1 个答案:

答案 0 :(得分:2)

在我等待一些后台任务完成的时候,我会对此采取行动。

@Luca G. Soave提到的分布式消息传递平台可以在这里看到: source: www.nsq.io/deployment/topology_patterns.html

我认为这个问题从根本上讲是一个致命的问题:对Docker容器的误解。

出于讨论的目的,让我们假设Docker容器只是虚拟机的不同名称。问题是"分布式系统可以用虚拟机构建吗?"不太合适,因为它只是配置,抽象和协调的问题。

可以在Docker容器或虚拟机中自包含每个联系点/职责(节点)来重新创建上图。即:

  • 每个API / nsqd节点都在自己的容器中
  • 每个nsq_to_file节点都在自己的容器中
  • 每个nsqlookupd节点都在自己的容器中

根据您设置Docker镜像的方式,您可以通过多种方式实现此分布式(多主机)版本。一些想法是:

  • 将容器内部端口映射到同一主机端口,并将节点配置为将自己作为主机ip广播,这样当其他节点连接到它们时,它们就会锁定到主机上#39 ; s端口映射到容器的外部ip;因此直接连接到容器。

  • 使用consul之类的服务发现包替换nsqlookupd以添加其他元数据。如果您正在运行许多容器,每个容器内部绑定到同一个端口(例如端口9090),但允许主机上的docker进程管理随机外部端口映射,这将非常有用。

由于这与Docker有关,最近在主机上向相关容器广播信息方面取得了一些进展;这将是使用nsqlookupd容器的信息为api / nsqd容器播种的一种方法。

我在使用MaestroNG进行小型部署方面取得了成功,但对于大规模的docker部署来说,它绝对不是一个很好的解决方案。