====== Install Elastic Search ======
First, make sure that all of the latest patches are installed.
sudo apt update
sudo apt dist-upgrade
sudo reboot
Configure Firewall:
sudo ufw allow ssh
sudo ufw allow 9200/tcp
sudo ufw allow 9300/tcp
sudo ufw enable
Install [[linux:install:java]]
Add the Elastic Search Key and Software:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
VERSION=7
CLUSTERNAME=escluster-1
cat > /tmp/elastic-$VERSION.x.list << EOF
deb https://artifacts.elastic.co/packages/$VERSION.x/apt stable main
EOF
sudo mv /tmp/elastic-$VERSION.x.list /etc/apt/sources.list.d/
sudo apt update
sudo apt install -y elasticsearch=$VERSION.\*
# If some software requires a specific version of elasticsearch, hold the package from upgrades:
sudo apt-mark hold elasticsearch
Configure the ElasticSearch configuration:
sudo sed -i "s/#cluster.name: my-application/cluster.name: $CLUSTERNAME/g" /etc/elasticsearch/elasticsearch.yml
sudo sed -i "s/#node.name: node-1/node.name: $CLUSTERNAME-1/g" /etc/elasticsearch/elasticsearch.yml
sudo sed -i "s/#network.host: 192.168.0.1/network.host: [_eth0_, _local_]/g" /etc/elasticsearch/elasticsearch.yml
sudo sed -i "s/#cluster.initial_master_nodes: \[\"node-1\", \"node-2\"\]/cluster.initial_master_nodes: \[\"$CLUSTERNAME-1\"\]/g" /etc/elasticsearch/elasticsearch.yml
Start ElasticSearch Server, configure it to automatically start and validate the service is running:
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
curl http://localhost:9200
===== Elasticsearch Data Role =====
If you are creating an Elasticsearch cluster using client, master, and data roles or a single Elasticsearch server which includes all of these roles, you should execute the below on servers that have the data role as ElasticSearch uses a lot of memory-mapped files for indexing so we need to increase the limits allowed by the OS and the JVM:
head -n -1 /etc/security/limits.conf > /tmp/limits.conf
cat >> /tmp/limits.conf << EOF
* soft nofile 64000
* hard nofile 64000
root soft nofile 64000
root hard nofile 64000
# End of file
EOF
sudo cp /tmp/limits.conf /etc/security/limits.conf
cat /etc/pam.d/common-session > /tmp/common-session
cat >> /tmp/common-session << EOF
session required pam_limits.so
EOF
sudo cp /tmp/common-session /etc/pam.d/common-session
cat /etc/pam.d/common-session-interactive > /tmp/common-session-interactive
cat >> /tmp/common-session-interactive << EOF
session required pam_limits.so
EOF
sudo cp /tmp/common-session-interactive /etc/pam.d/common-session-interactive
# Give Elasticsearch half of the memory of the server
awk '{ printf "%.2f", $2/1024/1024 ; exit}' /proc/meminfo
sudo sed -i "s/-Xms1g/-Xms`awk '( $1 == "MemTotal:" ) { printf "%.0f", ($2/1024/1024)/2 ; exit }' /proc/meminfo`g/g" /etc/elasticsearch/jvm.options
sudo sed -i "s/-Xmx1g/-Xmx`awk '( $1 == "MemTotal:" ) { printf "%.0f", ($2/1024/1024)/2 ; exit }' /proc/meminfo`g/g" /etc/elasticsearch/jvm.options
sudo swapoff -a
cat > /tmp/elasticsearch.conf << EOF
[Service]
LimitMEMLOCK=infinity
EOF
sudo mkdir /etc/systemd/system/elasticsearch.service.d
sudo cp /tmp/elasticsearch.conf /etc/systemd/system/elasticsearch.service.d/elasticsearch.conf
sudo reboot
====== ======
----
\\
Last Updated: April 15, 2020