Clustered server deployments
Large companies often opt for clustered server deployments, where several Spotfire Servers share a database and work together to carry out the server tasks.
- Failover protection if a server goes down.
- Scalability for the growing organization.
- Better performance in a system that handles a high volume of work.
Clustering is enabled by default in Spotfire Server.
You must have at least one working Spotfire Server before you configure the cluster.
Configuration
Usually a load balancer is added to the clustered deployment, in front of the servers, to help distribute the workload, but this is not required. The load balancer you choose must support session affinity; this means that after a session has been established, the load balancer continues to route all requests from a particular client to a particular server. To be able to analyze streaming data in web clients, the load balancer must support WebSockets from the web client to the Spotfire Servers. Companies must supply their own load balancer.
A cluster may also contain multiple Spotfire Servers that can be accessed individually through their URLs, but share the same set of node managers.
Apache Ignite
Clustering is implemented using Apache Ignite. Apache Ignite clustering requires no manual configuration. It provides TLS version 1.2 for communication and a fast clustering solution. In addition, it looks for specific nodes by using their IP address, rather than discovering any node that communicates using multicasting.
PortsBy default, Apache Ignite uses these three ports:
- 5701 (this base value is configurable)
- 5702 (base value + 1)
- 5703 (base value +2)
Multiple network interfaces
If there are multiple network interfaces, and at least one of these network interfaces is not reachable from all the nodes and servers in the cluster, you must configure each server and node manager to use a specific address/network interface.
To configure the correct address/network interface for servers to use, set the addresses property during server configuration; see Creating the bootstrap.xml file. Otherwise, use the set-addresses command to set the correct address/network interface for the servers; see set-addresses.The correct address/network interface for node managers to use must be set when you install each node manager. For a Windows node manager, this is set on the Network Names page of an interactive installation, or the NODEMANAGER_HOST_NAMES in a silent installation. For a Linux node manager, set the NODEMANAGER_HOST_NAMES in the post-installation script.
Session clustering (for failover)
Session clustering enables users to continue their work without interruption even if a server goes down or must be restarted.
The sessions are stored in a shared in-memory store, so there must be at least one additional server online (within the same site) for the session to be kept. Note that there is no persistent storage available, so if all servers in a site are restarted at the same time, then the sessions will be lost.
The end-user will normally not notice that a session is handed over to another server, with the following exceptions:
- If the user had an ongoing execution of an information link on the server that went down.
- If the user was saving to or opening anything from the library on the server that went down.
- If an administrator user was deploying packages (using the Deployment & Packages app).
clustering.session-clustering.enabled
configuration
property to false (the default is true), using the
set-config-prop command:
config export-config --force
config set-config-prop -n clustering.session-clustering.enabled -v false
config import-config -c "Disabled session clustering"
Upgrading
Upgrading to a new version of Spotfire Server automatically switches any existing clusters to Apache Ignite clustering, if the old server environment was based on an earlier solution.
- Setting up a cluster of Spotfire Servers
Some deployments that include clustered Spotfire Servers are very complex, and their installation and configuration are best left to a Spotfire consultant. However, if you plan to do it yourself, follow these guidelines. - Configuring NTLM for a cluster of Spotfire Servers
To configure NTLM for clustered servers, first set the options common to all the servers and then set the server-specific options. - Kerberos authentication for clustered servers with load balancer
In a clustered environment where Kerberos authentication is used to authenticate users, the load balancer forwards all Kerberos authentication information to the Spotfire Servers. No configuration on the load balancer is needed, but there are certain considerations to take into account when Kerberos authentication is set up. - X.509 client certificates for clustered servers with load balancer
When using X.509 client certificate authentication in a clustered environment, the clients see the load balancer as the server. The load balancer must therefore be provided and configured with a server certificate and its private key. - Terminating TLS in a load balancer or reverse proxy
By providing some parameters in the HTTP Tomcat connector, present in server.xml, you can make the server behave as if it uses HTTPS (e.g, set secure cookies etc.), even when the server itself has not been configured with HTTPS. - Streaming and WebSockets for load balanced servers
When using a load balancer in front of a cluster of Spotfire Servers, depending on the load balancer’s idle connection timeout, either the Spotfire Server configuration propertyservices.webplayer.websockets.client-heartbeat-interval-seconds
(default is 25 seconds) or the load balancer’s timeout setting needs to be adjusted so that WebSocket connections are not closed prematurely. Some load balancers might require special handling of the WebSocket protocol upgrade mechanism. Spotfire web client WebSockets are established on /spotfire/wp/ws. - Enabling health check URL for load balanced servers
When using a load balancer in front of a cluster of Spotfire Servers, a health check URL can be set up to show the status of the servers. - Configuring shared import and export folders for clustered deployments
From the Library Administration tool in Spotfire Analyst, you can import and export library content. The import and export files are stored in a folder specified in the Spotfire Server configuration. In a clustered environment, where the client could be communicating with any of the servers, steps must be taken to ensure that the import and export files are always stored in the same folder.
- Setting up a cluster of Spotfire Servers
Some deployments that include clustered Spotfire Servers are very complex, and their installation and configuration are best left to a Spotfire consultant. However, if you plan to do it yourself, follow these guidelines. - Configuring NTLM for a cluster of Spotfire Servers
To configure NTLM for clustered servers, first set the options common to all the servers and then set the server-specific options. - Kerberos authentication for clustered servers with load balancer
In a clustered environment where Kerberos authentication is used to authenticate users, the load balancer forwards all Kerberos authentication information to the Spotfire Servers. No configuration on the load balancer is needed, but there are certain considerations to take into account when Kerberos authentication is set up. - X.509 client certificates for clustered servers with load balancer
When using X.509 client certificate authentication in a clustered environment, the clients see the load balancer as the server. The load balancer must therefore be provided and configured with a server certificate and its private key. - Terminating TLS in a load balancer or reverse proxy
By providing some parameters in the HTTP Tomcat connector, present in server.xml, you can make the server behave as if it uses HTTPS (e.g, set secure cookies etc.), even when the server itself has not been configured with HTTPS. - Streaming and WebSockets for load balanced servers
When using a load balancer in front of a cluster of Spotfire Servers, depending on the load balancer’s idle connection timeout, either the Spotfire Server configuration propertyservices.webplayer.websockets.client-heartbeat-interval-seconds
(default is 25 seconds) or the load balancer’s timeout setting needs to be adjusted so that WebSocket connections are not closed prematurely. Some load balancers might require special handling of the WebSocket protocol upgrade mechanism. Spotfire web client WebSockets are established on /spotfire/wp/ws. - Enabling health check URL for load balanced servers
When using a load balancer in front of a cluster of Spotfire Servers, a health check URL can be set up to show the status of the servers. - Configuring shared import and export folders for clustered deployments
From the Library Administration tool in Spotfire Analyst, you can import and export library content. The import and export files are stored in a folder specified in the Spotfire Server configuration. In a clustered environment, where the client could be communicating with any of the servers, steps must be taken to ensure that the import and export files are always stored in the same folder.