Find file History
Latest commit b1340cc Aug 22, 2016 @ahmetalpbalkan ahmetalpbalkan CustomScript rollout - stage #3
See #2340 for more context.

Install a Redis cluster on Ubuntu Virtual Machines using Custom Script Linux Extension

This template deploys a Redis cluster on the Ubuntu virtual machines. This template also provisions a storage account, virtual network, availability sets, public IP addresses and network interfaces required by the installation. The template also creates 1 publicly accessible VM acting as a "jumpbox" and allowing to ssh into the Redis nodes for diagnostics or troubleshooting purposes.


The deployment topology is comprised of numberOfInstances nodes running in the cluster mode. The AOF persistence is enabled by default, whereas the RDB persistence is tuned to perform less-frequent dumps (once every 60 minutes). For more details on Redis persistence options, please refer to the official documentation.

The following table outlines the VM characteristics for each supported t-shirt size:

T-Shirt Size VM Size CPU Cores Memory # of Masters # of Slaves Total # of Nodes
Small Standard_A1 1 1.75 GB 3 0 3
Medium Standard_A2 2 3.5 GB 3 3 6
Large Standard_A5 2 14 GB 3 6 9

In addition, some critical memory- and network-specific optimizations are applied to ensure the optimal performance and throughput.

NOTE: To access the individual Redis nodes, you need to enable and use the publicly accessible jumpbox VM and ssh from it into the Redis instances.

Known Issues and Limitations

  • SSH key is not yet implemented and the template currently takes a password for the admin user
  • Redis version 3.0.0 or above is a requirement for the cluster (although this template also supports Redis 2.x which will be deployed using a traditional master-slave replication)
  • A static IP address (starting with the prefix defined in the nodeAddressPrefix parameter) will be assigned to each Redis node in order to work around the current limitation of not being able to dynamically compose a list of IP addresses from within the template (by default, the first node will be assigned the private IP of, the second node -, and so on)