Azure Stack Architecture Overview
Microsoft Azure Stack allows you to implement the services and embrace the power of Microsoft Azure in your own data center using certified hardware. The underlying platform and fabric of Azure Stack are similar to that of Microsoft Azure. Microsoft Azure is a massive cloud platform consisting of 36 data centers worldwide along with hundreds and thousands of servers running across those data centers to provide next generation cloud platform capabilities. While your organization might not need such a large data center capacity as a service provider or an enterprise, Azure Stack lets you provide core Azure services to your customers or organizations, starting as small as a 4-node compute cluster hosting Azure Stack in a production deployment. The “Defining an Installation or Instance of Azure Stack” section of this chapter provides an overview of how to organize Azure Stack into instances.
Figure 3.2 is a detailed architecture diagram of Azure Stack at a very high level from an operational standpoint.
FIGURE 3.2 High-level Azure Stack architecture.
Azure Stack is consistent with Azure as it provides the same management experience of the Azure portal, service deployment via Azure Resource Manager (ARM) templates, PowerShell, and Azure command-line interface (CLI) and application development using the Azure software development kit (SDK). Azure Resource Manager is an instance that runs in Azure Stack and is your interaction point in Azure Stack both as tenant and administrator.
The partition request broker is basically a set of core resource providers in Azure Stack and is an application programming interface (API) that works back and forth with the ARM layer. A resource provider is what allows you to communicate with underlying resources, and includes a user extension that allows you to utilize it from the portal. Each resource provider has a north-bound interface that plugs into Azure Resource Manager, and a south-bound interface that communicates with the underlying infrastructure.
Infrastructure deployment is an automation engine in Azure Resource Manager that is included as a part of Azure Stack. It performs the actual deployment, automation, and updates in Azure Stack. Finally, infrastructure roles contain all the management components of Azure Stack, interacting with the underlying hardware layer to abstract hardware features into high-level software services that Azure Stack provides.
Defining an Installation or Instance of Azure Stack
An installation or an instance of Azure Stack can be defined in many ways. Essentially, it is a single instance of Azure Resource Manager with one or more regions under management of ARM, one or more scale units within a region, and four or more servers within a scale unit. The next sections provide additional details.
Azure Stack Region
An Azure Stack region is a set of scale units that share the same physical location, and are under one physical and logical administrator. A region contains high bandwidth/low latency—flat, layer-3 network connectivity that serves as the communication link between Azure Stack scale units. Customers can organize scale units into regions depending on their requirements for planning those regions.
Azure Stack Scale Unit
An Azure Stack scale unit is always associated with a single region and is a unit of capacity expansion in Azure Stack. There can be one or more scale units within a region. Each scale unit can be composed of a different generation of hardware than the others (homogenous within the scale unit). A scale unit is also equivalent to a fault domain, which resembles a failover cluster within your Azure Stack region.
In a production deployment of Azure Stack, the smallest scale unit comprises four servers. A single scale unit supports up to 16 servers per scale. The scale of your deployment can be calculated using the following formula.
Scale = Number of servers per scale unit x Number of scale units per region x Number of regions
Designing an Azure Stack Scale Unit
A minimal installation of an Azure Stack deployment contains at least one scale unit. The smallest scale contains a minimum of four servers plus a set of network switches. Each server is installed from bare metal with Azure Stack and contains the following (minimum) hardware specification:
2 × 10Gb ports with remote direct memory access (RDMA)
1 × boot media (400GB or larger with optional mirroring), 2 × SSD for cache (NVMe, SATA SSD or SAS SSD) + 4 × HDD for capacity (HDD or SSD)
10 × cores per CPU, min 2 × CPUs
Figure 3.3 denotes several sample Azure Stack scale units from Microsoft OEM partners HPE, Dell, and Lenovo. Other partners include Cisco, with availability from Huawei and Avanade expected in 2018.
FIGURE 3.3 Azure Stack scale units from several OEM partners.
All servers are aggregated together in a hyper-converged failover cluster where the compute and storage layers are deployed in the same cluster. Azure Stack leverages Storage Spaces Direct, the software-defined storage sub-system that ships with Windows Server 2016. Every single component in Azure Stack is deployed in a resilient manner; the resiliency depends on that particular component. For example, the Azure Stack portal and ARM are web properties and therefore deployed behind a load balancer that is a built-in configurable server role in Windows Server 2016. All servers must share the same top-of-rack (ToR) switch (ToR pair), and more than one failover cluster per ToR pair can be included. Also, all servers within a single scale unit must be homogenously configured (that is, CPU, memory, NIC, and storage devices).
Figure 3.4 is a visual representation of Azure Stack integrated system architecture.
FIGURE 3.4 Azure Stack integrated system.
This architecture addresses smaller entry points for Azure Stack solutions and eases capacity expansion.