The business has a requirement for datasource failover; the backend database servers are active-active. The kink is that they want half the servers to use server "A" as the primary, and for half the servers to use "B" as the primary. My first impulse is to create two identical clusters, and to define the datasources at the cluster scope. That way, cluster 1 has "A" as primary and "B" as failover, and cluster 2's datasource is the other way around. Since they're scoped at cluster level, we can use the same JNDI reference for the datasource, "jdbc/fooDS." The application would then be mapped to both clusters.
I haven't deployed to two clusters before. Does this present problems that aren't readily apparent - classloading, or unexpected plugin behaviors? There's no requirement for session persistence, though the JSESSIONID's needed. Has anyone else here encountered this use case?
I wonder if the better option is to stick with one cluster and define the datasources at the node scope; it's not as quick to configure and maintain as a cluster-scoped datasource, but it ought to work okay.