Sidebar

How can QIE be configured to use High Availability?

+1 vote
757 views
asked Nov 26, 2019 by mike-r-7535 (13,830 points)
How can QIE be configured to use High Availability and what options exist for QIE High Availability?

1 Answer

+1 vote

Starting in version 4.0.47, QIE natively supports High Availability.

A QIE EnterpriseHA configuration allows multiple QIE instances to be clustered together to act as one environment. Each QIE instance connects to the same backend database. A QIE instance can startup and shutdown independently, allowing for OS upgrades and hardware upgrades without downtime of the QIE environment. This makes virtualization and use of container environments ideal, which are heavily used in cloud environments. All QIE instances must be on the same QIE build as the database; automatic and manual updates to QIE are synchronized across instances.

QIE EnterpriseHA requires the use of In-Memory tables supported in MariaDB, MySQL, and MSSQL 2016+. For MariaDB and MySQL, In-Memory tables are available by default. For MSSQL 2016+, the QIE schema must be configured to support In-Memory tables. For setting up the MSSQL 2016+ to setup In-Memory tables, please see https://www.qvera.com/kb/index.php/2265/sql-server-script-create-high-availability-database-for-qie.

With the database selected In-Memory tables configured, there are two options for running QIE in High Availability: EnterpriseHA and EnterpriseHA with RabbitMQ

Once the database is selected and the schema created, a single java argument must be added to the QieLauncher service to run in High Availability:

-Dqie.haEngine=EnterpriseHAServiceImpl

Multiple QIE instances can connect to the same database while in EnterpriseHA.  A message received by a QIE instance will be processed through completion.  A network load balancer can be used to distribute the load for socket based connections.

If running QIE in an HA cluster, the environment can be configured with a primary/failover configuration by setting the ‘qie.instancePriority’ java option on the primary node. Setting the priority to 1 on the primary node will cause all the other nodes to defer the work to the primary node. If the primary node goes down, then the other nodes will start working. Once the primary node comes back, it will automatically take over the processing of messages.


-Dqie.instancePriority=1


The instance priority on all node’s defaults to 99, and they are all equal if not defined by a java option. A QIE cluster can be configured with multiple nodes each with a different priority, giving the cluster a primary/secondary/ect. hierarchy.

In the case of processing large batch files, a QIE instance that consumes the large file does not necessarily need to process each of the individual messages.  To effectively "load balance" these batched files, RabbitMQ can be used for queueing messages between QIE instances.  For more information configuring with RabbitMQ see the following: https://www.qvera.com/kb/index.php/2297/how-can-configured-rabbitmq-high-availability-environment.

NOTE: High Availability is only supported in QIE Enterprise edition.  QIE Standard edition does not support High Availability.

answered Nov 27, 2019 by mike-r-7535 (13,830 points)
edited Apr 7, 2021 by ben-s-7515
...