【发布时间】:2019-01-04 04:07:12
【问题描述】:
所以这是一个或多或少的理论问题。
假设我们有一个由 3 个节点组成的多节点 Swarm 设置。现在我们已经安装了一个 Python 服务,它使用 Celery 和 Redis 作为消息代理。所以基本上还有一个 3 节点副本 redis 服务作为应用程序的一部分。
现在,既然这个 Redis 服务充当消息代理,如果我们只使用服务名称在我的 Python 应用程序中进行 DNS 解析,那么 docker swarm 或我的应用程序如何知道哪个 redis 节点将拥有我放置的任务队列 ?
我的意思是路由网格只会将流量引导到具有该服务的任何一个节点上的特定服务。现在我的 Python 应用程序已经异步启动了一个任务,并将其放在 redis 队列中。因此,一旦完成,我希望我的应用程序查询 redis 以获取结果。但是它怎么知道哪个节点有结果呢。
这有点像粘性会话吗?如果有什么不清楚的地方请告诉我。
【问题讨论】:
-
三个redis节点是否集群?
-
是的,就像我们使用 Docker swarm 一样,我们创建了一个 3 节点 swarm 集群,然后我们运行了 redis 服务,比如说 2 个副本
标签: redis celery docker-swarm