Tableau Server 10.5 Beta on Linux: Adding an additional node.

Update: As of 15th of January 2018, Tableau 10.5 has been released I have updated links to the online help.

One of the great things around cloud deployments is the ability to stand infrastructure up in next to no time.  Literally a few clicks and your done…and then you can get to the more interesting stuff.

And this means we can play… 🙂

The Linux version of Tableau Server comes with the new Tableau Services Manager which has been announced in conjunction with the Linux release – expect to see a Windows variant coming soon.  TSM is planned to replace the well known versions (currently on Windows) of:

  • Tableau Server Configuration utility
  • tabadmin command line utility
  • Tableau Server Monitor

Since it’s separate to the core Tableau processes,  its operational even before the main Tableau Services are running allowing a much easier way to manage your server nodes in a Tableau context and is especially handy in Linux + Cloud environments.  Think of this when managing multiple environments, easier demand scaling, ability to script and looking after a mixed Linux/Windows setup 🙂

For this exercise, again we have not considered security, and you should refer to the Tableau online help guide if you need more information in regards to this.

Check your AWS Security Groups.  For this setupI have opened all ports – but for your specific scenario you will want to consider the ports.



In this scenario we have a Primary Tableau Server node running and due to demand we now require additional ‘grunt’ to service our expanding user requirements.

Scale - additional node-2017-11-11_15-30-20.gif

So the basic arrangement is an existing node running Tableau Services and then add an additional node, re-balance the Tableau Server processes across the nodes to handle the new demand.


Once we have the additional node, we want to balance the Tableau Services or resources running across the nodes to optimize for performance.

These resources as shown below are covered in detail here so I won’t go through them all.  Suffice to say we can run multiples of these across multiple nodes to optimize Tableau’s performance.

Current Linux Server processes - 2017-11-07_13-38-37.png

Jump back onto your Primary node and generate the bootstrap file.  This node configuration or bootstrap file contains the configuration details that the secondary node needs to configure itself as a member node.  Please note that the node-configuration file contains keystore information as outlined here and as a result you may want to look at securing this file.

In my case, I’ll just generate the node-configuration (or bootstrap) file as is:

tsm topology nodes get-bootstrap-file --file cluster_bootstrap.json

Copy the bootstrap config from the primary node.  I used WinSCP to login to both instances and then used the “Duplicate” function to copy the “cluster_bootstrap.json” file from the primary node to the secondary node.

WinSCP Duplicate.png

On the secondary node, Install Tableau Server from the installer (rpm) file.

sudo yum install tableau-server-10.5-beta5-1.x86_64.rpm -y

Run the configuration, note the ‘-b cluster_bootstrap.json’ option.

sudo /opt/tableau/tableau_server/packages/scripts.10500.17.1030.1652/initialize-tsm -b cluster_bootstrap.json -u centos --accepteula

Jump on the Primary Node and check to see if the new node appears.  You can also jump into Tableau Server’s web interface:

tsm topology list-nodes -v
New node -2017-11-10_23-09-26.png

Note the “node16” node which was added to the primary node (node1) to create the Tableau Server cluster

Now it’s time to distribute the resources we have to the available node.  For our scenario, lets optimize this for a heavy extract environment  as outlined in the Performance Tuning examples.  Please note that the configurations listed are examples and as mentioned, it’s best to use these as starting points for tuning your specific environment.

Optimized for user traffic - 2017-11-10_23-14-46.png

Make sure you’re on the Primary Node and then run the following:

tsm topology set-process -n node16 -pr clustercontroller -c 1
tsm topology set-process -n node16 -pr gateway -c 1
tsm topology set-process -n node16 -pr backgrounder -c 4
tsm topology set-process -n node16 -pr cacheserver -c 2
tsm topology set-process -n node1 -pr backgrounder -c 0
tsm topology set-process -n node1 -pr vizqlserver -c 2
tsm topology set-process -n node1 -pr cacheserver -c 2
tsm topology set-process -n node1 -pr dataserver -c 2
tsm pending-changes apply

Below is the newly configured cluster once Tableau finishes applying the configuration.

newly configured processes-2017-11-10_23-28-26.png