Windows Server 2019 iScsi MPIO multiple targets

I'm looking to setup a Windows Server 2019 failover cluster with iScsi shared storage (for a SQL Server Always-On instance). The additional requirement is to not have a single point of failure.

Let's say I have two iScsi Initiator nodes A and B and an iScsi Target C. If I implement MPIO, it will provide redundancy and multiple paths to the Storage, good. However, if C goes down, then nodes A and B lose connection the storage.

Questions:

  1. Should I create 2 iScsi Target Servers, C and D? If so, what's the best configuration so that if C goes down, D will takeover as the Target?
  2. When spinning up the Target Servers, what should the minimum requirements be? e.g. RAM, cores, etc.?
  3. Is it best practice to keep the primary iScsi Target separate from the Domain Controller?
  4. With MPIO, would it be best to use Round-Robin or Failover Only?

Solution 1:

You are totally right in case server C goes down, your nodes will lose connection to the storage. Answering your questions:

  1. You can use different kinds of Software-defined Storage solutions. Couple exmamples: https://www.starwindsoftware.com/resource-library/starwind-virtual-san-installing-and-configuring-sql-server-2019-tp-failover-cluster-instance-on-windows-server-2016/ https://docs.microsoft.com/en-us/azure/azure-sql/virtual-machines/windows/failover-cluster-instance-storage-spaces-direct-manually-configure?tabs=windows2012

  2. As for the requirements, it depends on the software you choose. I haven't found requirements for Microsoft iSCSI Target Server.

  3. From security stand point, I would isolate iSCSI storage from AD, but I am not security engineer, there might be different best practices.

  4. MPIO policy depends on your configuration. As far as I remember, StarWind recommends using Least Queue Depth in their setups.