我正在使用流浪汉设置服务器集群,并使用Redis哨兵和HAProxy进行Postgresql数据库连接(使用pgpool)。我很好奇是否在每个Web服务器节点上都放置了haproxy和redis sentinel并让它们直接连接到这些节点。这种想法是,它可以创建与DB和Redis的分布式连接,并将单个故障点减少到只有一个HAProxy可以连接到它们,然后拆分到不同的db节点。我还可以保持数据库连接(通过haproxy)和redis(通过sendinel)封装到本地主机。这有意义吗?

最佳答案

仅当您试图节省资源/成本时才有意义。

请注意,redis哨兵必须有一个有限的哨兵实例列表,这不适合在每台机器上放置一个哨兵实例的情况,因为您的缓存计数可能会缩放/更改。

否则,将不同的基础架构组件(尤其是具有集群/ HA特性的组件,例如redis)放在不同的机器上总是最有意义的。

通过将它们混合在一起,通常会导致应用程序互相干扰,并且一旦负载增加,就会相互窃取CPU。您还冒着将应用程序/脚本/流设计为位置敏感的风险(即假设外部资源始终位于本地),这也不是一个好习惯。

09-13 12:55