NOTE: In our environment, SQL is cloud hosted. It has its own fail over strategy which is separate from the server/site DR.
NOTE: Our DR and Production environments are in different geo zones. We can't share a SOLR instance as they are running in the same zones as the sites. We have not looked at any hosted SOLR services.
I am looking to upgrade a client from 8.2 to 9.1.1 that has a cold DR environment. We only bring this environment up to deploy to it with CI. DR with CM/CD is pretty simple, no issues there. Our DR task is to bring DR up, rebuild the indexes and switch the DNS.
But for xConnect it is more complicated.
xDB SOLR indexes
The first issue is that xConnect relies on the xDB index to keep track of all the profiles in Experience Profile and Experience Analytics. To get this up to date on DR, you would need to rebuild the xDB index with
XConnectSearchIndexer -rr. The shards are in the shared SQL so the actual tracking data is fine.
Index Worker Service
Second issue is the index worker service. In the image below you can see the index worker service is not scalable. At least I don't think it is. But this would mean to be that we would not want prod and DR indexer services running at the same time. My guess is that the worker pool records do not have a column to know what record is currently in process. This would cause two processes to work on the same interaction and turn the analytics data to garbage.
So my guess here is that prod xConnect needs to be completely stopped on prod before it is started on DR. And I would need to disable the Sitecore windows services so they do not start on boot. Adds more complexity to fail over and testing.
Does anyone have any real world experience with xConnect in a DR scenario?