Configure Azure Local HCI

What to know about Azure Local

Prerequisites & planning

Cloud / identity

Hardware

Networking (host/Top-of-Rack)

Storage

Tools

High-level deployment flow

  1. Prep AD & Azure (OU, GPO scope, service account, subscription permissions).

  2. Download the Azure Stack HCI 23H2 image from the Azure portal and install the OS on each node (bare-metal).

  3. Initial host setup: IPs/VLANs, BIOS/firmware, NIC driver/firmware alignment, DCB/RDMA config on switches and hosts.

  4. Use WAC “Create cluster” workflow: validate, domain-join via the deployment account, create Failover Cluster, set witness, and enable S2D.

  5. Create volumes (ReFS) for VM storage; configure CSV ownership/placements.

  6. Register the cluster with Azure (Arc) to light up Azure Local features, billing, Update Manager, monitoring.

  7. Patch/Update policy via Azure Update Manager or Cluster-Aware Updating; set baselines.

Detailed step-by-step

Prepare Active Directory & permissions

Switch & NIC configuration (before OS or right after)

Install Azure Stack HCI 23H2 on each node

Use Windows Admin Center (WAC) “Create cluster” wizard

  1. Add servers (by IP/DNS).

  2. Validate hardware/driver/network/storage (built-in validation).

  3. Domain join the nodes using the prepared deployment account & OU.

  4. Create cluster (name, mgmt IP), add cloud witness (or file share witness).

  5. Enable S2D; WAC will pool disks and create a storage pool.

  6. Create ReFS volumes (mirror/erasure coding as needed) and add as CSV.
    These actions and their sequence are laid out in Microsoft’s deployment overview and install articles.

Quick PowerShell equivalents (if you prefer CLI for parts):

# On one node after domain join
Test-Cluster -Node node1,node2 -Include "Inventory","Network","System Configuration"
New-Cluster -Name AzLocal-CLS -Node node1,node2 -StaticAddress 10.0.0.50
Set-ClusterQuorum -CloudWitness -AccountName <storageacct> -AccessKey <key>
Enable-ClusterS2D
New-Volume -StoragePoolFriendlyName "S2D*"

Register with Azure (Arc) & enable Azure Local features

Updates, security & baselines

Host/network design tips that prevent pain

Common things to know

Handy Microsoft docs to keep open while you deploy

Hardware & network prep

Item

Requirement

Notes

Nodes

4 identical physical servers

Same CPU family, BIOS, firmware, NICs, drives

RAM

≥128 GB per node

256–512 GB recommended

NICs

2 × RDMA (25/40/100 GbE) + 1 × mgmt

RoCEv2 + DCB or iWARP; enable RSS, VMQ

Drives

At least 2 × NVMe/SSD (cache) + 4 × SSD/HDD (capacity)

Identical layout across nodes

Switches

DCB enabled (PFC + ETS)

Needed for RoCE; VLANs for Mgmt / Cluster / SMB

OS media

Azure Stack HCI 23H2/24H2 image

Download from Azure portal

Operating System installs

  1. Install Azure Stack HCI 23H2 on each node (bare-metal).

  2. Assign temporary static IPs, rename hosts (AZHCI-01AZHCI-04).

  3. Ensure DNS resolves each name.

  4. Do not join domain yet (the wizard will handle this).

  5. Verify latest vendor firmware/driver bundles.

Network configuration

On each host (PowerShell as admin):

# Identify adapters
Get-NetAdapter

# Enable RDMA
Enable-NetAdapterRdma -Name "SMB01","SMB02"

# Disable RDMA on mgmt NIC
Disable-NetAdapterRdma -Name "Mgmt"

# (Optional) assign IPs
New-NetIPAddress -InterfaceAlias "Mgmt" -IPAddress 10.0.0.11 -PrefixLength 24 -DefaultGateway 10.0.0.1
Set-DnsClientServerAddress -InterfaceAlias "Mgmt" -ServerAddresses 10.0.0.10

Switch-side:

Test RDMA:

Get-SmbClientNetworkInterface
Test-SmbBandwidth -ServerName <PeerNodeName>

Active Directory & permissions

  1. Create an OU OU=AzureLocal,DC=corp,DC=contoso,DC=com.

  2. Create a service account (e.g. svc_azlocaldeploy) with delegated rights to that OU.

  3. Ensure the account can Create/Delete computer objects and Join to domain.

  4. Verify DNS updates are dynamic.

Cluster creation (Windows Admin Center)

In WACAzure Stack HCI → Create Cluster:

  1. Add serversAZHCI-01AZHCI-04.

  2. Validate hardware/network/storage.

  3. Domain-join the nodes using svc_azlocaldeploy and OU above.

  4. Create Failover Cluster:

  5. Configure quorumCloud Witness (Azure Storage).

  6. Enable Storage Spaces Direct (S2D) when prompted.

Enable S2D

If doing manually:

# On one node
Test-Cluster -Node AZHCI-01,AZHCI-02,AZHCI-03,AZHCI-04 -Include "Storage Spaces Direct","Inventory","Network","System Configuration"

New-Cluster -Name AZHCI-CLS -Node AZHCI-01,AZHCI-02,AZHCI-03,AZHCI-04 -StaticAddress 10.0.0.50

Set-ClusterQuorum -CloudWitness -AccountName mystorageacct -AccessKey <key>

Enable-ClusterS2D

Verify:

Get-StorageSubSystem Cluster* | Get-PhysicalDisk
Get-StoragePool S2D* | Get-VirtualDisk

Create volumes

Example – Mirror volume for VMs:

New-Volume -FriendlyName VMStore01 -FileSystem CSVFS_ReFS -StoragePoolFriendlyName "S2D on AZHCI-CLS" -Size 2TB -ResiliencySettingName Mirror

Example – Mirror-accelerated Parity (capacity tier):

New-Volume -FriendlyName Archive01 -FileSystem CSVFS_ReFS -StoragePoolFriendlyName "S2D on AZHCI-CLS" -Size 10TB -StorageTierFriendlyNames Performance,Capacity -StorageTierSizes 1TB,9TB

Check CSVs:

Get-ClusterSharedVolume

Register cluster with Azure (Arc)

In WAC → Register with Azure → sign in → select Subscription + Resource Group.
This enables:

Post-deployment checklist

Task

PowerShell / WAC action

Enable Cluster-Aware Updating

Get-ClusterUpdates tab

Configure backups

Azure Backup Server or 3rd party

Monitor

Azure Arc → Insights

Patch hosts

Update-Cluster

Test failover

Move-ClusterGroup, simulate node loss

Validation

Test-Cluster -Cluster AZHCI-CLS
(Get-Cluster).ClusterFunctionalLevel
Get-StoragePool S2D* | Get-PhysicalDisk | Group-Object HealthStatus