Upgrade EclecticIQ Intelligence Center VM#
This procedure guides you through the platform upgrade process from release 2.9.x to release 2.14.0:
Prepare systems for upgrade#
Follow the instructions in this section to prepare your systems to upgrade the Intelligence Center.
Update repository config#
Edit /etc/yum.repos.d/platform-packages-centos.repo
to update the version number in baseurl
:
# Update this line
baseurl=https://downloads.eclecticiq.com/platform-packages-centos/<target_minor_version>
⚠️ Do not update the version specified in
/etc/yum.repos.d/platform-dependencies-centos.repo
If these files do not exist on your system, see the “Set up the repositories” page for your OS for instructions to create them.
Install Python 3.8#
Release 2.12.0 and newer use Python 3.8.
When upgrading from 2.11 and older to 2.12.0 and newer, you must also install Python 3.8 using EclecticIQ-provided packages.
✅ Installing EclecticIQ-provided Python 3.8 packages installs Python 3.8 alongside the system Python packages.
To do this, follow the instructions on the
“Set up the repositories” page for your OS
to create a platform-dependencies-centos-python38.repo
file on your IC host
before following the rest of the upgrade instructions.
Set environment variables#
Set the following environment variables on your system:
extensions_repo_protocol=https
extensions_repo_domain=downloads.eclecticiq.com
extensions_repo_path=Extensions
extensions_packages=eclecticiq-extension-all~=2.14.0
These are used later when installing extensions.
📔 The version set in
extensions_packages
must only match the minor version of the IC. E.g., for IC 2.9.3,extensions_packages
must be set toeclecticiq-extension-all~=2.9.0
.
Stop the services#
Intelligence Center host#
If the IC instance is distributed across more than one host, carry out these actions only in the machine hosting the eclecticiq-platform-backend-*
components.
Stop all platform services, Kibana, and Statsite:
# Stop platform services, kibana and statsite
systemctl stop eclecticiq-platform-backend-services
systemctl stop eclecticiq-platform-backend-workers
systemctl stop kibana
systemctl stop statsite
Enforce stricter access rights for selected platform files:
chown root:eclecticiq /etc/default/eclecticiq-platform*
chmod 640 /etc/default/eclecticiq-platform*
Back up the IC settings file to restore custom settings, in case they are overwritten during the upgrade:
# Back up platform settings
cp /etc/eclecticiq/platform_settings.py{,.$(date +%s).bak}
Database machines#
Stop all databases and log aggregator components; that is, Elasticsearch, Logstash, PostgreSQL, Neo4j, eclecticiq-neo4jbatcher, and Redis:
systemctl stop elasticsearch
systemctl stop logstash
systemctl stop postgresql-11
systemctl stop neo4j
systemctl stop eclecticiq-neo4jbatcher
systemctl stop redis
Perform the upgrade#
Intelligence Center host#
In the /etc/eclecticiq/platform_settings.py
platform settings configuration file you need to specify:
The address of the machine hosting
eclecticiq-neo4jbatcher
:In
platform_settings.py
browse to theNEO4J_BATCHING_URL
parameter.Assign to
NEO4J_BATCHING_URL
the URL pointing to theeclecticiq-neo4jbatcher
instance.
The temporary location of the data that
eclecticiq-neo4jbatcher
prepares and queues up for ingestion in the graph database:Export the environment variable pointing to the directory where
eclecticiq-neo4jbatcher
stores preprocessed data.In
platform_settings.py
assign the exported value to theGRAPH_INGESTION_SPOOL_DIRECTORY
parameter.
To export the environment variable pointing to the directory where eclecticiq-neo4jbatcher
stores preprocessed data:
NEO4JB_STORAGE_DIR=/var/lib/neo4j/import/tmp/neo4j-batcher
To assign the exported value to the GRAPH_INGESTION_SPOOL_DIRECTORY
parameter in platform_settings.py
:
# Set the location of the preprocessed data in the IC settings
sed -ri 's|^(GRAPH_INGESTION_SPOOL_DIRECTORY\s*=\s*).*$|\1'"'${NEO4JB_STORAGE_DIR}'"'|g' /etc/eclecticiq/platform_settings.py
All machines#
Update all
yum
packages in all machines hosting the IC instance:
# Update all packages
ES_PATH_CONF=/etc/eclecticiq-elasticsearch yum -y upgrade
Ensure Java 11 is installed and used
yum -y install java-11-openjdk-headless tzdata-java
update-alternatives --set java $(readlink -f /usr/lib/jvm/jre-11/bin/java)
Ensure that Elasticsearch, Kibana and Logstash are no longer using the
-oss
packages.
yum reinstall -y elasticsearch kibana logstash eclecticiq-elasticsearch eclecticiq-kibana eclecticiq-logstash
The Elasticsearch configuration path environment variable must point to the location where the Elasticsearch configuration files are stored, in the machine where Elasticsearch is installed: ES_PATH_CONF=/etc/eclecticiq-elasticsearch
.
After completing the update, yum -upgrade
automatically (re)starts the services to load any configuration changes.
The Elasticsearch service may fail to start automatically. This is expected; the upgrade handles it by starting all database services later on in the process (see Start the services — Database machines below).
If you want to manually start it at this point:
systemctl start elasticsearch
Neo4j machine#
If you are upgrading an IC instance installed on a single machine, skip this step.
This step applies only to upgrades of IC instances distributed across two or more machines.
The upgrade package may overwrite the existing neo4j.conf
configuration file for Neo4j.
To restore the custom setting that instructs Neo4j to listen to public interfaces, manually run the command below.
In a two-machines or in a distributed setup, run the following command in the machine where the
eclecticiq-neo4j
package is installed:
echo "dbms.connectors.default_listen_address=0.0.0.0" >> /etc/eclecticiq-neo4j/neo4j.conf
Reinstall the extensions#
By default, the upgrade reinstalls all extensions:
# Uninstall old extensions from venv
/opt/eclecticiq-platform-backend/bin/pip freeze | grep '^eclecticiq-extension-' | grep -v '^eclecticiq-extension-api=' | cut -d= -f1 | xargs -r /opt/eclecticiq-platform-backend/bin/pip uninstall -y
# Install specified extensions in venv
/opt/eclecticiq-platform-backend/bin/pip install $extensions_packages
Start the services#
Database machines#
Start all databases and log aggregator components; that is, Elasticsearch, Logstash, PostgreSQL, Neo4j, and Redis:
systemctl start elasticsearch
systemctl start logstash
systemctl start postgresql-11
systemctl start neo4j
systemctl start eclecticiq-neo4jbatcher
systemctl start redis
Intelligence Center host#
Start Kibana and Statsite.
Do not start the IC services, yet:
# Start kibana and statsite
systemctl start kibana
systemctl start statsite
Manually compare
/etc/eclecticiq/platform_settings.py
with the file with the same name, a timestamp, and a.bak
extension; restore any overwitten custom settings, if necessary.
Database migrations#
As a last step in the IC installation process, you must run the database migration scripts.
Important
To complete the installation procedure, make sure you run the database migrations before continuing with the other configuration steps.