Deploys a 3 node Percona XtraDB Cluster

Last updated: 16/08/2018

This template deploys a 3 node MySQL high availability cluster on CentOS 6.5 or Ubuntu 12.04

This Azure Resource Manager (ARM) template was created by a member of the community and not by Microsoft. Each ARM template is licensed to you under a licence agreement by its owner, not Microsoft. Microsoft is not responsible for ARM templates provided and licensed by community members and does not screen for security, compatibility or performance. Community ARM templates are not supported under any Microsoft support programme or service, and are made available AS IS without warranty of any kind.


Parameter Name Description
dnsName Connect to your cluster using
userName user name to ssh to the VMs
password password to ssh to the VMs
vmSize size for the VMs
virtualNetworkName Virtual network name for the cluster
dbSubnetName subnet name for the MySQL nodes
vnetAddressPrefix IP address in CIDR for virtual network
dbSubnetAddressPrefix IP address in CIDR for db subnet
vmIP1 IP address for VM1 must be available in db subnet
vmIP2 IP address for VM2 must be available in db subnet
vmIP3 IP address for VM3 must be available in db subnet
vmNamePrefix host name prefix for the VMs
imagePublisher publisher for the VM OS image
imageOffer VM OS name
imageSKU VM OS version
mysqlFrontEndPort MySQL public port
mysqlBackEndPort MySQL private port
idleTimeoutInMinutesforILBRule idel timeout for load balancer
probePort cluster health check probe port exposed to load balancer
probeRequestPath cluster health check probe path
probeIntervalInSeconds health check probe interval
numberOfProbes number of health check probes to consider failure
sshNatRuleFrontEndPort1 public ssh port for VM1
sshNatRuleFrontEndPort2 public ssh port for VM2
sshNatRuleFrontEndPort3 public ssh port for VM3
sshNatRuleBackEndPort private ssh port for the VMs
customScriptFilePath bash file location to configure the cluster
mysqlConfigFilePath my.cnf file location
customScriptCommandToExecute bash script command line
location Location for all resources.

Use the template


New-AzResourceGroup -Name <resource-group-name> -Location <resource-group-location> #use this command when you need to create a new resource group for your deployment
New-AzResourceGroupDeployment -ResourceGroupName <resource-group-name> -TemplateUri
Installing and configuring Azure PowerShell

Command line

az group create --name <resource-group-name> --location <resource-group-location> #use this command when you need to create a new resource group for your deployment
az group deployment create --resource-group <my-resource-group> --template-uri
Installing and configuring the Azure cross-platform command-line interface