HAProxy拆分读/写postgresql
我使用postgresql作为数据库。我有一个主/从流式复制。我想使用HAProxy进行负载平衡。我想将写操作发送给主机,将读操作发送给从机。我能用haproxy做这个吗?不,你不能。HAProxy不理解PostgreSQL协议,所以它不知道什么是“读”或“写”HAProxy拆分读/写postgresql,postgresql,file-io,split,load-balancing,haproxy,Postgresql,File Io,Split,Load Balancing,Haproxy,我使用postgresql作为数据库。我有一个主/从流式复制。我想使用HAProxy进行负载平衡。我想将写操作发送给主机,将读操作发送给从机。我能用haproxy做这个吗?不,你不能。HAProxy不理解PostgreSQL协议,所以它不知道什么是“读”或“写” 看看PgPool II,它可以在有限的范围内做到这一点。在实践中,通常最好配置应用程序,以便它知道如何将其只读查询路由到不同的服务器(如果可能)。我们通过定义一个前端用于读取,另一个用于写入,每个前端监听不同的端口,并将它们路由到后端,
看看PgPool II,它可以在有限的范围内做到这一点。在实践中,通常最好配置应用程序,以便它知道如何将其只读查询路由到不同的服务器(如果可能)。我们通过定义一个前端用于读取,另一个用于写入,每个前端监听不同的端口,并将它们路由到后端,在后端组织数据库集群 HAProxy配置示例:
frontend writes
bind *:5439
default_backend writes_db
frontend reads
bind *:5438
default_backend reads_db
backend writes_db
option pgsql-check user haproxy
server master_db ip.for.my.db:5432 check
backend reads_db
balance roundrobin
option pgsql-check user haproxy
server master_db ip.for.my.db:5432 check weight 30
server master_db ip.for.my.db:5432 check weight 70
在本例中,我们使用Django,因此需要定义路由器
和设置。数据库
因此所有写入操作都在HAProxy服务器(5438)的一个端口上完成,所有读取操作都在另一个端口(5439)上完成