Deploying Advanced Cluster Management and OpenShift Data Foundation for ARO Disaster Recovery
This content is authored by Red Hat experts, but has not yet been tested on every supported configuration.
A guide to deploying Advanced Cluster Management (ACM) and OpenShift Data Foundation (ODF) for Azure Red hat OpenShift (ARO) Disaster Recovery
Overview
VolSync is not supported for ARO in ACM: https://access.redhat.com/articles/7006295 so if you run into issues and file a support ticket, you will receive the information that ARO is not supported.
In today’s fast-paced and data-driven world, ensuring the resilience and availability of your applications and data has never been more critical. The unexpected can happen at any moment, and the ability to recover quickly and efficiently is paramount. That’s where OpenShift Advanced Cluster Management (ACM) and OpenShift Data Foundation (ODF) come into play. In this guide, we will explore the deployment of ACM and ODF for disaster recovery (DR) purposes, empowering you to safeguard your applications and data across multiple clusters.
Sample Architecture
Download a
Visio file
of this architecture
Hub Cluster (East US Region):
- This is the central control and management cluster of your multi-cluster environment.
- It hosts Red Hat Advanced Cluster Management (ACM), which is a powerful tool for managing and orchestrating multiple OpenShift clusters.
- Within the Hub Cluster, you have MultiClusterHub, which is a component of ACM that facilitates the management of multiple OpenShift clusters from a single control point.
- Additionally, you have OpenShift Data Foundation (ODF) Multicluster Orchestrator in the Hub Cluster. ODF provides data storage, management, and services across clusters.
- The Hub Cluster shares the same Virtual Network (VNET) with the Primary Cluster, but they use different subnets within that VNET.
- VNET peering is established between the Hub Cluster’s VNET and the Secondary Cluster’s dedicated VNET in the Central US region. This allows communication between the clusters.
Primary Cluster (East US Region):
- This cluster serves as the primary application deployment cluster.
- It has the Submariner Add-On, which is a component that enables network connectivity and service discovery between clusters.
- ODF is also deployed in the Primary Cluster, providing storage and data services to applications running in this cluster.
- By using Submariner and ODF in the Primary Cluster, you enhance the availability and data management capabilities of your applications.
Secondary Cluster (Central US Region):
- This cluster functions as a secondary or backup cluster for disaster recovery (DR) purposes.
- Similar to the Primary Cluster, it has the Submariner Add-On to establish network connectivity.
- ODF is deployed here as well, ensuring that data can be replicated and managed across clusters.
- The Secondary Cluster resides in its own dedicated VNET in the Central US region.
In summary, this multi-cluster topology is designed for high availability and disaster recovery. The Hub Cluster with ACM and ODF Multicluster Orchestrator serves as the central control point for managing and orchestrating the Primary and Secondary Clusters. The use of Submariner and ODF in both the Primary and Secondary Clusters ensures that applications can seamlessly failover to the Secondary Cluster in the event of a disaster, while data remains accessible and consistent across all clusters. The VNET peering between clusters enables secure communication and data replication between regions.
Prerequisites
Azure Account
Log into the Azure CLI by running the following and then authorizing through your Web Browser
Make sure you have enough Quota (change the location if you’re not using East US)
See Addendum - Adding Quota to ARO account if you have less than 36 Quota left for Total Regional vCPUs.
Register resource providers
Red Hat pull secret
- Log into https://cloud.redhat.com
- Browse to https://cloud.redhat.com/openshift/install/azure/aro-provisioned
- Click the Download pull secret button and remember where you saved it, you’ll reference it later.
Manage Multiple Logins
In order to manage several clusters, we will add a new Kubeconfig file to manage the logins and change quickly from one context to another
Create clusters
Set environment variables
Create environment variables for hub cluster
Set environment variables for primary cluster
Set environment variables for secondary cluster
Note: Pod and Service CIDRs CANNOT overlap between primary and secondary clusters (because we are using Submariner). So we will use the parameters “–pod-cidr” and “–service-cidr” to avoid using the default ranges. Details about POD and Service CIDRs are available here .
Deploying the Hub Cluster
Create an Azure resource group
Create virtual network
Create control plane subnet
Create worker subnet
Create the cluster
This will take between 30 and 45 minutes
Deploying the Primary cluster
Create control plane subnet
Create worker subnet
Create the cluster
This will take between 30 and 45 minutes
Connect to Hub and Primary Clusters
With the cluster in a private network, we can create a jump host in order to connect to it.
Create the jump subnet
Create a jump host
Save the jump host public IP address
Run this command in a second terminal Use sshuttle to create a SSH VPN via the jump host (use a separate terminal session)
Run this command in a second terminal Replace the IP with the IP of the jump box from the previous step
Get OpenShift API routes
Get OpenShift credentials
Log into Hub and configure context
Log into Primary and configure context
You can now switch between the hub and primary clusters with
oc config
Deploying the Secondary Cluster
Create an Azure resource group
Create virtual network
Create control plane subnet
Create worker subnet
Create the cluster
This will take between 30 and 45 minutes
VNet Peering
Create a peering between both VNETs (Hub Cluster in EastUS and Secondary Cluster in Central US)
Connect to Secondary cluster
Since this cluster will reside in a different virtual network, we should create another jump host.
Create the jump subnet
Create a jump host
Save the jump host public IP address
Run this command in a second terminal Use sshuttle to create a SSH VPN via the jump host
Run this command in a second terminal Replace the IP with the IP of the jump box from the previous step
Get OpenShift API routes
Get OpenShift credentials
Log into Secondary and configure context
You can switch to the secondary cluster with
oc config
Setup Hub Cluster
Ensure you are in the right context
Configure ACM
Create ACM namespace
Create ACM Operator Group
Install ACM version 2.8
Check if installation succeeded
If you get the following error, it means that the installation wasn’t completed yet. Wait 3-5 minutes and run the last command again.
A successful output should be similar to:
Install MultiClusterHub instance in the ACM namespace
Check that the
MultiClusterHubis installed and running properly
Configure ODF Multicluster Orchestrator
Install the ODF Multicluster Orchestrator version 4.12
Check if installation succeeded
If you get the following error, it means that the installation wasn’t completed yet. Wait 3-5 minutes and run the last command again.
A successful output should be similar to:
Import Clusters into ACM
Create a Managed Cluster Set
Make sure you are running sshuttle --dns -NHr "aro@${EAST_JUMP_IP}" $HUB_VIRTUAL_NETWORKin second terminalRetrive token and server from primary cluster
Retrieve token and server from secondary cluster
Make sure you are running sshuttle --dns -NHr "aro@${CENTRAL_JUMP_IP}" $SECONDARY_VIRTUAL_NETWORKin second terminal
Import Primary Cluster
Ensure you are in the right context
Make sure you are running sshuttle --dns -NHr "aro@${EAST_JUMP_IP}" $HUB_VIRTUAL_NETWORKin second terminalCreate Managed Cluster
Create
auto-import-secret.yamlsecretCreate addon config for cluster
Check if cluster imported
Import Secondary Cluster
Create Managed Cluster
Create
auto-import-secret.yamlsecretCreate addon config for cluster
Check if cluster imported
Configure Submariner Add-On
Create
BrokerconfigurationDeploy Submariner config to Primary cluster
Deploy Submariner to Primary cluster
Deploy Submariner config to Secondary cluster
Deploy Submariner to Secondary cluster
Check connection status for primary cluster (wait a few minutes)
Look for the connection established status. The status indicates the connection is not degraded and healthy.
Check connection status for secondary cluster
Look for the connection established status. The status indicates the connection is not degraded and healthy.
Install ODF
Primary Cluster
Switch the context to the primary cluster
Follow these steps to deploy ODF into the Primary Cluster: https://cloud.redhat.com/experts/aro/odf/
Secondary Cluster
Switch the context to the secondary cluster
Follow these steps to deploy ODF into the Secondary Cluster: https://cloud.redhat.com/experts/aro/odf/
Finishing the setup of the disaster recovery solution
Creating Disaster Recovery Policy on Hub cluster
Switch the context to the hub cluster
Create a DR policy to enable replication between primary and secondary cluster
Wait for DR policy to be validated
This can take up to 10 minutes You should see
Two DRClusters are also created
You should see
Creating the Namespace, the Custom Resource Definition, and the PlacementRule
First, log into the Hub Cluster and create a namespace for the application:
Now, still logged into the Hub Cluster create a Custom Resource Definition (CRD) for the PlacementRule installed in the busybox-sample namespace. You can do this by applying the CRD YAML file before creating the PlacementRule. Here are the steps:
Install the CRD for PlacementRule
Create the PlacementRule
Create application and failover
Create an application with ACM
Associate the DR policy to the application
Failover sample application to secondary cluster
Verify application runs in secondary cluster
Make sure you are running sshuttle --dns -NHr "aro@${CENTRAL_JUMP_IP}" $SECONDARY_VIRTUAL_NETWORKin second terminal
Cleanup
Once you’re done it’s a good idea to delete the cluster to ensure that you don’t get a surprise bill.
Delete the clusters and resources
Additional reference resources:
- Virtual Network Peering
- Regional-DR solution for OpenShift Data Foundation
- Private ARO Cluster with access via JumpHost
- Deploy ACM Submariner for connect overlay networks ARO - ROSA clusters
- Configure ARO with OpenShift Data Foundation
- OpenShift Regional Disaster Recovery with Advanced Cluster Management