Hi Ankush,
There are many parameters involved in answering this question . Typically, CA Services are engaged to evaluate a customer's environment, use cases and make recommendations on configuration, topology, size and data layout.
High Availability:
- We would recommend 3 multi-write DSAs (dsa1, dsa2, dsa3) per namespace (prefix) per site (synchronous replication). If a DSAs needs to be taken down for maintenance, having another 2 running provides redundancy.
- For these 3 DSAs run MW-DISP recovery (set multi-write-disp-recovery = true; in *.dxi). This allows DSAs to recover missed updates when taking offline or handle network outages without requiring DR.
- For these 3 DSAs run one or more router DSAs. I would also "set write-precedence = dsa1, dsa2, dsa3;" on the routers to ensure updates are sent to a preferred master. Having a preferred master has many benefits. Routers take care of failover/failback should a DSA/machine need to be stopped.
- For these 3 DSAs set dsp-idle-time to 30 seconds. When machines are shutdown, occasionally the DSA is not notified by the host operating system that the other end of the network connection it is sending to has gone away in a timely fashion (tcp-keepalive). This setting causes the DSA to cut the link if it doesn't receive responses for 30 seconds.
Performance: For these 3 DSAs enable load-sharing (dsa-flags) to share the load of search requests across all 3.
Scalability/Performance: There are 2 questions with regard to scalability, how many entries do we have now? how many entries are we likely to have in the future? There are 2 ways to scale data. 1) Distributing data across multiple DSAs, 2) Using horizontal partitioning to automatically distribute data across multiple DSAs. Note: Distributing also improves performance as it allows for better write throughput. If you are likely to have more the 10 million entries in the future, then you should consider distribution.
Replication Performance: Synchronous/Asynchronous? If your have a number of data centers spread across the state/country/global with applications sharing data from your DSA backbone, then add an additional 3 multi-write DSAs per namespace (prefix) per data center. If the network between data centres is unreliable or latent then I would put each set of 3 DSAs in there own multi-write-group. That way a client application is stalled waiting for an update to be replicated globally. For each DR you should set up local routers with write-precedence set to these local DSAs (dsa4, dsa5, dsa6). Load sharing can be kept local to a data center by using load-share groups. This prevents the router from sending requests across data centres. For this topology, our recommendation is to use mult-write group hubs. This is a case of marking each preferred master (write-precedence) with "dsa-flags = multi-write-group-hub", there is more information here: Multiwrite Groups Hubs - CA Directory - 12.0.16 - CA Technologies Documentation
In summary
- HA use at least 3 data DSAs service by a routing layer
- Scale using distribution
- Synchronous replication when DSAs are collocated
- Asynchronous replication between Data Centers
Thanks,
Justin