我刚开始学习群。我对集群使用场景有一些疑问。
如果我有一个简单的Web服务器,可以响应一些轻松的HTTP请求,则选择“warm”似乎是一个不错的选择,因为如果我需要水平扩展Web服务器,则只需要使用docker service scale
,并且swarm会为我做负载平衡。
但是,具有自己的群集机制(Redis, flex 搜索)的服务又如何呢?我不能简单地通过docker
服务规模来扩展容量。
例如,我有一个Redis服务,如果我docker service scale redis=2
,则生成两个单独的Redis服务。这显然不是我所需要的。
这些服务是否适合群体模式?如果可以,如何在群体模式下配置这些服务?以及如何扩展呢?
最佳答案
有状态服务(例如Redis,RabbitMQ等)适合群体模式。
但是,您有责任通过一些预部署/后部署脚本或在镜像入口点中手动配置集群。
无论以下原因如何,这样的重新配置也应在每个副本重新启动后运行:无论原因为何:单个副本失败和随后的重新启动,所有服务副本的重新启动,新副本的扩展。
在群集解决方案之间,此类脚本/步骤的内容可能有所不同,应引用每个解决方案的相关文档。这可能与将副本虚拟ip放入配置文件或复杂的有序步骤一样简单。
适合所有解决方案的一般用例是:首次在服务副本中配置群集,在故障后将单个副本连接回群集,在故障/有效重启后重新启动所有副本。
一些github项目尝试使过程自动化。例如mariadb-cluster
关于docker - 具有自己的集群机制的服务是否适合群,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60199969/