657481055a | ||
---|---|---|
.. | ||
README.md | ||
azuredeploy-parameters.json | ||
azuredeploy.json | ||
empty-resources.json | ||
jumpbox-resources.json | ||
metadata.json | ||
node-resources.json | ||
redis-cluster-install.sh | ||
redis-cluster-setup.sh | ||
redis-sentinel-startup.sh | ||
shared-resources.json |
README.md
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 example expects the following parameters:
Name | Description | Default Value |
---|---|---|
adminUsername | Administrator user name used when provisioning virtual machines | |
adminPassword | Administrator password used when provisioning virtual machines | |
storageAccountName | Unique namespace for a new storage account where the virtual machine's disks will be placed (cannot be an existing storage account) | |
region | Location where resources will be provisioned | |
virtualNetworkName | The arbitrary name of the virtual network provisioned for the Redis cluster | redisVirtNet |
addressPrefix | The network address space for the virtual network | 10.0.0.0/16 |
subnetName | Subnet name for the virtual network that resources will be provisioned in to | redisSubnet1 |
subnetPrefix | Address space for the virtual network subnet | 10.0.0.0/24 |
nodeAddressPrefix | The IP address prefix that will be used for constructing a static private IP address for each node in the cluster | 10.0.0.1 |
jumpbox | The flag allowing to enable or disable provisioning of the jumpbox VM that can be used to access the Redis nodes | Disabled |
tshirtSize | The t-shirt size of the Redis deployment | Small |
redisVersion | The version of the Redis package to be deployed on the cluster (or use 'stable' to pull in the latest and greatest) | stable |
redisClusterName | The arbitrary name of the Redis cluster | redis-cluster |
Topology
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 10.0.0.10, the second node - 10.0.0.11, and so on)