Elasticsearch Cluster Install on CentOS 7

This post wont go in to any detail around setting up CentOS itself, but it will cover getting a simple 3 node Elasticsearch cluster up and running, with a couple of helpful plugins.

Install Java and check the install

yum install java-1.8.0-openjdk.x86_64 -y
java -version

Download Elasticsearch (check the site here for the latest versions)

cd /tmp
wget https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.2.1/elasticsearch-2.2.1.rpm

Install Elasticsearch

cd /tmp
sudo rpm -ivh elasticsearch-2.2.1.rpm

This results in Elasticsearch being installed in /usr/share/elasticsearch/ with its configuration files placed in /etc/elasticsearch and its init script added in /etc/init.d/elasticsearch

Enable Elasticsearch on Boot

sudo systemctl enable elasticsearch.service

Configure Elasticsearch

vi /etc/elasticsearch/elasticsearch.yml

Add near the top, and replace anything in < > with your details

cluster.name: <name of the cluster>
#below line dynamically sets the node name based on the server hostname
node.name: ${HOSTNAME}
#below binds elasticsearch to the local ( and site ip address (e.g.
network.host: [_site_, _local_]
http.port: 9200
bootstrap.mlockall: true
#below sets the nodes the cluster should find
discovery.zen.ping.unicast.hosts: ["<node1_ip_or_fqdn>", "<node2_ip_or_fqdn>", "<node3_ip_or_fqdn>"]

Restart and Verify Elasticsearch status

sudo systemctl restart elasticsearch.service
sudo systemctl status elasticsearch.service

You should be able to access the node now, on: http://<node-ip>:9200

Optional: Install Elastic-HQ and Head Plugins

cd /usr/share/elasticsearch/
bin/plugin install mobz/elasticsearch-head
sudo bin/plugin install royrusso/elasticsearch-HQ
sudo systemctl restart elasticsearch.service
sudo systemctl status elasticsearch.service

Once installed, you can access these plugins via:
Head = http://<node-ip>:9200/_plugin/head
HQ = http://<node-ip>:9200/_plugin/hq

Additional Nodes:

Repeat the same process on your other servers, you can add more than 3 nodes to the cluster, but if you do make sure you update discovery.zen.ping.unicast.hosts in your Elasticsearch config to include those additional nodes.