Skip to main content

NetApp

ONTAP Cluster Peering and SVM Peering for SnapMirror Replication

Why Peering Quality Matters

SnapMirror reliability starts before the relationship is created. If cluster peering, intercluster LIFs, DNS, or SVM peering are weak, replication becomes noisy and recovery workflows become harder to trust.

NetApp documents cluster peer create for cluster peering and vserver peer create for SVM peering: cluster peer create and vserver peer create.

Prechecks

On both clusters:

cluster show
network interface show -role intercluster
network ping -lif <intercluster_lif> -destination <peer_intercluster_ip>
cluster peer show
vserver peer show

Confirm that intercluster LIFs exist on the correct IPspace and can route to the peer cluster.

CLI Process

Create cluster peering from one cluster:

cluster peer create -generate-passphrase -peer-addrs 10.10.20.11,10.10.20.12

On the peer cluster, complete the peer relationship with the passphrase:

cluster peer create -peer-addrs 10.10.10.11,10.10.10.12

Verify:

cluster peer show
cluster peer health show

Create SVM peering:

vserver peer create \
  -vserver svm_prod01 \
  -peer-vserver svm_dr01 \
  -peer-cluster cluster_dr \
  -applications snapmirror

Accept if required:

vserver peer accept -vserver svm_dr01 -peer-vserver svm_prod01
vserver peer show

Create a SnapMirror relationship after peering is healthy:

snapmirror create \
  -source-path svm_prod01:app_data01 \
  -destination-path svm_dr01:app_data01_dp \
  -type XDP \
  -schedule hourly \
  -policy MirrorAndVault

snapmirror initialize -destination-path svm_dr01:app_data01_dp

REST API Process

Discover cluster and intercluster interfaces:

curl -k -u admin:'<password>' \
  "https://cluster-a.example.com/api/cluster/peers?fields=name,state,authentication"

curl -k -u admin:'<password>' \
  "https://cluster-a.example.com/api/network/ip/interfaces?services=intercluster_core&fields=name,ip.address,location,state"

Create SVM peering where supported by your ONTAP release:

curl -k -u admin:'<password>' \
  -X POST \
  "https://cluster-a.example.com/api/svm/peers" \
  -H "Content-Type: application/json" \
  -d '{
    "svm": { "name": "svm_prod01" },
    "peer": { "svm": { "name": "svm_dr01" }, "cluster": { "name": "cluster_dr" } },
    "applications": ["snapmirror"]
  }'

Create and initialize a SnapMirror relationship:

curl -k -u admin:'<password>' \
  -X POST \
  "https://cluster-dr.example.com/api/snapmirror/relationships" \
  -H "Content-Type: application/json" \
  -d '{
    "source": { "path": "svm_prod01:app_data01" },
    "destination": { "path": "svm_dr01:app_data01_dp" },
    "policy": { "name": "MirrorAndVault" },
    "schedule": { "name": "hourly" }
  }'

Then initialize by patching the relationship state to transferring:

curl -k -u admin:'<password>' \
  -X PATCH \
  "https://cluster-dr.example.com/api/snapmirror/relationships/<relationship_uuid>" \
  -H "Content-Type: application/json" \
  -d '{ "state": "transferring" }'

Best Practices

Back to top