Migrate a Single Instance for High Availability

Instructions for migrating your Cortex XSOAR single instance deployment to a highly available installation of Cortex XSOAR. High availability.
To migrate a single instance from BoltDB to Elasticsearch with High Availability, there are two steps. First use the Cortex XSOAR migration tool to migrate the database. Then set up additional app servers to achieve high availability.

Migration

The migration tool migrates Cortex XSOAR objects to an Elasticsearch database. When you run the migration tool, the contents of the Cortex XSOAR database are read, and a corresponding object is created in Elasticsearch.
When you run the migration tool, parameter values specified in the demisto.conf file override values supplied for tool flags and default values. If no value exists in the demisto.conf file, values supplied in the tool flags override default values, but do not write the values to the demisto.config file. For example, if the db-path is identified in the configuration file, the tool will use the value in that file, not the value supplied or the default value, when running the tool.
You cannot run more than one migration tool process at a time.
If you are upgrading from Cortex XSOAR 6.0 to 6.1 and you have indicators and audits stored in Elasticsearch in Cortex XSOAR 6.0, upgrade from Cortex XSOAR 6.0 to 6.1 before the migration. Do NOT start the server. Then follow the migration instructions below.
Before you begin, ensure the following:
  • You have an active instance of Cortex XSOAR v6.1.
  • All app servers can communicate with Elasticsearch over port 9200.
  • All app servers have network access to each other over port 443.
Configuration File Parameters
The Elasticsearch object should be a top-level object in the demisto.config configuration file (within the main curly brackets).
Migration Tool Flags
Flag
Type
Description
Required
accounts
(multi-tenant only)
String
A comma-separated list of accounts to migrate. If not specified, all accounts are migrated.
Optional
config-path
String
The path to the configuration file for the server. Default: /etc/demisto.conf.
Optional
db-path
String
The path to the database directory. Default: /var/lib/demisto.
Optional
elasticsearch-batch-size
integer
The number of indicators per batch to write to Elasticsearch indexes. Default: 700.
Optional
elasticsearch-index-prefix
String
The index prefix used in Elasticsearch.
Optional
elasticsearch-key
String
The API key to connect to Elasticsearch.
Required (unless a username and password are used)
elasticsearch-password
String
The password to connect to Elasticsearch.
required(unless API key is used)
elasticsearch-url
String
The URL of your Elasticsearch environment. Default: http://localhost:9200.
Required
elasticsearch-username
String
The username to connect to Elasticsearch.
required(unless API key is used)
ignore-ids-path
String
The path to the file with the IDs to ignore, per object.
Optional
log-level
String
The log level to display. Default: info.
Optional
logfile
String
The location of the log file.Default: /var/log/demisto/elastic_migration.log
Optional
migrate-all
true
By default, the Elasticsearch tool checks existing indexes and migrates only the ones that are new. Using this flag, the Elasticsearch tool migrates all indexes even if they currently exist. This is useful, for example, if there was an error or invalid data that was fixed. When used, the objects-to-migrate and objects-to-ignore flags are ignored.
Optional
objects-to-ignore
String
Comma-separated list of objects not to migrate. When the migrate-all flag is used, this flag is ignored.
Optional
objects-to-migrate
String
Comma-separated list of objects to migrate. When the migrate-all flag is used, this flag is ignored.
Optional
partitions
String
Comma-separated list of partitions to migrate. If no partitions are specified, all partitions are migrated.
Optional
previous-results
Show results of the previous migration.
Optional
skip-accounts
false
Does not migrate multi-tenant accounts. When set to true, only the main tenant or host database are migrated.
Optional
skip-existing-indicators
false
Existing indicators are not modified during the migration.
Optional
version
Prints the migration tool version.
Optional
y
false
Answers yes to all questions, unless there is an error.
Optional
In the BoltDB, data related to incidents and indicators is stored in partitions by month. To minimize downtime during the migration, we recommend you create a copy of the database, then migrate data that is older than three months from the copy, while continuing to work in your current environment. Once the initial migration is completed, you should then migrate the last three months.
  1. Copy the
    demisto.lic
    file from
    /usr/local/demisto
    directory to the
    /var/lib/demisto
    directory.
  2. Add the following entry in the
    demisto.conf
    file:
    license.file.path:"/var/lib/demisto"
  3. Download the migration tool:
    Append
    downloadName=elasticsearch_migration_tool_6_1_0
    to the end of the download link that you received.
  4. Follow migration instructions:
    • If you did not previously store indicators and audits in Elasticsearch, follow the migration instructions for single server deployments.
    • If you used Elasticsearch to store indicators and audits in Cortex XSOAR 6.0 prior to upgrade, ensure the demisto.conf file is up-to-date with the ES object and then Migrate an Existing Elasticsearch Deployment.

High Availability

When working in a high availability configuration, you must define a shared file system, so the standard /var/lib/demisto/ directory is shared between all of the application servers.
If you are implementing high availability and have not configured your load balancer to provide SSL, ensure that you have the same certificates for all the app servers and that the web certificate contains all the app server and load balancer URLs.
  1. Set the app server’s hostname by editing the
    demisto.conf
    file:
    Under the Server object, set the value of the inClusterHostname parameter to the desired hostname.
  2. Verify that the clocks on the app servers are synchronized with an NTP server.

Recommended For You