I'm looking at Peer-to-Peer Transactional Replication and it looks like a perfect fit for my requirements, but there's one unclear part - load balancing (see picture below).
How it is implemented in SQL Server? Is it programmable? Or it's something that I should implement myself? If so, what's the best way of doing that?
My business rules are:
- Server A and Server B are in different geographical locations.
- Data is replicated between both servers constantly.
- If Server A becomes unavailable, its users requests are redirected to Server B. Some data loss is acceptable in this case.
- If user performed some writes on Server A - he must keep using Server A (with only one exception, when Server A becomes unavailable). The user can't perform some writes on Server A and some writes on Server B. But he may perform reads from both servers.
Both servers uses MS SQL Server 2012 Enterprise.
AlwaysOn Availability Groups and SQL Server Cluster for some reasons is not an option for me.