Tableau Server - Enabling Performant High-Availability (PHA)
One of many attributes of Tableau Server that has been historically praised is its ease of setup and maintenance. Set up a machine, run the installer, set up a service account, and you’re good to go. Using a public cloud like Amazon’s AWS or Google Cloud? Then it’s even easier, as these platforms now offer an (almost) one-click solution to spin up a default Tableau Server environment in minutes.
If your team has already found success in fostering a Tableau-forward culture at your organization, have an active developer community in your Slack or Teams, and have an established and formal devops process in place: first off - congrats! Secondly, you may have started to think about how to ensure that your environment maintains a proper enterprise-level uptime now that you are maintaining enterprise-level insights that are critical to running your business.
If you’ve encountered an outage before during the middle of the night, with colleagues blowing up your phone (or even worse, clients,) you know exactly what I’m talking about. Once you establish trust in your data, the next step is to establish trust in your infrastructure - the confidence in your clients and colleagues to know that their data will be available when they need it.
Background
The setup for High-Availability (HA) requires at least a three-node cluster. There is an initial node and two worker nodes with a few shared services that provide redundancy in case of failure on one of the nodes. A snippet of Tableau’s recommended architecture for a three-node cluster is below.
Enabling PHA for Tableau server requires two configuration changes (in order of importance):
Enabling high availability with redundant services on at least two nodes (VizQL and Backgrounder are two resource-intensive services, but there are other redundant services required as well)
Complete isolation of high-compute (VizQL or Backgrounder) services on each node
Applying the Solution
To maintain a performant environment during failover, you need a minimum of four Tableau Server nodes.
Two nodes with VizQL Services and no Backgrounders (and no other services to be maximally performant)
Two nodes with Backgrounders and no VizQL
A simplified example of high-availability architecture optimizing for VizQL performance is shown in the image above. All services that are non-dashboard rendering are isolated to their own nodes, while the VizQL services are isolated as much as possible from other services.
This solution can be applied in a few easy steps:
Navigate and log in to the Tableau Services Manager (TSM) at https://<servername>:8850
Click on the configuration tab
From this screen, you can add nodes, process, change process counts, etc.
Once you’re finished, click Apply Changes and Restart on the upper right corner
Key Takeaways
Compared to the standard HA architecture, this solution:
Reduces resource contention between the demanding VizQL and Backgrounder services, compared to a single-node or three-node HA configuration
Enables HA with isolated VizQL and Backgrounder task queues
And most importantly: Even in the event of single node failure, VizQL and Backgrounder isolation is maintained.
As your organization (and Tableau Cluster usage) grows, this multi-node architecture allows independent scaling of your VizQL or Backgrounder services, without them impacting each other.