Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Dec 21, 2022 9:59:01 AM
Aug 14, 2020 6:00:00 AM
Qlik Alerting for Windows supports multi-node environments from the September 2020 release. This document is intended to offer an example of setting up a multi-node instance of Qlik Alerting using external Redis and MongoDB database instances that can be made resilient through their own native capabilities.
A multi-node setup is not for every customer as it requires more knowledge on the part of the organisation to setup and maintain. The key benefits are:
What will you need to setup a multi-node architecture
In this example, and assuming you are following this initially as a proof of concept, I would suggest you follow the documents to setup MongoDB and Redis on external linux machines as per the links below
Install MongoDB on an external Linux server for Qlik Alerting
Install Redis on an external Linux server for Qlik Alerting
Multi Node Architecture
The Qlik Alerting for Windows setup is reasonably simple to configure for a multi-node environment. The complexity is really outside of the Qlik Alerting install and relates to the setting up and maintenance of resilient MongoDB and Redis instances and the setup of an external load balancer for users to access the front end.
Architecture diagram
Components
What does the Load Balancer do
The load balancer is used to direct access to the web UI, extension and API calls to the appropriate / most available server. It acts as the single entry point to the cluster and would typically be setup to be resilient on it's own.
How does this setup manage the allocation of backend tasks (scans, notifications etc)
Backend tasks are identified and pushed into the queue in Redis. Each node will take from the queue as required and the action completed by that node. When a node has taken the item from the queue it is removed and therefore the same action will not be duplicated on another node.
Setup a multi-node Qlik Alerting for Windows site
Setup a load balancer using Nginx
The below steps are the setup I used to create a simple load balancing node using Nginx which will allow you to test the load balancing and monitor which calls go to which server.
Steps for follow:
Copy and paste the following into this file
log_format upstreamlog '$server_name to : $upstream_addr [$request]';
upstream backend {
server qa-node1.domain.com;
server qa-node2.domain.com;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
access_log /var/log/nginx/access.log upstreamlog;
location / {
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_next_upstream error timeout invalid_header http_500;
proxy_connect_timeout 5s;
proxy_pass http://backend;
}
}
IMPORTANT!
Additional resources
Nginx setup resources
Nginx SSL configuration resources