Deploying Tableau Server to Linux - A Survivors Tale

To the Linux user - I apologise, I think its plain to see, that I’m a fan of the safety net that MS has built in Windows

Have you ever deployed Tableau Server to a Windows Stack? I mean actually deployed the server, rather than spin-up a pre-configured image from either Tableau Cloud, or those available in Amazon Web Services, MS Azure, Alibabba or Google Cloud Platform.

Regardless as to whether you have or you haven’t, the simple fact of both Microsoft and Apple is that software installation is easy.

The purpose of the operating system is to provide software the means to communicate with, and the ability to use the available hardware resources, using what can really only be described as magic and luck - and a shed load of shared libraries and hardware drivers.

Granted, Tableau Server isn’t yet available for MacOS, but it is available for the Windows Server stack, and the install is a breeze on account of these libraries: snippets of code that provide the connection and communication layer, that software makers can reference, instead of actually needing to bundle additional code into the software.

The sad thing is though that many of these libraries aren’t always used, and even the ones that are, often try to take on too many tasks, such that due to this multi-use / multi-function process, some heavily used libraries can take more resource in their normal function that is actually necessary, resulting in a perceived ‘bloat’ effect and memory leaks.

So whilst the book on a Tableau to Windows Server deployment expects the server to be mostly deployed in the space of 20 minutes, this can easily extend to 2-or-more hours with a Linux install..

Whoa! What was that? 2+ hours? Why??!

Well, about those libraries.

You see, a Windows Server install is simply:

  1. Execute the installer

  2. Define a bunch of configurables during pre-install

  3. Installer auto-deploys the server and configuration based on your earlier definitions

  4. Final end-user steps handled through TSM and then at site level - these are unavoidable steps needing to be done regardless of where you have deployed to, especially in the case of Tableau Cloud

Its those libraries that make all this possible, as the Tableau developers were able to make use of them from the outset.

And Linux is actually no different: the software devs are still heavily reliant on libraries in Linux too, to handle the communication between the software to the hardware, but, and this is a BIG but, with Windows, those libraries are already (mostly) present during a vanilla install, so you can deploy Windows Server, and then, right off the back of the install, without doing anything more, get straight on with deploying Tableau Server; and have both a server OS, and Tableau Server up and running in under an hour (circa 20 mins for Tableau Server).

But, where Windows makes this a veritable breeze, Linux - well, Linux is a bit more work. You see, with Linux, you need to first identify which libraries you actually need - these are not installed by default; obtain them and install. And then the fun really begins, as installation just isn’t straightforward with Linux that it is with Windows.
You need to be very aware of your environment from the outset, the hardware capabilities, and whether the hardware is enough to meet your requirements now + 25% headroom for scale-up over the next 12 months. If not, its worth making this investment now, rather than when you’re close to running out of space.

And then, once you’ve designed a configuration to suit your hardware environment, and obtained and installed the libraries that Tableau Server shall need, its time to write your install script - how’s your sudo code skill?

sudo - the Linux command line - used for pretty much most Linux tasks in much the same way that the Windows command line or increasingly, PowerShell is actually used under-the-hood once you hit ‘begin’ within the executable

If it helps, the helpful guys over at Tableau have pulled together a great kb walkthrough on this: https://help.tableau.com/current/server-linux/en-us/plan.htm and then https://help.tableau.com/current/server-linux/en-us/install_config_top.htm

Ingredients:

Recipe:

Download the correct installation package (.deb or .rpm depending on linux), these commands will pull
in the required dependencies as well

For RHEL:

# sudo yum install ./Tableau-server-<version>.x86-64.rpm

For Ubuntu:

# sudo apt install gdebi-core (install separate helper package) # sudo gdebi -n tableau-server-<version>_amd64.deb

And then to initialise the server:

Online / Offline Server activation:
Authorisation-to-Run Service (ATR).
Tableau Server will be configured to periodically ‘phone-home’ to check for a valid authorisation to continue to be used. But for offline activations or where this phone-home functionality cannot be used, adding the additional switch

--no-activation-service

Will disable this function.

Please thorough read through the information surrounding ATR here: Activate Tableau Server Using the Authorisation-To-Run (ATR) Service - Tableau.

Tableau recommends using the Server authorization-to-run (ATR) service to simplify server licensing. Choosing to not use Server ATR, will switch to the legacy licensing technology which does not provide the dynamic management capabilities of Server ATR; and once configured cannot be changed without complete removal of the server and a new install

# cd /opt/tableau/tableau_server/packages/scripts.<version_code>/ # sudo ./initialize-tsm --accepteula

(Optional) Disabling ATR

Once you’ve initialised tsm, the rest of the install process follows Windows:

  1. Log out and back in again to get the new session variables

  2. Log into the tsm UI and continue as with Windows installation

  3. After this the server is up and running. Some drivers might need to be manually installed, but the instructions are available on the Tableau drivers page.

  4. The TSM UI and commands are exactly the same to configure the server.