如何解决是否可以使用 Docker Swarm 在不同节点上运行不同数量的副本?
我在 2 个节点(1 = 管理器和 1 = 工作器)上运行 Docker Swarm。
我有以下服务:
- PHP-FPM
- Redis
- Nginx 网络服务器
- MariaDB
我正在运行一个 Laravel 应用程序,由于许多队列工作器(Laravel Horizon),该应用程序在后台进行了相当多的处理。效果很好。
但我想要的是例如在节点 2 (host2) 上运行 2 个 PHP-FPM 副本,而在节点 1 (host1) 上仅运行 1 个副本。所以总共有 3 个副本。
当我简单地更改 replicas: 3
时,第三个副本可能出现在节点 1 或 节点 2 上。
但是由于资源的原因,我不想在 node1 上再有任何 PHP-FPM 副本,因为那里已经有我的数据库、Redis 和网络服务器在运行。
目前我有 2 个副本分布在我的 2 个节点上。
deploy:
mode: replicated # "global": exactly one container per swarm node; "replicated": a specified number of containers
replicas: 2
placement:
# max_replicas_per_node: 1
# constraints:
# - node.hostname == small-websites-3
# - node.role == manager
preferences:
- spread: node.hostname == host1
- spread: node.hostname == host2
正如你在上面的 docker-compose.yml 配置中看到的,我已经注释掉了放置约束,因为它们没有达到我想要的效果。
所以是的,我希望有一种方法可以在副本数为奇数的情况下为每个节点指定不同数量的副本,因为我相信 Docker Swarm 在我有偶数时可以完美地管理它(即 4 个副本会去:2x on节点 1 和节点 2 上的 2x)。
我希望这是有道理的并且是可能的(无需升级我的 node1 并使用偶数数量的副本)?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。