A useful feature with CA Directory for WAN latency challenges is the HUB model. This model allows sync of the data to occur to distant peer Multi-write DATA DSA, but does NOT impact the external application that is updating its own local Router/DATA DSAs.
To assist with understanding this HUB model, we have leverage the CA Directory samples of democorp & router to build out an architecture with six (6) DATA DSAs and two (2) router DSAs, to emulate two (2) data centers across the world. These samples are included with every CA Directory deployment under $DXHOME/samples/democorp & $DXHOME/samples/router.
This lab emulates two (2) of the three (3) data centers that are displayed within the CA documentation.

This lab may be replicated with near-real-world WAN latency within VMWARE Workstation feature.
https://www.vmware.com/products/workstation-pro.html

Below is a bash shell script used to create the lab environment that was created on a single host OS, with CA Directory samples of “democorp” and “router”. These samples were “copied” and updated via sed commands to ensure the DSA are unique for TCP Ports and naming convention. The below examples’ nomenclature will use democorpX for (A-F) and routerYY (AA or BB) .
These DATA DSA use the same suffix and are all referenced in the group knowledge file. The HUB model configuration will change the behavior for MW-DISP replication between data centers. MW-DISP replication will still be used for all local sync between DATA DSA in the same data center, and would ONLY be used between data centers for the DATA DSA that are designated as “HUB”s (aka multi-write-group-hub).
To test the value of HUB model with WAN latency, suggest that the same lab be executed on two (2) hosts, where one host has the VMWARE network latency enabled to 150/150 milli-seconds. Update the ip addresses within the $DXHOME/config/knowlege/*.dxc on both host OS, to reflect the correct hostnames for each data center in the DSAs.
The diagram below outlines the delta between various democorp DATA DSA to use the HUB model.

The changes below show the deltas within the *.dxc/*.dxg files within the knowledge folder for democorp MW HUB model.

The below image captures the only deltas in the *.dxi (startup files) for the democorp MW HUB model, located within the server folder. Note, if CA Directory management tool is deployed and used for democorp, all configurations will be in a single *.dxi file.

#!/bin/bash ############################################## # # Name: democorp_mw_hub_lab.sh # # Multi-Write HUB lab using CA Directory and the samples of # democorp and router under DXHOME/samples # A. Baugher, 04/2020 - ANA Technology Partner # # Assumptions: # CA Directory is deployed & dxprofile is enabled for dsa user # Execute script as dsa user # # Step 0. Clean-Up prior deployment # # Step 1. Auto deploy both democorp and router samples with: setup.sh -q # # Step 2. Make common changes in democorp prior to copying # # Step 3. Create six (6) copies of democorp and two (2) copies of router # # Step 4. Update the six (6) copies of democorp for: # - name # - ports # - multi-write-group (HUB group) # - DSA flags for MW & HUB-DSA # - Group knowledge file reference # # Update the two (2) copies of router for: # - name # - ports # - Group knowledge file reference # - set write-precedence (for HUB-DSA) # # Step 5. Start all DSAs # # Step 6. Test with dxsearch query # # Step 7. Execute the dxsoak command with the service account & time command # # Step 8. Update democorpA to force a single delta between peer members of AA and BB # # Step 9. Create LDAP Export # # Step 10. Create LDAP Delta & Compare the various democorp DSA to validate sync operations # # ############################################## #set -xv echo .. echo "#############################################################" echo "Step 0. Clean up prior deployment of democorp and router" echo "#############################################################" dxserver stop all sleep 5 kill -9 `ps -ef | grep dsa | grep democorp | grep -v grep | grep -v "democorp_mw_hub_lab" | awk '{print $2}'` > /dev/null 2>&1 kill -9 `ps -ef | grep dsa | grep router | grep -v grep | awk '{print $2}'` > /dev/null 2>&1 sleep 5 rm -rf $DXHOME/data/democorp*.* rm -rf $DXHOME/config/knowledge/democorp*.* rm -rf $DXHOME/config/knowledge/router*.* rm -rf $DXHOME/config/servers/democorp*.* rm -rf $DXHOME/config/servers/router*.* rm -rf $DXHOME/logs/democorp*.* rm -rf $DXHOME/logs/router*.* rm -rf $DXHOME/backup/delta*.* > /dev/null 2>&1 rm -rf $DXHOME/backup/*.ldif > /dev/null 2>&1 echo .. echo "#############################################################" echo "Step 1a. Deploy clean version of democorp and router" echo "#############################################################" cd $DXHOME/samples/democorp $DXHOME/samples/democorp/setup.sh -q > /dev/null 2>&1 cd $DXHOME/samples/router $DXHOME/samples/router/setup.sh -q > /dev/null 2>&1 cd echo .. echo "#############################################################" echo "Step 1b. Create service ID in democorp for later use" echo "#############################################################" cat << EOF > $DXHOME/diradmin.ldif version: 1 dn: cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: person objectClass: top cn: diradmin sn: diradmin givenName: diradmin userPassword: Password01 EOF dxmodify -a -c -h `hostname` -p 19389 -f $DXHOME/diradmin.ldif echo .. echo "#############################################################" echo "Step 1c. Stop all running democorp & router DSAs" echo "#############################################################" dxserver stop all sleep 10 echo .. echo "#############################################################" echo "Step 2a. Make common changes in pre-existing files before other modification" echo "Update dsa-flags in democorp.dxc to allow Multi-Write with a HUB" echo "#############################################################" sed -i 's|ssl-auth|ssl-auth\n multi-write-group = hub_group_AA\n dsa-flags =|g' $DXHOME/config/knowledge/democorp.dxc sed -i 's|dsa-flags =|dsa-flags = multi-write, no-service-while-recovering, load-share|g' $DXHOME/config/knowledge/democorp.dxc echo .. echo "#############################################################" echo "Step 2b. Update MW recovery in democorp.dxi file" echo "#############################################################" sed -i 's|recovery = false;|recovery = true;|g' $DXHOME/config/servers/democorp.dxi echo .. echo "#############################################################" echo "Step 3a. Create six (6) copies of democorp and two (2) routers" echo "Copy democorp data folder contents" echo "#############################################################" cp -r -p $DXHOME/data/democorp.db $DXHOME/data/democorpA.db cp -r -p $DXHOME/data/democorp.tx $DXHOME/data/democorpA.tx > /dev/null 2>&1 cp -r -p $DXHOME/data/democorp.db $DXHOME/data/democorpB.db cp -r -p $DXHOME/data/democorp.tx $DXHOME/data/democorpB.tx > /dev/null 2>&1 cp -r -p $DXHOME/data/democorp.db $DXHOME/data/democorpC.db cp -r -p $DXHOME/data/democorp.tx $DXHOME/data/democorpC.tx > /dev/null 2>&1 cp -r -p $DXHOME/data/democorp.db $DXHOME/data/democorpD.db cp -r -p $DXHOME/data/democorp.tx $DXHOME/data/democorpD.tx > /dev/null 2>&1 cp -r -p $DXHOME/data/democorp.db $DXHOME/data/democorpE.db cp -r -p $DXHOME/data/democorp.tx $DXHOME/data/democorpE.tx > /dev/null 2>&1 cp -r -p $DXHOME/data/democorp.db $DXHOME/data/democorpF.db cp -r -p $DXHOME/data/democorp.tx $DXHOME/data/democorpF.tx > /dev/null 2>&1 echo .. echo "#############################################################" echo "Step 3b. Copy autostart folder contents" echo "#############################################################" cp -r -p $DXHOME/config/autostart/democorp $DXHOME/config/autostart/democorpA cp -r -p $DXHOME/config/autostart/democorp $DXHOME/config/autostart/democorpB cp -r -p $DXHOME/config/autostart/democorp $DXHOME/config/autostart/democorpC cp -r -p $DXHOME/config/autostart/democorp $DXHOME/config/autostart/democorpD cp -r -p $DXHOME/config/autostart/democorp $DXHOME/config/autostart/democorpE cp -r -p $DXHOME/config/autostart/democorp $DXHOME/config/autostart/democorpF cp -r -p $DXHOME/config/autostart/router $DXHOME/config/autostart/routerAA cp -r -p $DXHOME/config/autostart/router $DXHOME/config/autostart/routerBB echo .. echo "#############################################################" echo "Step 3c. Copy knowledge folder contents" echo "#############################################################" cp -r -p $DXHOME/config/knowledge/democorp.dxc $DXHOME/config/knowledge/democorpA.dxc cp -r -p $DXHOME/config/knowledge/democorp.dxc $DXHOME/config/knowledge/democorpB.dxc cp -r -p $DXHOME/config/knowledge/democorp.dxc $DXHOME/config/knowledge/democorpC.dxc cp -r -p $DXHOME/config/knowledge/democorp.dxc $DXHOME/config/knowledge/democorpD.dxc cp -r -p $DXHOME/config/knowledge/democorp.dxc $DXHOME/config/knowledge/democorpE.dxc cp -r -p $DXHOME/config/knowledge/democorp.dxc $DXHOME/config/knowledge/democorpF.dxc cp -r -p $DXHOME/config/knowledge/router.dxc $DXHOME/config/knowledge/routerAA.dxc cp -r -p $DXHOME/config/knowledge/router.dxc $DXHOME/config/knowledge/routerBB.dxc cp -r -p $DXHOME/config/knowledge/sample.dxg $DXHOME/config/knowledge/groupAA.dxg cp -r -p $DXHOME/config/knowledge/sample.dxg $DXHOME/config/knowledge/groupBB.dxg echo .. echo "#############################################################" echo "Step 3d. Copy server folder contents" echo "#############################################################" cp -r -p $DXHOME/config/servers/democorp.dxi $DXHOME/config/servers/democorpA.dxi cp -r -p $DXHOME/config/servers/democorp.dxi $DXHOME/config/servers/democorpB.dxi cp -r -p $DXHOME/config/servers/democorp.dxi $DXHOME/config/servers/democorpC.dxi cp -r -p $DXHOME/config/servers/democorp.dxi $DXHOME/config/servers/democorpD.dxi cp -r -p $DXHOME/config/servers/democorp.dxi $DXHOME/config/servers/democorpE.dxi cp -r -p $DXHOME/config/servers/democorp.dxi $DXHOME/config/servers/democorpF.dxi cp -r -p $DXHOME/config/servers/router.dxi $DXHOME/config/servers/routerAA.dxi cp -r -p $DXHOME/config/servers/router.dxi $DXHOME/config/servers/routerBB.dxi echo .. echo "#############################################################" echo "Step 4a. Update names & ports in democorp knowledge files" echo "#############################################################" sed -i 's|19389|29389|g' $DXHOME/config/knowledge/democorpA.dxc sed -i 's|19390|29390|g' $DXHOME/config/knowledge/democorpA.dxc sed -i 's|dsa DEMOCORP =|dsa DEMOCORPA =|g' $DXHOME/config/knowledge/democorpA.dxc sed -i 's|<c AU><o DEMOCORP><cn DXserver>|<c AU><o DEMOCORP><cn DEMOCORPA>|g' $DXHOME/config/knowledge/democorpA.dxc sed -i 's|19389|29489|g' $DXHOME/config/knowledge/democorpB.dxc sed -i 's|19390|29490|g' $DXHOME/config/knowledge/democorpB.dxc sed -i 's|dsa DEMOCORP =|dsa DEMOCORPB =|g' $DXHOME/config/knowledge/democorpB.dxc sed -i 's|<c AU><o DEMOCORP><cn DXserver>|<c AU><o DEMOCORP><cn DEMOCORPB>|g' $DXHOME/config/knowledge/democorpB.dxc sed -i 's|19389|29589|g' $DXHOME/config/knowledge/democorpC.dxc sed -i 's|19390|29590|g' $DXHOME/config/knowledge/democorpC.dxc sed -i 's|dsa DEMOCORP =|dsa DEMOCORPC =|g' $DXHOME/config/knowledge/democorpC.dxc sed -i 's|<c AU><o DEMOCORP><cn DXserver>|<c AU><o DEMOCORP><cn DEMOCORPC>|g' $DXHOME/config/knowledge/democorpC.dxc sed -i 's|19389|29689|g' $DXHOME/config/knowledge/democorpD.dxc sed -i 's|19390|29690|g' $DXHOME/config/knowledge/democorpD.dxc sed -i 's|dsa DEMOCORP =|dsa DEMOCORPD =|g' $DXHOME/config/knowledge/democorpD.dxc sed -i 's|<c AU><o DEMOCORP><cn DXserver>|<c AU><o DEMOCORP><cn DEMOCORPD>|g' $DXHOME/config/knowledge/democorpD.dxc sed -i 's|19389|29789|g' $DXHOME/config/knowledge/democorpE.dxc sed -i 's|19390|29790|g' $DXHOME/config/knowledge/democorpE.dxc sed -i 's|dsa DEMOCORP =|dsa DEMOCORPE =|g' $DXHOME/config/knowledge/democorpE.dxc sed -i 's|<c AU><o DEMOCORP><cn DXserver>|<c AU><o DEMOCORP><cn DEMOCORPE>|g' $DXHOME/config/knowledge/democorpE.dxc sed -i 's|19389|29889|g' $DXHOME/config/knowledge/democorpF.dxc sed -i 's|19390|29890|g' $DXHOME/config/knowledge/democorpF.dxc sed -i 's|dsa DEMOCORP =|dsa DEMOCORPF =|g' $DXHOME/config/knowledge/democorpF.dxc sed -i 's|<c AU><o DEMOCORP><cn DXserver>|<c AU><o DEMOCORP><cn DEMOCORPF>|g' $DXHOME/config/knowledge/democorpF.dxc echo .. echo "#############################################################" echo "Step 4b. Update knowledge files for router ports" echo "#############################################################" sed -i 's|19289|39289|g' $DXHOME/config/knowledge/routerAA.dxc sed -i 's|19290|39290|g' $DXHOME/config/knowledge/routerAA.dxc sed -i 's|dsa ROUTER =|dsa ROUTERAA =|g' $DXHOME/config/knowledge/routerAA.dxc sed -i 's|19289|39389|g' $DXHOME/config/knowledge/routerBB.dxc sed -i 's|19290|39390|g' $DXHOME/config/knowledge/routerBB.dxc sed -i 's|dsa ROUTER =|dsa ROUTERBB =|g' $DXHOME/config/knowledge/routerBB.dxc echo .. echo "#############################################################" echo "Step 4c. Update group knowledge file for three (3)MW Group HUB Peers " echo "#############################################################" sed -i 's|"router.dxc";|"routerAA.dxc";|g' $DXHOME/config/knowledge/groupAA.dxg sed -i 's|"democorp.dxc";|"democorpA.dxc";|g' $DXHOME/config/knowledge/groupAA.dxg sed -i 's|"democorpA.dxc";|"democorpA.dxc";\nsource "democorpB.dxc";\nsource "democorpC.dxc";\nsource "routerBB.dxc";\nsource "democorpD.dxc";\nsource "democorpE.dxc";\nsource "democorpF.dxc";|g' $DXHOME/config/knowledge/groupAA.dxg sed -i 's|source "unspsc.dxc";|#source "unspsc.dxc";|g' $DXHOME/config/knowledge/groupAA.dxg cp -r -p $DXHOME/config/knowledge/groupAA.dxg $DXHOME/config/knowledge/groupBB.dxg #sed -i 's|"router.dxc";|"routerBB.dxc";|g' $DXHOME/config/knowledge/groupBB.dxg #sed -i 's|"democorp.dxc";|"democorpD.dxc";|g' $DXHOME/config/knowledge/groupBB.dxg #sed -i 's|"democorpD.dxc";|"democorpD.dxc";\nsource "democorpE.dxc";\nsource "democorpF.dxc";|g' $DXHOME/config/knowledge/groupBB.dxg #sed -i 's|source "unspsc.dxc";|#source "unspsc.dxc";|g' $DXHOME/config/knowledge/groupBB.dxg echo .. echo "#############################################################" echo "Step 4d. Update Server folder contents" echo "#############################################################" sed -i 's|/knowledge/sample.dxg";|/knowledge/groupAA.dxg";|g' $DXHOME/config/servers/democorpA.dxi sed -i 's|/knowledge/sample.dxg";|/knowledge/groupAA.dxg";|g' $DXHOME/config/servers/democorpB.dxi sed -i 's|/knowledge/sample.dxg";|/knowledge/groupAA.dxg";|g' $DXHOME/config/servers/democorpC.dxi sed -i 's|/knowledge/sample.dxg";|/knowledge/groupBB.dxg";|g' $DXHOME/config/servers/democorpD.dxi sed -i 's|/knowledge/sample.dxg";|/knowledge/groupBB.dxg";|g' $DXHOME/config/servers/democorpE.dxi sed -i 's|/knowledge/sample.dxg";|/knowledge/groupBB.dxg";|g' $DXHOME/config/servers/democorpF.dxi sed -i 's|/knowledge/sample.dxg";|/knowledge/groupAA.dxg";|g' $DXHOME/config/servers/routerAA.dxi sed -i 's|/knowledge/sample.dxg";|/knowledge/groupBB.dxg";|g' $DXHOME/config/servers/routerBB.dxi echo .. echo "#############################################################" echo "Step 4e. Update HUB Configurations in DSA knowledge and DSA routers" echo "#############################################################" sed -i 's|load-share|load-share, multi-write-group-hub|g' $DXHOME/config/knowledge/democorpA.dxc sed -i 's|load-share|load-share, multi-write-group-hub|g' $DXHOME/config/knowledge/democorpD.dxc sed -i 's|multi-write-group = hub_group_AA|multi-write-group = hub_group_BB|g' $DXHOME/config/knowledge/democorpD.dxc sed -i 's|multi-write-group = hub_group_AA|multi-write-group = hub_group_BB|g' $DXHOME/config/knowledge/democorpE.dxc sed -i 's|multi-write-group = hub_group_AA|multi-write-group = hub_group_BB|g' $DXHOME/config/knowledge/democorpF.dxc sed -i 's|/knowledge/groupAA.dxg";|/knowledge/groupAA.dxg";\nset write-precedence = democorpA ,democorpB, democorpC;\n|g' $DXHOME/config/servers/routerAA.dxi sed -i 's|/knowledge/groupBB.dxg";|/knowledge/groupBB.dxg";\nset write-precedence = democorpD ,democorpE, democorpF;\n|g' $DXHOME/config/servers/routerBB.dxi echo .. echo "#############################################################" echo "Step 4f. Remove samples of router & democorp from starting " echo "#############################################################" rm -rf $DXHOME/config/servers/democorp.dxi rm -rf $DXHOME/config/servers/router.dxi rm -rf $DXHOME/config/autostart/democorp rm -rf $DXHOME/config/autostart/router echo .. echo "#############################################################" echo "Step 5. Start all DSAs" echo "#############################################################" dxcertgen certs > /dev/null 2>&1 dxserver start all dxserver status #exit echo .. echo "#############################################################" echo "Step 6. Test all DSAs with dxsearch query" echo "#############################################################" # Comment out if too verbose # Data DSAs #dxsearch -h `hostname` -p 29389 -c -x -b o=DEMOCORP,c=AU #dxsearch -h `hostname` -p 29489 -c -x -b o=DEMOCORP,c=AU #dxsearch -h `hostname` -p 29589 -c -x -b o=DEMOCORP,c=AU #dxsearch -h `hostname` -p 29689 -c -x -b o=DEMOCORP,c=AU #dxsearch -h `hostname` -p 29789 -c -x -b o=DEMOCORP,c=AU #dxsearch -h `hostname` -p 29889 -c -x -b o=DEMOCORP,c=AU # Router DSAs #dxsearch -h `hostname` -p 39289 -c -x -b o=DEMOCORP,c=AU #dxsearch -h `hostname` -p 39389 -c -x -b o=DEMOCORP,c=AU # Data DSAs #dxsearch -h `hostname` -p 29389 -c -x -b o=DEMOCORP,c=AU -D cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU -w Password01 #dxsearch -h `hostname` -p 29489 -c -x -b o=DEMOCORP,c=AU -D cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU -w Password01 #dxsearch -h `hostname` -p 29589 -c -x -b o=DEMOCORP,c=AU -D cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU -w Password01 #dxsearch -h `hostname` -p 29689 -c -x -b o=DEMOCORP,c=AU -D cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU -w Password01 #dxsearch -h `hostname` -p 29789 -c -x -b o=DEMOCORP,c=AU -D cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU -w Password01 #dxsearch -h `hostname` -p 29889 -c -x -b o=DEMOCORP,c=AU -D cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU -w Password01 # Router DSAs #dxsearch -h `hostname` -p 39289 -c -x -b o=DEMOCORP,c=AU -D cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU -w Password01 #dxsearch -h `hostname` -p 39389 -c -x -b o=DEMOCORP,c=AU -D cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU -w Password01 echo .. echo "#############################################################" echo "Step 7. Execute the dxsoak command with the service account & time command" echo "allow to run for over 5 sec to monitor changes for Multi-Write" echo "may allow for longer times (1 hour) to get better performance metrics" echo "#############################################################" cd $DXHOME/samples/dxsoak echo "Update democorpA (TCP 29389) to confirm MW to from democorpA (hub_group_AA) to democorpD (hub_group_BB)" # Create a delete file first; then re-add entries grep dn: democorp.eldf | grep ,ou=Services > democorp-del.eldf sed -i 's|,c=AU|,c=AU\nchangetype: del\n|g' democorp-del.eldf echo .. echo "#############################################################" echo "# Delete all DN entries with ou=Services: `wc -l democorp-del.eldf` on democorpA (TCP 29389)" time ./dxsoak -c -t 2 -q 10 -l 5 -h `hostname`:29389 -D cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU -w Password01 -f democorp-del.eldf echo .. echo "#############################################################" echo "# Re-Add all DN entries with ou=Services: `wc -l democorp.eldf` on democorpD (TCP 29689)" time ./dxsoak -c -t 2 -q 10 -l 5 -h `hostname`:29689 -D cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU -w Password01 -f democorp.eldf echo .. echo "#############################################################" echo "Step 8a. Update democorpA to force a single delta between peer members of AA and BB" echo "#############################################################" cd cat << EOF > $DXHOME/diradmin_sn.ldif dn: cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU changetype: modify replace: sn sn: diradmin_AA_new_update EOF echo "#############################################################" echo "# Query democorpA (TCP 29389) for sn value before change" echo "#############################################################" dxsearch -LLL -h `hostname` -p 29389 -c -x -b cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU -D cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU -w Password01 sn createTimestamp modifyTimestamp echo "#############################################################" echo "# Query democorpF (TCP 29889) for sn value before change" echo "#############################################################" dxsearch -LLL -h `hostname` -p 29889 -c -x -b cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU -D cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU -w Password01 sn createTimestamp modifyTimestamp echo "#############################################################" echo "# Make update on democorpA" echo "#############################################################" dxmodify -a -c -h `hostname` -p 29389 -f $DXHOME/diradmin_sn.ldif echo "#############################################################" echo "# Query democorpA (TCP 29389) for sn value after change" echo " - May catch a fractional delta in replication" echo "#############################################################" dxsearch -LLL -h `hostname` -p 29389 -c -x -b cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU -D cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU -w Password01 sn createTimestamp modifyTimestamp echo "#############################################################" echo "# Query democorpF (TCP 29889) for sn value after change" echo " - May catch a fractional delta in replication" echo "#############################################################" dxsearch -LLL -h `hostname` -p 29889 -c -x -b cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU -D cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU -w Password01 sn createTimestamp modifyTimestamp #exit echo .. echo "#############################################################" echo "Step 8b. Update democorpF to force a reverse single delta between peer members of AA and BB" echo "#############################################################" cd cat << EOF > $DXHOME/diradmin_givenName.ldif dn: cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU changetype: modify replace: givenName givenName: diradmin_BB_new_update EOF echo "#############################################################" echo "# Query democorpC (TCP 29589) for givenName value before change" echo "#############################################################" dxsearch -LLL -h `hostname` -p 29589 -c -x -b cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU -D cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU -w Password01 givenName createTimestamp modifyTimestamp echo "#############################################################" echo "# Query democorpF (TCP 29889) for givenName value before change" echo "#############################################################" dxsearch -LLL -h `hostname` -p 29889 -c -x -b cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU -D cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU -w Password01 givenName createTimestamp modifyTimestamp echo "#############################################################" echo "# Update democorpF to show replication via democorpD (HUB) to democorpA (HUB) " echo "#############################################################" dxmodify -a -c -h `hostname` -p 29889 -f $DXHOME/diradmin_givenName.ldif echo "#############################################################" echo "# Query democorpC (TCP 29589) for givenName value after change" echo " - May catch a fractional delta in replication" echo "#############################################################" dxsearch -LLL -h `hostname` -p 29589 -c -x -b cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU -D cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU -w Password01 givenName createTimestamp modifyTimestamp echo "#############################################################" echo "# Query democorpF (TCP 29889) for givenName value after change" echo " - May catch a fractional delta in replication" echo "#############################################################" dxsearch -LLL -h `hostname` -p 29889 -c -x -b cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU -D cn=diradmin,ou=Networks,ou=Support,o=DEMOCORP,c=AU -w Password01 givenName createTimestamp modifyTimestamp echo .. echo "###########################################################" echo "Step 9b. Update CA Directory DSA to allow online backup ###" echo "###########################################################" echo " - Configure CA Directory to provide an data dump (zdb file) while DSA are online" cp -r -p $DXHOME/config/settings/default.dxc.org $DXHOME/config/settings/default.dxc > /dev/null 2>&1 cp -r -p $DXHOME/config/settings/default.dxc $DXHOME/config/settings/default.dxc.org > /dev/null 2>&1 # Edit the DSA settings file to add in one line. dump dxgrid-db; chmod 744 $DXHOME/config/settings/default.dxc echo "dump dxgrid-db;" >> $DXHOME/config/settings/default.dxc echo .. echo "######################################################################################" echo "Step 9c. Re-init all DSA to data dump the CA DSAs for democorp & router " echo "######################################################################################" echo " - This make take 5-30 seconds to complete " dxserver init all > /dev/null 2>&1 # View for zdb or zd? (in-progress) files sleep 10 echo .. echo "#################################################################" echo "Step 9d. Export DSA backup/offline zdb data files to LDIF file ###" echo "#################################################################" echo " - Export will happen after the backup/offline zdb files are fully created" echo " - This make take 5-60 seconds to complete " echo .. echo "#################################################################" echo "Step 9e. Set WHILE loop for DemocorpF DSA ###" echo "#################################################################" until [ -f $DXHOME/data/democorpF.zdb ] do echo " - Waiting till CA Directory has completed online data dump of DemocorpF DSA" sleep 5 done sleep 5 echo .. echo "#################################################################" echo "Step 9f. Execute dxdumbdb for Democorp DSA - FULL ###" echo "#################################################################" mkdir $DXHOME/backup > /dev/null 2>&1 cd $DXHOME/backup dxdumpdb -z -f $DXHOME/backup/democorpA.ldif democorpA > /dev/null 2>&1 dxdumpdb -z -f $DXHOME/backup/democorpB.ldif democorpB > /dev/null 2>&1 dxdumpdb -z -f $DXHOME/backup/democorpC.ldif democorpC > /dev/null 2>&1 dxdumpdb -z -f $DXHOME/backup/democorpD.ldif democorpD > /dev/null 2>&1 dxdumpdb -z -f $DXHOME/backup/democorpE.ldif democorpE > /dev/null 2>&1 dxdumpdb -z -f $DXHOME/backup/democorpF.ldif democorpF > /dev/null 2>&1 sleep 5 echo .. echo "#################################################################" echo "Step 10a. Perform LDIF DELTA compare between democorpA and democorpB within same HUB MW group" echo "Look for any delta in the metrics > 0" echo "#################################################################" #ldifdelta -x -S DSANAME OLDFILE NEWFILE DELTAFILE ldifdelta -x -S democorpA $DXHOME/backup/democorpA.ldif $DXHOME/backup/democorpB.ldif $DXHOME/backup/delta-between-A-and-B.ldif echo "#################################################################" echo "Step 10b. Perform LDIF DELTA compare between democorpD and democorpE within same HUB MW group" echo "Look for any delta in the metrics > 0" echo "#################################################################" ldifdelta -x -S democorpC $DXHOME/backup/democorpD.ldif $DXHOME/backup/democorpE.ldif $DXHOME/backup/delta-between-D-and-E.ldif echo "#################################################################" echo "Step 10c. Perform LDIF DELTA compare between democorpC and democorpF across different HUB MW groups" echo "Look for any delta in the metrics > 0" echo "#################################################################" ldifdelta -x -S democorpC $DXHOME/backup/democorpC.ldif $DXHOME/backup/democorpF.ldif $DXHOME/backup/delta-between-C-and-F.ldif echo . echo .
Ref: This HUB Model lab was built off a prior lab for MW Sync with air-gap requirements.