Skip to content

Architecture Overview

Solution Summary

This repository provides deployment automation for Azure Virtual Desktop (AVD) using Azure Local (formerly Azure Stack HCI) as the session-host compute platform.

The AVD architecture has two distinct planes:

  • Control plane – Hosted in Azure. Includes the host pool, application groups, workspace, and all supporting Azure services (Key Vault, Log Analytics, Storage for FSLogix).
  • Session-host plane – Hosted on-premises on Azure Local clusters. VMs are created as Arc-enabled virtual machines and registered with the AVD host pool in Azure.

High-Level Architecture

AVD Solution Architecture

Open the draw.io source in draw.io for an editable version.

The diagram above shows the full end-to-end architecture — End Users connect via HTTPS/RDP Shortpath through the Azure AVD Broker to Session Hosts running on the Azure Local cluster. Supporting services include Entra ID, Key Vault, Log Analytics, FSLogix SMB storage, and the full IaC deployment pipeline.

┌─────────────────────────────────────────────────────────────────────┐
│                            AZURE (Cloud)                            │
│                                                                     │
│  ┌──────────────────────────────────────────────────────────────┐  │
│  │                   AVD Control Plane                          │  │
│  │                                                              │  │
│  │   Host Pool ──► Application Group ──► Workspace             │  │
│  │        │                                                     │  │
│  │        └──► Log Analytics Workspace                         │  │
│  │        └──► Key Vault (secrets)                             │  │
│  │        └──► Storage Account (FSLogix / MSIX)                │  │
│  └──────────────────────────────────────────────────────────────┘  │
│                          │                                          │
│              Azure Arc Resource Bridge                              │
└──────────────────────────┼──────────────────────────────────────────┘

                           │  Arc-enabled AVD Agent Registration

┌──────────────────────────────────────────────────────────────────────┐
│                       Azure Local Cluster                            │
│                                                                      │
│  ┌────────────────────────────────────────────────────────────────┐  │
│  │                   AVD Session Hosts (VMs)                      │  │
│  │                                                                │  │
│  │   VM-1  ──┐                                                   │  │
│  │   VM-2  ──┼──  Windows 11 Multi-Session / Windows Server      │  │
│  │   VM-N  ──┘    AVD Agent + FSLogix Agent                      │  │
│  └────────────────────────────────────────────────────────────────┘  │
│                                                                      │
│  ┌────────────────────────────────────────────────────────────────┐  │
│  │              Scale Out File Server (SOFS)                      │  │
│  │           \\SOFS\Profiles  (SMB share)                         │  │
│  │    (see azurelocal-sofs-fslogix companion repository)         │  │
│  └────────────────────────────────────────────────────────────────┘  │
└──────────────────────────────────────────────────────────────────────┘

           │   On-premises network

    ┌──────────────┐
    │  Domain      │
    │  Controllers │
    │  (AD DS)     │
    └──────────────┘

Key Components

ComponentLocationDescription
Host PoolAzureLogical grouping of session hosts; defines pooled vs. personal type
Application GroupAzureCollection of apps or desktops published to users
WorkspaceAzureUser-facing aggregator for one or more application groups
Log Analytics WorkspaceAzureDiagnostics, monitoring, and Azure Monitor integration
Key VaultAzureStores domain-join credentials, registration tokens, and certificates
Storage AccountAzureOptional: MSIX app attach packages or cloud-side FSLogix share
Azure Local ClusterOn-premisesHyper-converged infrastructure running Storage Spaces Direct
Arc Resource BridgeAzure LocalEnables Azure to manage on-premises VMs as Arc-enabled resources
Session Host VMsAzure LocalWindows VMs running the AVD Agent and FSLogix Agent
Scaling PlanAzureAutoscaler schedule that powers session host VMs on/off based on demand (Pooled pools)
SOFS / FSLogixAzure LocalSMB share providing profile containers (companion repo)

Identity Options

OptionDescription
Active Directory Domain Services (AD DS)Traditional on-premises domain; session hosts domain-joined
AD DS + Entra ID Hybrid Join (Recommended)Hybrid join using Entra Connect; supports Conditional Access and SSO via AADLoginForWindows extension

WARNING

Azure Local Constraint Entra-only join is NOT supported on Azure Local. Arc-enabled VMs (Microsoft.HybridCompute/machines) do not support Entra-only join. Only AD-Only and Hybrid Join are valid identity strategies.


Network Considerations

  • Session hosts require outbound HTTPS (443) to Azure for AVD broker, Entra ID, and Windows Update endpoints.
  • RDP traffic from clients terminates at the AVD gateway in Azure; no inbound firewall rules needed on-premises.
  • SMB traffic for FSLogix (port 445) between session hosts and SOFS stays on the local network.
  • Use a dedicated storage/management VLAN for intra-cluster and SOFS traffic.
  • DNS must resolve both Azure endpoints and on-premises names from session-host VMs.

Storage Sizing Guidance

User CountFSLogix VHD SizeRecommended SOFS CSV
Up to 10030 GB / user~3 TB usable
100 – 50030 GB / user~15 TB usable
500+30 GB / userScale horizontally

Released under the MIT License.