|
| 1 | +# Create a two node SQL Server Always On Cluster with SQL 2016 on Windows Server 2016 |
| 2 | + |
| 3 | +This template deploys two SQL Server Enterprise, Standard or Developer instances in an Always On Availability Group. It creates the following resources: |
| 4 | + |
| 5 | +* A network security group |
| 6 | +* A virtual network |
| 7 | +* Four storage accounts (One for AD, One for SQL, One for File Share witness and One for VM diagnostic) |
| 8 | +* Four public IP address (One for AD, Two for each SQL VM and One for Public LB bound to SQL Always On Listener) |
| 9 | +* One external load balancer for SQL VMs with Public IP bound to the SQL Always On listener |
| 10 | +* One VM (WS2016) configured as Domain Controller for a new forest with a single domain |
| 11 | +* Two VM (WS2016) configured as SQL Server 2016 SP1 or SP2 Enterprise/Standard/Developer and clustered (must use the marketplace images) |
| 12 | +* One VM (WS2016) configured as File Share Witness for the cluster |
| 13 | +* One Availability Set containing the SQL and FSW 2016 VMs |
| 14 | + |
| 15 | +## Notes |
| 16 | + |
| 17 | +This template uses Azure Stack Marketplace images. These need to be available on your Azure Stack instance: |
| 18 | + |
| 19 | +* Windows Server 2016 Datacenter Image (for AD and FSW VMs) |
| 20 | +* Choice of SQL Server 2016 SP1 or SP2 on Windows Server 2016 (Enterprise, Standard or Developer) |
| 21 | +* Latest SQL IaaS Extension 1.2.x (currently 1.2.30) |
| 22 | +* Latest DSC Extension (2.76.0, or higher) |
| 23 | +* Latest Custom Script Extension for Windows (1.9.1, or higher) |
| 24 | + |
| 25 | +## Configuration |
| 26 | + |
| 27 | +* Each SQL VMs will have the number and size of data disks specified, of up to 1TiB each. The SQL extension will configured these into a single volume using Storage Spaces. |
| 28 | +* The SQL VMs and the file share witness will be configured in an Availability Set |
| 29 | + * Integrated Systems (fault domains:3, update domains:5) |
| 30 | + * ASDK will automatically use fault domains:1, update domains:1) |
| 31 | +* The template configures the SQL instances with contained database authentication set to true. |
| 32 | +* The *external* DNS suffix for public IP addresses (ASDK default: azurestack.external) |
| 33 | + |
| 34 | +## Parameters |
| 35 | + |
| 36 | +| Parameter Name | Description | Type | Default Value |
| 37 | +| --- | --- | --- | --- |
| 38 | +| _artifactsLocation | Blob store where all deployment artifacts are stored | string | https://raw.githubusercontent.com/Azure/AzureStack-QuickStart-Templates/master/sql-2016-alwayson |
| 39 | +| adminUsername | Admin user for new VMs and domain | string | localadmin |
| 40 | +| adminPassword | Password used for the new admin | securestring | (must be specified) |
| 41 | +| adVMSize | VM size for the domain controller | string* | Standard_D2_v2 |
| 42 | +| witnessVMSize | VM size for the file share witness | string* | Standard_D1_v2 |
| 43 | +| domainName | Name of the new AD domain | string | fabrikam.local |
| 44 | +| dnsSuffix | Name of the Azure Stack instance's external domain | string | |
| 45 | +| virtualNetworkAddressRange | Address range for new VNET in CIDR format | string | 10.0.0.0/16 |
| 46 | +| staticSubnet | Range of addresses from the virtualNetworkAddressRange for static IP allocation | string | 10.0.0.0/24 |
| 47 | +| sqlSubnet | Address range used by the SQL & FSW VMs | string | 10.0.1.0/26 |
| 48 | +| adPDCNICIPAddress | IP address for the AD VM | string | 10.0.0.250 |
| 49 | +| deploymentPrefix | DNS prefix for the public IP addresses | string | aodns |
| 50 | +| virtualNetworkName | Name of the virtual network | string | sqlhaVNET |
| 51 | +| sqlServerServiceAccountUserName | The SQL Server Service Account name | string | sqlservice |
| 52 | +| sqlServerServiceAccountPassword | Password for the service account | secure string | |
| 53 | +| sqlAuthUserName | SQL Server Admin user | string | sqlsa |
| 54 | +| sqlAutPassword | Password for the SQL Server Admin | secure string | |
| 55 | +| sqlStorageAccountName | Name for the SQL Storage Account | string | derived from resource group name |
| 56 | +| sqlStorageAccountType | Standard or Premium Storage | string | Premium_LRS |
| 57 | +| sqlServerOffer | Name of the SQL Offer | string* | SQL2016SP2-WS2016 |
| 58 | +| sqlServerSku | Name of the SKU | string* | Enterprise |
| 59 | +| sqlVMSize | Size of the SQL Server VMs | string * | Standard_DS2_v2 |
| 60 | +| sqlAOAGName | SQL Always On Availability Group Name | string | sqlaa-ag |
| 61 | +| sqlAOListenerName | SQL Always On listener name | string | derived from the resource group name |
| 62 | +| sqlAOListenerPort | TCP port number used by the listener | string | 1433 |
| 63 | +| workloadType | SQL VM Workload (GENERAL, OLTP, DW) | string* | GENERAL |
| 64 | +| vmDiskSize | SQL data disk size (128, 256, 512, 1023) | string | 128 |
| 65 | +| numberOfSqlVMDisks | Number of SQL data disks per server | int | 2 |
| 66 | +| sampleDatabaseName | Sample HA database created during deployment | string | AutoHa-sample |
| 67 | +| autoPatchingDay | Day of the week to download and apply patches | string* | Sunday |
| 68 | +| autoPatchingStartHour | Hour to start patching process | string* | 2 |
| 69 | + |
| 70 | +* parameter has a list of allowed values; please refer to the template. |
0 commit comments