我目前有一个由 2 台服务器组成的 Postgres 集群。它们由 Patroni 管理,ETCD 作为我的 DCS。我希望能够将读取请求重定向到副本,将写入请求重定向到主服务器。我读到 PGPOOL II 可以做到这一点,但这看起来与 Patroni 的工作相同,所以想知道是否有其他替代方案?
答案1
我使用 PGPool II 来做这件事,效果很好。你必须有某种中间件,能够查看 SQL 并确定它是否是读取请求,然后进行路由。这就是 Patroni 和 PGPool 不同的地方。
我知道的唯一其他选择是更改您的应用程序,以便您拥有用于写入和读取的单独数据库。然后,您可以将写入配置为发送到主服务器,将读取配置为发送到从服务器。
顺便说一句,Patroni 似乎确实想要拥有三台服务器,因为它使用 RAFT,而你必须拥有奇数台服务器才能可靠地避免裂脑问题。如果你只有两台服务器,PGPool 可能是一个更好的选择。