citus ha 参考部署方案
参考图
注意此版本比较适合citus 11.0 以及以上的(但是11.0 暂时还没ga)
集成说明
因为citus 的coordinator、worker 都支持基于流式复制的,我们基于patroni 保证节点的高可用(推荐使用同步复制),为了规避
业务使用的问题,我们可以基于haproxy + keepalived 解决vip 的问题,对于通过coordinator 添加的节点我们使用的worker 节点的
vip 地址,对于业务使用都是类似的方法(使用haproxy+pgbouncer)可以解决读写分离(对于业务可以基于支持读写分离的datasource )
对于新添加节点,方法是类似的,基于patroni解决ha 问题,同时我们基于citus 10.0 开源的动态reblance函数解决rebalance_table_shards
同时可以基于提供的get_rebalance_progress 观测balance 的情况
说明
以上推荐的版本是citus 11.0 (目前还没有ga),如果ga 之后以上方案就比较可靠了,对于citus >10.0 < 11.0 版本的haproxy 的流量只走
coordinator 节点
参考资料
https://www.citusdata.com/blog/2021/09/03/shard-rebalancing-in-citus-10-1/
https://www.pgbouncer.org/
https://www.citusdata.com/blog/2022/03/26/test-drive-citus-11-beta-for-postgres/