This technical solution design is structured around a layered approach to deliver an optimized SQL Server deployment in Azure. Through the coupling of Azure Virtual Machines to Everpure Cloud Dedicated, this solution addresses performance, scalability, and reliability across distinct compute, network, storage, operating system, and database layers.
Compute Layer
Azure Virtual Machines serve as the compute layer, hosting SQL Server instances on either Windows Server or supported Linux platforms. Azure virtual machines provide scalable compute resources to meet the demands of transactional and analytical workloads.
Key considerations for the compute layer include:
-
Performance optimization: Ensure virtual machines are configured with high-clock-speed processors and sufficient memory to minimize reliance on disk input/output.
-
Scalability: Resources should align with workload demands, scaling virtual machines as required to accommodate growth and performance requirements.
Azure Virtual Machines supports a variety of families optimized for different workload types:
-
E-series: Memory-optimized virtual machines offering up to 672GiB of RAM, ideal for large-scale transactional and analytical workloads.
-
M-series: High-memory virtual machines designed for extreme-scale and mission-critical SQL Server deployments.
-
D-series: General-purpose virtual machines that balance compute, memory, and storage performance, suitable for smaller or moderately demanding workloads.
Network Layer
The network layer ensures secure, low-latency communication between Azure Virtual Machines, Everpure Cloud Dedicated, and client connections. Azure Virtual Network provides the foundation for connectivity, with subnets segmented for specific roles to optimize traffic flow and maintain isolation.
Everpure Cloud Dedicated communicates with Azure Virtual Machines using iSCSI over TCP/IP. This setup requires proper configuration of iSCSI initiators on Azure Virtual Machines to establish secure connections with Everpure Cloud Dedicated volumes.
To minimize latency and enhance security:
-
Deploy Everpure Cloud Dedicated and Azure Virtual Machines with storage protocol (iSCSI for Windows, NVM Express over TCP for Linux) connectivity in the same Azure Virtual Network.
-
Configure dedicated subnets for SQL Server client connections, storage communication, and management traffic.
-
Configure the Azure virtual machine's network interface with accelerated networking.
Effective network design ensures optimal performance, reliability, and security. The following principles guide the configuration:
Azure Virtual Network:
-
Host SQL Server virtual machines and Everpure Cloud Dedicated within a dedicated Azure Virtual Network to ensure isolated and secure communication.
-
Define subnets for specific roles:
-
System subnet: For management and control traffic
-
iSCSI subnet: For storage communication between SQL Server databases and Everpure Cloud Dedicated
-
Application subnet: For client application traffic
-
Network latency and proximity:
-
Deploy SQL Server virtual machines and Everpure Cloud Dedicated in the same Azure region and availability zone to minimize latency and avoid unnecessary network hops.
-
Enable Azure Accelerated Networking to improve throughput and reduce network jitter on SQL Server virtual machines.
Bandwidth recommendations:
-
Configure virtual network interface controllers and Azure Virtual Network to meet the performance demands of SQL Server workloads.
-
Use high-throughput network interface controllers supported by specific Azure Virtual Machines families for data-intensive SQL Server operations.
Efficient communication between SQL Server, Everpure Cloud Dedicated, and client applications require optimized traffic flow and protocol usage:
-
Storage traffic: Use iSCSI over TCP/IP for storage communication. For Linux-based SQL Server deployments, consider NVM Express over TCP for lower latency
-
Application traffic: Configure Azure Virtual Network to support SQL Server listeners for Always On Availability Groups or Failover Cluster Instances. Assign static IP addresses within appropriate subnets to support seamless client traffic routing, dynamic failover, and high availability for SQL Server applications.
To safeguard communication between SQL Server and Everpure Cloud Dedicated, this architecture leverages Azure-native security features:
-
Network security groups: Apply network security groups to Everpure Cloud Dedicated and Azure Virtual Machine subnets to restrict traffic to required ports (for example, port 3260 for iSCSI) and authorized source/destination IPs.
-
Azure Firewall: Optionally deploy Azure Firewall for centralized control and monitoring of network traffic between SQL Server and Everpure Cloud Dedicated.
For detailed guidance, refer to Azure network security best practices and documentation on network security groups, Azure Firewall, and Accelerated Networking.
Storage Layer
The storage layer in this reference architecture integrates Azure managed disks, local ephemeral disks, and Pure Cloud Block Store to optimize SQL Server performance, scalability, and reliability. Azure managed disks are utilized primarily for system databases, ensuring high IOPS and low latency for critical SQL Server system operations. TempDB is deployed on local ephemeral disks to leverage their superior performance characteristics, benefiting workloads that require rapid temporary data operations.
Everpure Cloud Dedicated, itself built on top of managed disk and serves as the primary storage solution for user database data and log files. It delivers data reduction, efficient resource allocation, and consistent performance tailored specifically for SQL Server user workloads.
Everpure Cloud Dedicated is the primary block storage solution for SQL Server user databases, providing enterprise-grade capabilities that optimize performance and reduce storage costs. This layer ensures consistent performance and seamless integration with Azure services.
Storage considerations include:
-
Storage placement: Deploy SQL Server data files (.mdf/.ndf) and log files (.ldf) on separate Everpure Cloud Dedicated volumes to optimize input/output throughput and reduce contention.
-
Snapshot management: Use crash consistent volume snapshots in Everpure Cloud Dedicated for fast, space-efficient backups and rapid recovery. Consider offloading these snapshots to Azure Blob Storage for cost-effective, long-term retention. Application consistency can be achieved through the use of T-SQL database snapshots.
The following table outlines design recommendations for Everpure Cloud Dedicated.
|
Configuration Category |
Design Recommendation |
|---|---|
|
Volume configuration |
|
|
High availability, disaster recovery and data protection |
|
|
Proximity and latency |
|
For more information see the Everpure Cloud Dedicated for Azure Overview.
Azure managed disks complement Everpure Cloud Dedicated by hosting SQL Server system databases and TempDB, critical for database operations and performance.
Key design considerations:
TempDB Configuration: Provision TempDB on Azure Premium SSD v2 or Ultra SSD managed disks to efficiently handle intensive input/output workloads. This aligns with Microsoft's best practices, leveraging the disks' native performance capabilities and ensuring optimal performance under heavy TempDB utilization.
Operating System Layer
The operating system layer serves as the foundation for SQL Server operations, providing the necessary environment to support performance, scalability, and stability. It encompasses key optimizations for file systems, resource management, and input/output handling to maximize the efficiency of SQL Server workloads.
This architecture supports Windows Server and Linux operating systems in line with the requirements for SQL Server, both of which are fully compatible with SQL Server. These operating systems can be deployed on Azure Virtual Machines using templates provided by Azure, which streamlines the setup process.
For details on supported operating systems for SQL Server, refer to the SQL Server hardware and software requirements. Azure templates for deploying these operating systems are available in the Azure Marketplace.
Windows Server best practices include the actions detailed in Table 2.
|
Configuration Category |
Best Practices |
|---|---|
|
Folder structure |
Both virtual and physical disks can use either drive letters or mount points. Make sure to provision specific locations for each database file function in alignment with the following examples:
|
|
File system and disk formatting |
Format all SQL Server volumes with the NTFS file system and a minimum of 64KB allocation units before placing any data on the disks. |
|
Block alignment |
Check if the block alignment is configured properly. See the Windows Server File Systems FAQ for FlashArray knowledge article for more information. |
|
iSCSI Configuration |
Configure iSCSI with a minimum of four sessions per volume for optimal throughput, reliability, and redundancy. This configuration helps maximize network bandwidth utilization and overall storage performance. |
|
Antivirus and threat-detection systems |
The minimum recommendation is to configure antivirus and threat detection, so they exclude files with .mdf, .ndf, .ldf, and .bak extensions. Other folders and files might need to be excluded as well. For more information, see Configure antivirus software to work with SQL Server. |
|
Page file size |
Enable instant file initialization as per Database instant file initialization. |
Linux is only supported as a platform from SQL Server 2017 onwards. Best practices for Linux virtual machines include those detailed in Table 3.
|
Configuration Category |
Best Practices |
|---|---|
|
Disk storage-protocol selection |
While this reference architecture is validated for Windows Server deployments using iSCSI, NVM Express over TCP offers a compelling option for Linux environments, where its benefits align with workload requirements. NVM Express over TCP is recommended for Linux virtual machines to take advantage of:
|
|
Folder structure |
The default folder for all SQL Server data files is /var/opt/mssql. Default folders for data, transaction log, and TempDB files are created during installation:
TempDB files should be migrated to a separate virtual or physical disk to achieve the best performance. The virtual or physical disk can be mounted at the default TempDB location after the files have been migrated to it. Create separate folders for data and transaction log files for any additional user databases. |
|
File system and mount options |
Format virtual disks with the XFS or EXT4 file systems and mount them with the "rw,attr2,noatime" attributes. |
|
Open file limitations |
Set a soft limit of 16,000 and a hard limit of 32,727. |
|
Forced unit access input/ output subsystem capability |
For Linux operating systems that support this capability, configure forced unit access using the commands control.writethrough =1 and control.alternewritethrough = 0. |
|
Disk settings |
|
|
SQL Server |
The Microsoft documentation details out the best practices for SQL Server in Azure virtual machines. |