I’ve actually been investigating Postgres cluster configurations the past 2 weeks at work (though we’re considering CloudNativePG+Kubernetes on 3 nodes spanning two physical locations).
One thing I might recommend is to investigate adding a proxy like PgBouncer in front of the databases. This will manage request differences where write-queries must go to the primary, but read-queries may go to any of the replicas as well.
It should also better handle the recycling of short-lived and orphaned connections, which may become more of a concern on your stage 3, and especially on some stage 4.
Carmy: “Cooking is not fun for me.”
Richie: “Yeah, but you love it.”
Carmy: “That doesn’t mean it’s fun.”
Richie: “If this shit is not fun for you, Cousin,what the fuck is fun for you?”
– The Bear, S2 E1