<#import "/templates/guide.adoc" as tmpl> <#import "/templates/links.adoc" as links> <@tmpl.guide title="Building blocks multi-site deployments" summary="Overview of building blocks, alternatives and not considered options" > The following building blocks are needed to set up a multi-site deployment with synchronous replication. The building blocks link to a blueprint with an example configuration. They are listed in the order in which they need to be installed. include::partials/blueprint-disclaimer.adoc[] == Prerequisites * Understanding the concepts laid out in the <@links.ha id="concepts-multi-site"/> {section}. == Two sites with low-latency connection Ensures that synchronous replication is available for both the database and the external {jdgserver_name}. *Suggested setup:* Two AWS Availability Zones within the same AWS Region. *Not considered:* Two regions on the same or different continents, as it would increase the latency and the likelihood of network failures. Synchronous replication of databases as a services with Aurora Regional Deployments on AWS is only available within the same region. == Environment for {project_name} and {jdgserver_name} Ensures that the instances are deployed and restarted as needed. *Suggested setup:* Red Hat OpenShift Service on AWS (ROSA) deployed in each availability zone. *Not considered:* A stretched ROSA cluster which spans multiple availability zones, as this could be a single point of failure if misconfigured. == Database A synchronously replicated database across two sites. *Blueprint:* <@links.ha id="deploy-aurora-multi-az"/>. == {jdgserver_name} A deployment of {jdgserver_name} that leverages the {jdgserver_name}'s Cross-DC functionality. *Blueprint:* <@links.ha id="deploy-infinispan-kubernetes-crossdc" /> using the {jdgserver_name} Operator, and connect the two sites using {jdgserver_name}'s Gossip Router. *Not considered:* Direct interconnections between the Kubernetes clusters on the network layer. It might be considered in the future. == {project_name} A clustered deployment of {project_name} in each site, connected to an external {jdgserver_name}. *Blueprint:* <@links.ha id="deploy-keycloak-kubernetes" /> that includes connecting to the Aurora database and the {jdgserver_name} server. == Load balancer A load balancer which checks the `/lb-check` URL of the {project_name} deployment in each site, plus an automation to detect {jdgserver_name} connectivity problems between the two sites. *Blueprint:* <@links.ha id="deploy-aws-accelerator-loadbalancer"/> together with <@links.ha id="deploy-aws-accelerator-fencing-lambda"/>.