我们打算运行多个组件来运行一个网站。比如一个负载平衡器、一个缓存和几个 Web 服务器。为了避免单点故障,我们打算使用 Heartbeat/Corosync/Pacemaker,而不是一个负载平衡器,而是运行其中两个。现在我们有不同的设置选择,我想听听你的意见,哪一个效果更好:
在不同的集群中运行成对的服务器。例如“loadbalancer1”和“loadbalancer2”。这样,如果其中一台服务器发生故障,我们就不会只有两台服务器来达到法定人数。不过,我们可以关闭法定人数功能,但可能会出现裂脑情况。这听起来并不完美,但配置清晰简单,可能就可以正常工作。
在不同的集群中运行三组服务器。例如“loadbalancer1”和“loadbalancer2”以及“loadbalancer-quorum”。这样我们就有了一个额外的服务器,它本来什么也不做,但至少在发生故障时我们可以达到法定人数。
在单个集群中运行所有服务器。这样,集群将由“loadbalancer1”、“loadbalancer2”、“cache1”和“cache2”组成。然后我们可以使用约束来确保负载平衡软件仅在“loadbalancer1”或“loadbalancer2”上运行,而缓存软件仅在“cache1”或“cache2”上运行。我可以想象这会让人感到困惑。但我们有足够的服务器来始终达到法定人数。
您有过这样的经历吗?我们应该怎么做?
答案1
这主要是个人喜好,但我建议 3 个:
- 避免双节点群集中的仲裁问题
- 你不需要第三个节点在那里无所事事
- Pacemaker 可以让你轻松完成这件事 :-)