|
| 1 | +--- |
| 2 | +title: Regional Disaster Recovery |
| 3 | +date: 2024-09-20 |
| 4 | +tier: sandbox |
| 5 | +summary: This variant of the Validated Patterns framework deploys a Regional Disaster Recovery Setup across multiple different regions |
| 6 | +rh_products: |
| 7 | +- Red Hat OpenShift Container Platform |
| 8 | +industries: |
| 9 | +pattern_logo: regional-dr.png |
| 10 | +links: |
| 11 | + install: https://github.com/validatedpatterns/regional-resiliency-pattern |
| 12 | + help: https://groups.google.com/g/validatedpatterns |
| 13 | + bugs: https://github.com/validatedpatterns/regional-resiliency-pattern/issues |
| 14 | +--- |
| 15 | + |
| 16 | +# OpenShift Regional DR |
| 17 | + |
| 18 | +## Context |
| 19 | + |
| 20 | +As more and more institution and mission critical organizations are moving |
| 21 | +in the cloud, the possible impact of having a provider failure, might this be |
| 22 | +only related to only one region, is very high. |
| 23 | + |
| 24 | +This pattern is designed to prove the resiliency capabilities of Red Hat Openshift |
| 25 | +in such scenario. |
| 26 | + |
| 27 | +The Regional Disaster Recovery Pattern, is designed to setup an multiple instances |
| 28 | +of Openshift Container Platform cluster connectedbetween them to prove multi-region |
| 29 | +resiliency by maintaing the application running in the event of a regional failure. |
| 30 | + |
| 31 | +In this scenario we will be working in a Regional Disaster Recovery setup, and the |
| 32 | +synchronization parameters can be specified in the value file. |
| 33 | + |
| 34 | +NOTE: please consider using longer times if you have a large dataset or very long |
| 35 | +distances between the clusters |
| 36 | + |
| 37 | +## Background |
| 38 | + |
| 39 | +The _Regional DR Validated Pattern for [Red Hat OpenShift][ocp]_ increases the resiliency |
| 40 | +of your applications by connecting multiple clusters across different regions. This pattern |
| 41 | +uses [Red Hat Advanced Cluster Management][acm] to offer a |
| 42 | +[Red Hat OpenShift Data Foundation][odf]-based multi-region disaster recovery plan if an |
| 43 | +entire region fails. |
| 44 | + |
| 45 | +[Red Hat OpenShift Data Foundation][odf] offers two solutions for disaster |
| 46 | +recovery: [Metro DR][mdr] and [Regional DR][rdr]. As their name suggests, _Metro |
| 47 | +DR_ refers to a metropolitan area disasters, which occur when the disaster |
| 48 | +covers only a single area in a region (availability zone), and _Regional DR_ |
| 49 | +refers to when the entire region fails. Currently, only active-passive mode is |
| 50 | +supported. |
| 51 | + |
| 52 | +A word on synchronization. A metropolitan network generally offers less latency; |
| 53 | +data can be written to multiple targets simultaneously, a feature required for |
| 54 | +active-active DR designs. On the other hand, writing to multiple targets in a |
| 55 | +cross-regional network might introduce unbearable latency to data |
| 56 | +synchronization and our applications. Therefore, _Regional DR_ can only work |
| 57 | +with active-passive DR designs, where the targets are replicated |
| 58 | +asynchronously. |
| 59 | + |
| 60 | +The synchronization between Availability Zones is faster and can be performed |
| 61 | +synchronous. However, in order don't include a lot of latency on the data |
| 62 | +synchronization process, when data is replicated across regions, it necessary |
| 63 | +includes latencies based on the distance between both regions (e.g. The latency |
| 64 | +between two regions on Europe, will always be less than between Europe and Asia, |
| 65 | +so consider this when designing your infrastructure deployment on the values |
| 66 | +files of the pattern). This is the main reason because this RegionalDR is |
| 67 | +configured in an Active-Passive mode. |
| 68 | + |
| 69 | +It requires an already existing Openshift cluster, which will be used for installing the |
| 70 | +pattern, deploying active and passive clusters manage the application |
| 71 | +scheduling. |
| 72 | + |
| 73 | +### Prerequisites |
| 74 | + |
| 75 | +Installing this pattern requires: |
| 76 | +* One online [Red Hat OpenShift][ocp] cluster to become the "Manager" cluster. |
| 77 | +This cluster will orchestrate application deployments and data synchronizations. |
| 78 | +* Connection to a Cloud Provider (AWS/Azure/GCP) configured in the Manager |
| 79 | +cluster. This is required for deploying the active and passive [OCP][ocp] |
| 80 | +clusters. |
| 81 | +* [Red Hat OpenShift CLI][cli] installed |
| 82 | + |
| 83 | +### Solution elements |
| 84 | + |
| 85 | +The _Regional DR Pattern_ leverages [Red Hat OpenShift Data Foundation][odf]'s |
| 86 | +[Regional DR][rdr] solution, automating applications failover between |
| 87 | +[Red Had Advanced Cluster Management][acm] managed clusters in different regions. |
| 88 | + |
| 89 | +- The pattern is kick-started by ansible and uses ACM to overlook and orchestrate the process |
| 90 | +- The demo application uses MongoDB writing its data on a Persistent Volume Claim backe by ODF |
| 91 | +- We have developed a DR trigger which will be used to start the DR process |
| 92 | +- The end user needs to configure which PV's need synchronization and the latencies |
| 93 | +- ACS Can be used for eventual policies |
| 94 | +- The clusters are connected by submariner and, to have a faster recovery time, we suggest having |
| 95 | + hybernated clusters ready to be used |
| 96 | + |
| 97 | +### Red Hat Technologies |
| 98 | +- [Red Hat Openshift Container Platform][ocp] |
| 99 | +- [Red Hat Openshift Data Foundation][odf] |
| 100 | +- [Red Hat Openshift GitOps][ops] |
| 101 | +- [Red Hat Openshift Advanced Cluster Management][acm] |
| 102 | +- [Red Hat Openshift Advanced Cluster Security][acs] |
| 103 | + |
| 104 | +## Operators and Technologies this Pattern Uses |
| 105 | +- [Regional DR Trigger Operator][opr] |
| 106 | +- [Submariner][sub] |
| 107 | + |
| 108 | +## Tested on |
| 109 | + |
| 110 | +- Red Hat Openshift Container Platform v4.13 |
| 111 | +- Red Hat Openshift Container Platform v4.14 |
| 112 | +- Red Hat Openshift Container Platform v4.15 |
| 113 | + |
| 114 | +## Architecture |
| 115 | +This section explains the architecture deployed by this Pattern and its Logical |
| 116 | +and Physical perspectives. |
| 117 | + |
| 118 | + |
| 119 | +## Logical architecture |
| 120 | + |
| 121 | + |
| 122 | + |
| 123 | + |
| 124 | +## Installation |
| 125 | +This patterns is designed to be installed in an Openshift cluster which will |
| 126 | +work as the orchestrator for the other clusters involved. The Adanced Cluster Manager |
| 127 | +installed will neither run the applications nor store any data from them, but it |
| 128 | +will take care of the plumbing of the various clusters involved, |
| 129 | +coordinating their communication and orchestrating when and where an application is |
| 130 | +going to be deployed. |
| 131 | + |
| 132 | +As part of the pattern configuration, the administrator needs to define both |
| 133 | +clusters installation details as would be done using the Openshift-installer |
| 134 | +binary. |
| 135 | + |
| 136 | +For installing the pattern, follow the next steps: |
| 137 | +1. Fork the _Pattern_. |
| 138 | +2. Describe the instructions for creating the clusters and syncing data between them. |
| 139 | +3. Commit and push your changes (to your fork). |
| 140 | +4. Set your **secret** cloud provider credentials. |
| 141 | +5. Connect to your target _Hub_ cluster. |
| 142 | +6. Install the _Pattern_. |
| 143 | +7. Start deploying [resilient applications][rdr]. |
| 144 | + |
| 145 | + |
| 146 | +### Pattern Configuration |
| 147 | + |
| 148 | +For a full example, check the _Pattern_'s [values.yaml][yml]. The install-config |
| 149 | +specifications are detailed [here][cfg]. |
| 150 | + |
| 151 | +Detailed configuration instructions can be found [here][rrp]. |
| 152 | + |
| 153 | + |
| 154 | +## Owners |
| 155 | + |
| 156 | +For any request, bug report or comment about this pattern, please forward it to: |
| 157 | +* Alejandro Villegas ( [email protected]) |
| 158 | +* Tomer Figenblat ( [email protected]) |
| 159 | + |
| 160 | +<!-- LINKS --> |
| 161 | +[acm]: https://www.redhat.com/en/technologies/management/advanced-cluster-management |
| 162 | +[acs]: https://www.redhat.com/en/technologies/cloud-computing/openshift/advanced-cluster-security-kubernetes |
| 163 | +[aws]: https://www.redhat.com/en/technologies/cloud-computing/openshift/aws |
| 164 | +[azr]: https://www.redhat.com/en/technologies/cloud-computing/openshift/azure |
| 165 | +[cfg]: https://docs.openshift.com/container-platform/4.17/installing/installing_bare_metal_ipi/ipi-install-installation-workflow.html#additional-resources_config |
| 166 | +[cli]: https://docs.openshift.com/container-platform/4.14/cli_reference/openshift_cli/getting-started-cli.html |
| 167 | +[gcp]: https://www.redhat.com/en/blog/red-hat-openshift-is-now-available-on-google-cloud-marketplace |
| 168 | +[mdr]: https://docs.redhat.com/en/documentation/red_hat_openshift_data_foundation/4.16/html/configuring_openshift_data_foundation_disaster_recovery_for_openshift_workloads/metro-dr-solution |
| 169 | +[ocp]: https://www.redhat.com/en/technologies/cloud-computing/openshift |
| 170 | +[odf]: https://www.redhat.com/en/technologies/cloud-computing/openshift-data-foundation |
| 171 | +[ops]: https://www.redhat.com/en/technologies/cloud-computing/openshift/gitops |
| 172 | +[opr]: https://github.com/RHEcosystemAppEng/regional-dr-trigger-operator |
| 173 | +[sub]: https://submariner.io/ |
| 174 | +[rdr]: https://docs.redhat.com/en/documentation/red_hat_openshift_data_foundation/4.16/html/configuring_openshift_data_foundation_disaster_recovery_for_openshift_workloads/rdr-solution |
| 175 | +[rrp]: https://github.com/validatedpatterns/regional-resiliency-pattern?tab=readme-ov-file#installation |
| 176 | +[yml]: https://github.com/validatedpatterns/regional-resiliency-pattern/blob/main/charts/hub/rdr/values.yaml |
0 commit comments