利用 Docker Swarm 编排分布式解决方案
1. 全局服务
全局服务是复制服务的一种替代方案。在某些情况下,你可能希望在集群的每个节点上运行相同的服务,每个服务器上作为单个容器运行。要实现这一点,你可以以全局模式运行服务,Docker 会在每个节点上调度一个任务,任何新加入的节点也会有一个任务被调度。
全局服务对于许多服务使用的组件的高可用性很有用,但仅运行多个实例并不能得到一个集群化的应用程序。例如,nats 消息队列可以跨多个服务器作为集群运行,它可以作为全局服务的一个很好的候选者。不过,要使 nats 作为集群运行,每个实例需要知道其他实例的地址,而这与 Docker 引擎分配的动态虚拟 IP 地址不太兼容。
可以将 Elasticsearch 消息处理程序作为全局服务运行,这样每个节点都会运行一个消息处理程序实例。由于不能更改正在运行的服务的模式,所以首先需要删除原服务:
> docker service rm nerd-dinner-index-handler
nerd-dinner-index-handler
然后,创建一个新的全局服务:
docker service create \
--mode=global \
--detach=true \
--network nd-swarm --endpoint-mode dnsrr \
--env ELASTICSEARCH_URL=http://elasticsearch:9200 \
--env MESSAGE
超级会员免费看
订阅专栏 解锁全文

60

被折叠的 条评论
为什么被折叠?



