ArcGIS Enterprise built on Azure Premium Files
Overview
As of July 2019, Azure Premium Files are generally available. These file shares are backed by Solid State Drives – offering high performance and low latency for IO-intensive workloads. More here: https://docs.microsoft.com/en-us/azure/storage/files/storage-files-planning#file-share-performance-tiers
Initial real-world performance tests show slight read benefit to the Azure files, and a large write benefit to VM disks. Given that our file share is built on a single VM and so cannot be considered High Availability, Azure Files look to be an ideal option for our shared folder needs.
Manual integration
First, I manually created tcautomationcentral storage account in the tc-script-ArcGIS-rg resource group, following these steps: https://docs.microsoft.com/en-us/azure/storage/files/storage-how-to-create-premium-fileshare
Second, I created a fileshare ‘jsh-share’, and a directory structure matching what is found in our current \\egis-xyz-ds0\share approach.
Next, I manually added connection credentials the GIS and Portal machines using the CMDKEY command, using the credentials given by the ‘Connect’ tool of the file share.
Finally, I updated any reference in the DSC template that pointed to the file share on the datastore VM to reference tcautomationcentral instead.
Troubleshooting
The DSC variable ConfigData->Portal->Installer->ContentDir must be a local path.
The Azure Files share must be cleaned out before a DSC install takes place, as files from a previous failed install will effect subsequent runs.
Published performance expectations
According to Azure’s Planning for Azure files document, a 500GB azure file share should perform as follows:
Capacity (GiB) | Baseline IOPS | Burst IOPS | Egress (MiB/s) | Ingress (MiB/s) |
---|---|---|---|---|
100 | 100 | Up to 300 | 66 | 44 |
500 | 500 | Up to 1,500 | 90 | 60 |
And according to Introducing Premium Storage, a local VM disk should perform as follows:
Disk Types | P10 | P20 | P30 |
Disk Size | 128 GB | 512 GB | 1024 GB |
IOPS per Disk | 500 | 2300 | 5000 |
Throughput per Disk | 100 MB/sec | 150 MB/sec | 200 MB/sec |
In our current HA configuration there is a separate Azure Premium Files share for each of POR and GIS roles, while the VM Disk is shared between all roles.
Results
Installation of ArcGIS Enterprise by modifying an existing DSC template worked once the paths were updated correctly.
Read and write speed of the share was testing using the following script:
$testFile = "\\egis-jsh-ds0\share\10MB.bin"
# Get test data
Invoke-WebRequest 'http://client.akamai.com/install/test-objects/10MB.bin' -OutFile $testFile
#$Request=Get-Date; Invoke-WebRequest 'http://client.akamai.com/install/test-objects/10MB.bin' | Out-Null;
$tempDir = "D:\speed-test-temp\"
New-Item -Path $tempDir -ItemType Directory
$Request=Get-Date; Copy-Item $testFile -Destination $tempDir
[int]$speed = ((10 / ((NEW-TIMESPAN –Start $Request –End (Get-Date)).totalseconds)) * 8)
"{0:N2}" -f $Speed
Write-host "$($speed) Mbit/sec"
Remove-Item $testFile -Force
Remove-Item $tempDir -Recurse -Force
The script was modified to run against both our local network share on the DS0 machine, and the Azure Premium File share. The scripts were run from GIS0 and for a single run of this test the results were as follows:
Share | Read speed | Write speed |
---|---|---|
DS0 file share | 1011 Mbit/sec | 1739 Mbit/sec |
Azure Premium Files | 1176 Mbit/sec | 908 Mbit/sec |
The results were surprising as the data disk on DS0 has a stated performance of 500 IOPS and 60MB/s. The Azure Premium File Share has a similar stated performance of 512 IOPS, 90 MiBytes/s egress and 60 MiBytes/s ingress. There are possible networking benefits to being in the same VNET (gis0 and DS0), or there may be caching involved.
Effects on uptime
A first look at uptime has been performed in
TM | Azure LB | WEB | POR | GIS | DS | Azure files | Overall Uptime | Overall downtime/month |
---|---|---|---|---|---|---|---|---|
99.99% | 99.99% | 99.95% | 99.95% | 99.95% | 99.95% | *99.9% | 99.68% | 138.2min |
* Azure Premium Files are currently available as Hot tier, locally redundant storage only. https://azure.microsoft.com/en-in/support/legal/sla/storage/v1_5/. But, a separate document indicates that Azure files offers 99.999999999% yearly uptime for LRS: https://docs.microsoft.com/en-us/azure/storage/files/storage-files-planning#file-share-redundancy
Even so, using the worst case for this analysis.