Pre-Installation Checks
ImportantTo protect against potential system or user errors during the upgrade, snapshots (backups) should be taken on the relevant servers before starting the process.
Downloading and Preparing New Elasticsearch Version
# The following steps should be performed on the Elasticsearch server to be updated.
# Switch to elasticsearch user to continue operations
sudo su - elasticsearch
cd /opt/elasticsearch
# Download the new Elasticsearch version
sudo wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.29-linux-x86_64.tar.gz
# Extract the downloaded file
sudo tar -xzf elasticsearch-7.17.29-linux-x86_64.tar.gz
# Set file ownership and permissions
sudo chown -Rf elasticsearch:elasticsearch /opt/elasticsearch
sudo chmod -Rf 775 /opt/elasticsearch
Configuring Elasticsearch Parameters for the Environment
1. Copying Configuration File
You need to copy the information from the existing elasticsearch.yml file to the new version.
View the current configuration:
vi /opt/elasticsearch/elasticsearch-7.9.2/config/elasticsearch.yml
Edit the new version configuration file:
vi /opt/elasticsearch/elasticsearch-7.17.29/config/elasticsearch.yml
Copy the content from the existing configuration file to the new file.
Certificate Files (Optional)If your existing Elasticsearch installation uses SSL/TLS certificates, you need to copy these certificates to the new version. # Check the certificate directory
ls -la /opt/elasticsearch/elasticsearch-7.9.2/config/certs/
# If certificate files exist, copy them to the new version
sudo cp -r /opt/elasticsearch/elasticsearch-7.9.2/config/certs /opt/elasticsearch/elasticsearch-7.17.29/config/
# Set file ownership
sudo chown -Rf elasticsearch:elasticsearch /opt/elasticsearch/elasticsearch-7.17.29/config/certs
2. Configuring JVM Parameters
You should configure the JVM (Java Virtual Machine) values and other JVM parameters that Elasticsearch will use according to the existing elasticsearch settings.
View the current JVM settings:
sudo vi /opt/elasticsearch/elasticsearch-7.9.2/config/jvm.options
Edit the new version JVM settings:
sudo vi /opt/elasticsearch/elasticsearch-7.17.29/config/jvm.options
ImportantThe value can be set up to half of the operating system’s RAM and should not exceed 32GB. It should be entered as follows according to the RAM value used by the existing elasticsearch.
Setting Up Elasticsearch as a Linux Service
1. Creating New Service Script File
Create the service script file for the new Elasticsearch version:
sudo vi /opt/elasticsearch/elasticsearch-7.17.29/bin/elasticsearch-service.sh
Paste the following content into the file:
#!/bin/sh
SERVICE_NAME=elasticsearch
PATH_TO_APP="/opt/elasticsearch/elasticsearch-7.17.29/bin/$SERVICE_NAME"
PID_PATH_NAME="/opt/elasticsearch/elasticsearch-7.17.29/bin/$SERVICE_NAME.pid"
SCRIPTNAME=elasticsearch-service.sh
ES_USER=$SERVICE_NAME
ES_GROUP=$SERVICE_NAME
case $1 in
start)
echo "Starting $SERVICE_NAME ..."
if [ ! -f $PID_PATH_NAME ]; then
mkdir $(dirname $PID_PATH_NAME) > /dev/null 2>&1 || true
chown $ES_USER $(dirname $PID_PATH_NAME)
$SUDO $PATH_TO_APP -d -p $PID_PATH_NAME
echo "Return code: $?"
echo "$SERVICE_NAME started ..."
else
echo "$SERVICE_NAME is already running ..."
fi
;;
stop)
if [ -f $PID_PATH_NAME ]; then
PID=$(cat $PID_PATH_NAME);
echo "$SERVICE_NAME stopping ..."
kill -15 $PID;
echo "$SERVICE_NAME stopped ..."
rm $PID_PATH_NAME
else
echo "$SERVICE_NAME is not running ..."
fi
;;
restart)
if [ -f $PID_PATH_NAME ]; then
PID=$(cat $PID_PATH_NAME);
echo "$SERVICE_NAME stopping ...";
kill -15 $PID;
sleep 1;
echo "$SERVICE_NAME stopped ...";
rm -rf $PID_PATH_NAME
echo "$SERVICE_NAME starting ..."
mkdir $(dirname $PID_PATH_NAME) > /dev/null 2>&1 || true
chown $ES_USER $(dirname $PID_PATH_NAME)
$SUDO $PATH_TO_APP -d -p $PID_PATH_NAME
echo "$SERVICE_NAME started ..."
else
echo "$SERVICE_NAME is not running ..."
fi
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
exit 3
;;
esac
Grant execute permission to the script file:
sudo chmod +x /opt/elasticsearch/elasticsearch-7.17.29/bin/elasticsearch-service.sh
sudo chmod -Rf 775 /opt/elasticsearch/elasticsearch-7.17.29/*
2. Updating Systemd Service File
First, stop the current Elasticsearch service:
sudo systemctl stop elasticsearch
Update the systemd service file for the new version:
sudo vi /etc/systemd/system/elasticsearch.service
Write the following content to the file:
[Unit]
Description=ElasticSearch Server
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
Type=forking
ExecStart=/opt/elasticsearch/elasticsearch-7.17.29/bin/elasticsearch-service.sh start
ExecStop=/opt/elasticsearch/elasticsearch-7.17.29/bin/elasticsearch-service.sh stop
ExecReload=/opt/elasticsearch/elasticsearch-7.17.29/bin/elasticsearch-service.sh restart
LimitNOFILE=65536
LimitMEMLOCK=infinity
User=elasticsearch
3. Starting New Elasticsearch Service
# Reload the systemd daemon
sudo systemctl daemon-reload
# Start the new Elasticsearch service
sudo systemctl start elasticsearch
# Check service status
sudo systemctl status elasticsearch
# Enable to start automatically on system boot
sudo systemctl enable elasticsearch