This template creates a loadbalanced ElasticSearch cluster running on Windows 2012.
This template deploys a Storage Account, Virtual Network, Public IP addresses, Load Balancer, Virtual Machines, Availability Set and a Network Interface. The loadbalancer is also set up and exposes RDP ports (on the first two nodes) as well as port 9200.
Since it exposes the ElasticSearch cluster over the load balancer on port 9200 you may want to look at adding some layer of security in. After deployment you can visualize the cluster by browsing to: http://<public_ip>:9200/_plugin/head/.
It will use provision the resources and then on each VM it will run a powershell script that does the following:
- Format the provisioned data disk.
- Download and install the jdk - this will have to be from a location you place it.
- Download and install ElasticSearch
- Install the head plugin to make it easier to visualise the cluster
- Modify the ElasticSearch config to set up the cluster so all the nodes can talk to each other.
- Modify each node VM firewall to allow the right ports.
Below are the parameters that the template expects
Name | Description |
---|---|
storageName | Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed |
nodeAdminUsername | Username for the Virtual Machines |
nodeAdminPassword | Password for the Virtual Machine |
dnsName | Unique DNS Name for the Public IP (dnsName.westus.cloudapp.azure.com) |
location | location where the resources will be deployed |
vnetName | Name of Virtual Network |
nodeSize | Size of the Virtual Machine Instance |
vnetPrefix | Virtual Network Address Prefix
|
vnetSubnet1Name | Name of Subnet 1
|
vnetSubnet1Prefix | Address prefix for Subnet 1
|
subscriptionId | Your Azure Subscription Id |
storageType | Storage redundancy type |
nodeStorageAccountContainerName | Name for the container to place the vhds in |
nodeSourceImageName | Image name to use for node vm |
publicIpAddressName | Name of public ip address |
publicIpAddressType | Type of public ip address |
nodes | Total of how many nodes you want |
nodeIpAddresses | Array of internal ip addresses for each node |
nodeIPAddressesString | A comma separated list of the values in nodeIpAddresses for passing to powershell script |
clusterName | Name for the elasticsearch cluster |
dataDiskSize | Size of data disk for ES to run on in GB |
jdkInstallerLocation | Location of jdk installer exe |
elasticSearchInstallerLocation | Location of elasticsearch installer zip |