我想建立一个生产 HA Docker Swarm 集群。
Docker Swarm 需要一个键值存储作为先决条件,在本例中是 consul。
现在我问的是巧妙的设置将会:
- Consul 应该在 Docker 容器中运行
- Consul 必须是 HA 且可自动扩展
- Consul 容器应该用 Docker Swarm 来管理(但这需要运行 consul)
约束
- 在主机上运行 consul 不是一个选项
- 手动管理 consul 容器不是一个选择
- 带有 Docker Hub 令牌的 Docker Swarm 不是一个选项
方法
有什么想法可以以干净可靠的方式解决这个先有鸡还是先有蛋的问题,以实现高效运行?
多个 Swarm 实例看起来确实是一种合理的方法,但是如何在没有 consul 和 Swarm 的情况下设置初始 Swarm?谢谢。
答案1
Jacob Blain Christen 有一个不错的文章关于这个问题。简而言之:启动docker守护进程并引用尚不存在的consul集群,然后通过docker启动consul。引用:
幸运的是,Docker 守护进程会很乐意时不时地重试连接集群存储(又名 KVS),这使我们有时间通过 Docker Compose 对其进行底层处理。
希望这可以帮助。