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
- Test intercluster routing before creating relationships.
- Use named schedules and policies instead of ad hoc replication settings.
- Record source and destination paths exactly.
- Do not initialize large relationships without capacity and bandwidth approval.
- Alert on replication lag after the relationship goes live.