Tableau Server Enterprise Deployment Guide
Tableau Server Enterprise Deployment Guide
Deployment Guide
Contents
Tableau Server Enterprise Deployment Guide 1
Version 2
Highlight features 2
Licensing 3
Security measures 5
Load-balancers 6
Application tier 7
Data tier 7
PostgresSQL Repository 10
Tableau Software i
Tableau Server Enterprise Deployment Guide
Subnets 16
Web tier 16
Application tier 16
Data tier 17
Bastion 17
VPC configuration 22
Configure VPC 23
ii Tableau Software
Tableau Server Enterprise Deployment Guide
Load balancer 28
Directory structure 30
Tableau Server 30
Bastion host 31
PostgreSQL versioning 34
Install PostgreSQL 36
Configure Postgres 36
Configure processes 51
Configure Node 2 52
Configure Node 3 53
Configure Node 4 59
Perform backup 60
Configuration overview 65
iv Tableau Software
Tableau Server Enterprise Deployment Guide
Prepare Environment 66
Wizard configuration 74
Verify connectivity 77
Tableau Software v
Tableau Server Enterprise Deployment Guide
Step 3: Enable "external SSL" for Tableau Server and apply changes 96
Step 4: Update the gateway configuration JSON file and start tsm 96
vi Tableau Software
Tableau Server Enterprise Deployment Guide
Validate TLS 99
Optional: Enable certificate trust validation on Tableau Server for Postgres SSL 103
switchto 113
Goal 125
Requirements 127
versions.tf 129
key-pair.tf 129
locals.tf 129
providers.tf 130
elb.tf 130
variables.tf 131
modules/tableau_instance/ec2.tf 131
Tableau Software ix
Tableau Server Enterprise Deployment Guide
x Tableau Software
Tableau Server Enterprise Deployment Guide
In this deployment, security is at the forefront of all design decisions and implementation.
However, reliability, performance, and scalability are also priority requirements. Given the dis-
tributed and modular design of the reference architecture, reliability and performance scale in
a linearly predictable way by strategically co-locating compatible services at each node and
adding services at chokepoints.
Tableau Software 1
Tableau Server Enterprise Deployment Guide
l Industry deployment best practices
l Secure deployment by default
The EDG is an implementation guide for deploying the enterprise reference architecture.
While this version of the EDG includes an example AWS/Linux implementation, the Guide
can be used as a resource by experienced enterprise IT administrators to deploy the pre-
scribed reference architecture into any industry standard data center environment.
Version
This version of EDG was developed for the 2021.2.3 version (or later) of Tableau Server.
While you may use the EDG as a general reference for deploying older versions of Tableau
Server, we recommend that you deploy the reference architecture with Tableau Server
2021.2.3 or later. Some features and options are not available on older versions of Tableau
Server.
For the most up-to-date features and improvements, we recommend deploying EDG with
Tableau Server 2022.1.7 and later.
The reference architecture described in this Guide supports the following Tableau
clients: Web authoring with compatible browsers, Tableau Mobile, and Tableau Desktop ver-
sion 2021.2.1 or later. Other Tableau clients (Tableau Prep, Bridge, etc) have not yet been
validated with the reference architecture.
Highlight features
The first version of the Tableau Server reference architecture introduces the following scen-
arios and features:
2 Tableau Software
Tableau Server Enterprise Deployment Guide
l Zero trust deployment: Because all traffic to Tableau Servers is pre-authenticated, the
entire Tableau deployment operates in a private subnet that does not require a trusted
connection.
l External repository: The reference architecture specifies installing the Tableau repos-
itory onto an external PostgreSQL database, allowing DBAs to manage, optimize, scale,
and back up the repository as a generic database.
l Initial node recovery: The EDG introduces a script that automates initial node res-
toration in the event of a failure.
l Tar-based backup and restore: Use familiar tar backups at strategic milestones of the
Tableau deployment. In the event of a failure or deployment misconfiguration, you can
quickly recover to the previous deployment stage by recovering the associated tar
backup.
l Performance improvement: Customer and lab validation show a 15-20% performance
improvement when running EDG compared to standard deployment.
Licensing
The Tableau Sever reference architecture prescribed in this Guide requires a Tableau
Advanced Management license to enable Tableau Server External Repository. You may also
optionally deploy Tableau Server External File Store, which also requires the Tableau
Advanced Management license. See About Tableau Advanced Management on Tableau
Server (Linux).
Tableau Software 3
Tableau Server Enterprise Deployment Guide
The following network diagram shows a generic datacenter tiered deployment with Tableau
Server reference architecture.
4 Tableau Software
Tableau Server Enterprise Deployment Guide
l Ports and protocols blocked by default: Each subnet or security group will block all
inbound and outbound ports and protocols by default. Communication is enabled, in
part, by opening exceptions in the port or protocol configuration.
l Off-box web authentication: User requests from the internet are authenticated by an
authentication module on the reverse proxy in the web tier. Therefore, all requests to the
application layer are authenticated at the web tier before passing into the protected
application layer.
l Platform-independent: Solution can be deployed with on-premises server applications
or in the cloud.
l Technology-agnostic: Solution can be deployed in a virtual machine environment or in
containers. May also be deployed on Windows or Linux. However, this initial version of
the reference architecture and supporting documentation has been developed for Linux
running in AWS.
l Highly available: All components in the system are deployed as a cluster and designed
to operate in an active/active or active/passive deployment.
l Siloed roles: Each server performs a discrete role. This design partitions all servers
such that access may be minimized to service-specific administrators. For example,
DBAs manage PostgreSQL for Tableau, identity administrators manage authentication
module in web tier, network and cloud administrators enable traffic and connectivity.
l Linearly scalable: as discrete roles, you can scale each tier service independently
according to load profile.
l Client support: The reference architecture supports all Tableau clients: Tableau
Desktop (versions 2021.2 or later), Tableau Mobile, and Tableau Web Authoring.
Security measures
As stated, a primary feature of industry standard datacenter design is security.
l Access: Each tier is bound by a subnet that enforces access control at the network layer
using port filtering. Communication access between subnets may also be enforced by
the application layer with authenticated services between processes.
l Integration: Architecture is designed to plug-in with Identity Provider (IdP) on reverse
proxy in the web tier .
l Privacy: Traffic into the web tier is encrypted from the client with SSL. Traffic into the
internal subnets may optionally be encrypted as well.
Tableau Software 5
Tableau Server Enterprise Deployment Guide
Load-balancers
The deployment design includes an enterprise load-balancing solution in front of the reverse
proxy servers.
Note: Tableau Server version 2022.1 includes the Tableau Server Independent Gate-
way. The Independent Gateway is a standalone instance of the Tableau Gateway pro-
cess that serves as a Tableau-aware reverse proxy. At the time of release, the
Independent Gateway has been validated, but not fully tested in the EDG reference archi-
tecture. After full testing is complete the EDG will be updated with Tableau Server
Independent Gateway prescriptive guidance.
6 Tableau Software
Tableau Server Enterprise Deployment Guide
Application tier
The application tier is in a subnet that runs the core business logic of the server application.
The application tier consists of services and processes that are configured across distributed
nodes in a cluster. The application tier is only accessible from the web tier and is not directly
accessible by users.
Performance and reliability are improved by configuring the application processes such that
processes with different resource-use profiles (i.e., CPU intensive vs memory intensive) are
co-located.
Data tier
The data tier is a subnet that holds valuable data. All traffic to this tier originates from the applic-
ation tier and is therefore already authenticated. In addition to access requirements at the net-
work layer with port configuration, this layer should include authenticated access and
optionally encrypted traffic with the application tier.
Tableau Software 7
Tableau Server Enterprise Deployment Guide
The process diagrams in this topic are intended to show the major, defining processes of
each node. There are many supporting processes that also run on the nodes that are not
shown in the diagrams. For a list of all processes, see the configuration section of this guide,
Part 4 - Installing and Configuring Tableau Server.
8 Tableau Software
Tableau Server Enterprise Deployment Guide
l Tableau Server initial node (Node 1): Runs required TSM administrative and licensing
services that can only be run on a single node in the cluster. In the enterprise context,
the Tableau Server initial node is the primary node in the cluster. This node also runs
redundant application services with Node 2.
l Tableau Server application nodes (Node 1 and Node 2): The two nodes serve client
requests, connect to and query data sources and to the data nodes.
l Tableau Server data nodes (Node 3 and Node 4): Two nodes that are dedicated to man-
aging data.
l External PostgreSQL: this host runs the Tableau Server Repository process. For
HA deployment you must run an additional PostgreSQL host for active/passive redund-
ancy.
You can also run PostgreSQL on Amazon RDS. For more information about the dif-
ferences between running the repository on RDS vs an EC2 instance, see Tableau
Server External Repository (Linux).
If your organization does not have in-house DBA expertise, you may optionally run the
Tableau Server Repository process in the default, internal PostgreSQL configuration. In
the default scenario, the Repository is run on a Tableau node with embedded Post-
greSQL. In this case, we recommend running the Repository on a dedicated Tableau
node, and a passive Repository on an additional dedicated node to support Repository
failover. See Repository Failover (Linux).
By way of example, the AWS implementation described in this Guide explains how to
deploy the external repository on PostgreSQL running on an EC2 instance.
Tableau Software 9
Tableau Server Enterprise Deployment Guide
l Optional: If your organization uses external storage, you may deploy the Tableau File
Store as an external service. This Guide does not include the External File Store in the
core deployment scenario. See Install Tableau Server with External File Store (Linux).
Deploying Tableau Server with an external File Store requires a Tableau Advanced
Management license.
PostgresSQL Repository
Tableau Server Repository is a PostgresSQL database that stores server data. This data
includes information about Tableau Server users, groups and group assignments, per-
missions, projects, data sources, and extract metadata and refresh information.
The default PostgresSQL deployment consumes almost 50% of system memory resources.
Based on its usage (for production and large production deployments) resource usage can go
up. For this reason, we recommend running the Repository process on a computer that is not
running any other resource-intensive server components like VizQL, Backgrounder, or Data
Engine. Running the Repository process along with any of these components will create IO
contentions, resource constraint, and will degrade overall performance of the deployment.
The first computer you install Tableau on, the "initial node," has some unique characteristics.
Three processes run only on the initial node and cannot be moved to any other node except in
a failure situation, the License Service (License Manager), Activation Service, and TSM Con-
troller (Administration Controller).
10 Tableau Software
Tableau Server Enterprise Deployment Guide
Nodes 1 and 2 run the Tableau Server processes that serve client requests, query data
sources, generate visualizations, handle content and administration, and other core Tableau
business logic. The application servers do not store user data.
Tableau Software 11
Tableau Server Enterprise Deployment Guide
Note: "Application Server" is a term that also refers to a Tableau Sever process that is lis-
ted in TSM. The underlying process for "Application Server" is VizPortal.
Run in parallel, Node 1 and Node 2 scale to service requests from the load-balancing logic
run on the reverse proxy servers. As redundant nodes, should one of these nodes fail, then cli-
ent requests and servicing are handled by the remaining node.
The reference architecture has been designed so that complimentary application processes
run on the same computer. This means the processes are not competing for computing
resources and creating contention.
For example, VizQL, a core processing service on application servers, is highly CPU and
memory-bound, VizQL uses almost 60-70% of the CPU and memory on the computer. For
this reason, the reference architecture is designed so that no other memory or CPU-bound
processes are on the same node as VizQL. Testing shows that the amount of the load or num-
ber users doesn’t affect the memory or CPU usage on VizQL nodes. For example, reducing
the number of concurrent users in our load test only effects the performance of the dashboard
or the visualization loading process, but does not reduce resource utilization. Therefore,
based on the available memory and CPU during peak usage, you may consider adding more
VizQL processes. As a starting place for typical workbooks, allocate 4 cores per VizQL pro-
cess.
12 Tableau Software
Tableau Server Enterprise Deployment Guide
The File Store, Data Engine (Hyper), and Backgrounder processes are co-located on Nodes 3
and 4 for the following reasons:
l Extract optimization: Running Backgrounder, Hyper, and File Store on the same node
optimizes performance and reliability. During the extraction process, Backgrounder
queries the target database, creates the Hyper file on the same node, and then uploads
to File Store. By co-locating these processes on the same node the extraction creation
workflow does not require copying amounts of data across the network or the nodes.
l Complimentary resource balancing: Backgrounder is mainly CPU intensive. Data
Engine is a memory-intensive process. Coupling these processes allows maximum
resource utilization on each node.
l Consolidation of data processes: Since each of these processes are back-end data pro-
cesses, it makes sense to run them in the most secure data tier. In future versions of the
reference architecture, the application and data servers will run in separate tiers.
However, due to application dependencies in the Tableau architecture, application and
data servers must run in the same tier at this time.
Tableau Software 13
Tableau Server Enterprise Deployment Guide
servers does not impact performance or scale on data servers in a linear fashion. In fact, with
the exception of some overhead from additional user queries, the impact of adding more
application hosts and users is minimal.
14 Tableau Software
Tableau Server Enterprise Deployment Guide
A core principle of the reference architecture is standardization with data center security best
practices. Specifically, the architecture is designed to segregate services into protected net-
work subnets. Inter-subnet communication is restricted to specific protocol and port traffic.
The following diagram illustrates the reference architecture subnet design for an on-premises
deployment or a customer-managed cloud deployment. For an example cloud deployment,
see the section below, Example: Configure subnets and security groups in AWS.
Tableau Software 15
Tableau Server Enterprise Deployment Guide
Subnets
Create three subnets:
l A web tier
l An application tier
l A data subnet.
Web tier
The web tier is a public DMZ subnet that will handle inbound HTTPS requests and proxy the
requests to the application tier. This design provides a layer of defense from malware that
may be targeted at your organization. The web tier blocks access to the application/data tier.
Application tier
The application subnet is where the Tableau Server deployment resides. The application sub-
net includes the Tableau application servers (Node 1 and Node 2). The Tableau application
16 Tableau Software
Tableau Server Enterprise Deployment Guide
servers process user requests to the data servers and run core business logic.
The application subnet also includes the Tableau data servers (Node 3 and Node 4).
All client traffic to the application tier is authenticated at the web tier. Administrative access to
the application subnet is authenticated and routed through the bastion host.
Data tier
The data subnet is where the external PostgreSQL database server resides.
Bastion
Most enterprise security teams do not allow direct communication from the on-premises admin-
istrative system to the nodes deployed in the cloud. Instead, all administrative SSH traffic to
the cloud nodes is proxied through a bastion host (also referred to as a "jump server"). For
cloud deployments, we recommend bastion host proxy connection to all resources in the
Tableau Software 17
Tableau Server Enterprise Deployment Guide
The bastion host authenticates administrative access and only allows traffic over SSH pro-
tocol.
The slides below show the reference architecture in four layers. As you progress through the
slides, component elements are layered onto the topology map:
1. VPC subnet topology and EC2 instances: one bastion host, two reverse proxy servers,
four Tableau servers, and at least one PostgreSQL server.
2. Protocol flow and internet connectivity. All inbound traffic is managed through the AWS
internet gateway. Traffic to the internet is routed through the NAT.
3. Availability zones. The proxy, Tableau Server, and PostgreSQL hosts are evenly
deployed across two Availability Zones.
4. Security groups. Four security groups (Public, Private, Data, and Bastion) protect each
tier at the protocol level.
18 Tableau Software
Tableau Server Enterprise Deployment Guide
Tableau Software 19
Tableau Server Enterprise Deployment Guide
20 Tableau Software
Tableau Server Enterprise Deployment Guide
Tableau Software 21
Tableau Server Enterprise Deployment Guide
VPC configuration
This section describes how to:
22 Tableau Software
Tableau Server Enterprise Deployment Guide
l Configure subnets
l Create and configure security groups
Configure VPC
The procedure in this section maps to the UI in the "classic" VPC Experience. You can toggle
the UI to display the classic view by turning off the New VPC Experience in the upper-left
corner of the AWS VPC Dashboard.
Run VPC wizard to create default Private and Public subnets and default routing and network
ACL.
1. Before you configure a VPC, you must create an Elastic IP. Create an allocation using
all defaults.
2. Run VPC wizard > "VPC with Public and Private Subnets"
3. Accept most defaults. Except for the following:
l Enter a VPC name.
ate-a.
l Availability Zone: for both subnets, select the a option for the region that you are
in.
Tableau Software 23
Tableau Server Enterprise Deployment Guide
l Public-b: For Availability Zone, select the b option for the region that you are
in. CIDR block: 10.0.2.0/24
l Private-b: For Availability Zone, select the b option for the region that you are
in. CIDR block: 10.0.31.0/24
l Data: For Availability Zone, select the a zone for the region that you are in.
CIDR block: 10.0.50.0/24. Optional: If you plan to replicate the external data-
base across a PostgreSQL cluster, then create a Data-b subnet in Availability
Zone b with a CIDR block of 10.0.51.0/24.
lBastion: For Availability Zone, select either zone. CIDR block: 10.0.0.0/24
6. After the subnets are created, edit the route tables on the Public and the Bastion sub-
nets to use the route table that is configured for the associated internet gateway (IGW).
And edit the Private and Data subnets to use the route table that is configured for the
network address translator (NAT).
l To determine which route table is configured with the IGW or the NAT, click
Route Tables in AWS dashboard. Select one of the two route table links to open
the property page. Look at the Target value at Routes > Destination> 0.0.0.0/0.
The Target value differentiates the type of route and will either start with the
igw- or nat- string.
l To update route tables, VPC > Subnets > [subnet_name] > Route table > Edit
route table association.
l Create a new security group: Private. This is where all 4 nodes of Tableau Server will
be installed. Later in the installation process, the Private security group will be asso-
ciated with the 10.0.30.0/24 and 10.0.31.0/24 subnets.
l Create a new security group: Public. This is where proxy servers will be installed. Later
in the installation process, the Public security group will be associated with the
10.0.1.0/24 and 10.0.2.0/24 subnets.
l Create a new security group: Data. This is where the PostgreSQL external Tableau
repository will be installed. Later in the installation process, the Data security group will
be associated with the 10.0.50.0/24 (and optionally, 10.0.51.0/24) subnet.
24 Tableau Software
Tableau Server Enterprise Deployment Guide
l Create a new security group: Bastion. This is where you'll install the bastion host. Later
in the installation process, the Bastion security group will be associated with the
10.0.0.0/24 subnet.
In AWS, security groups are analogous to firewalls in an on-prem environment. You must spe-
cify the traffic type, (eg, https, https, etc), protocol (TCP or UDP), and ports or port range (eg
80, 443, etc) that are allowed to pass in and/or out of the security group. For each protocol you
must also specify the destination or source traffic.
Inbound rules
Outbound rules
The Private security group includes an inbound rule to allow HTTP traffic from the Public secur-
ity group. Allow HTTP traffic only during the deployment process to verify connectivity. We
recommend removing the HTTP inbound rule after you have finished deploying the reverse
proxy and configuring SSL to Tableau.
Tableau Software 25
Tableau Server Enterprise Deployment Guide
Inbound rules
Outbound rule
Inbound rules
Outbound rules
26 Tableau Software
Tableau Server Enterprise Deployment Guide
Inbound rules
Outbound rules
Tableau Software 27
Tableau Server Enterprise Deployment Guide
Load balancer
Note: If you are installing into AWS and following the example deployment in this guide,
then you should install and configure the AWS load balancer later in the deployment pro-
cess, as described in Part 5 - Configuring Web Tier.
For on-premises deployments, work with your network administrators to deploy load bal-
ancers to support the web tier of the reference architecture:
l A web-facing application load balancer that accepts HTTPS requests from Tableau cli-
ents and communicates with the reverse proxy servers.
l Reverse proxy:
l We recommend a minimum of two proxy servers for redundancy and to handle
client load.
l Receives HTTPS traffic from load balancer.
l Supports sticky session to Tableau host.
l Configure proxy for round robin load balancing to each Tableau Server running
the Gateway process.
lHandles authentication requests from external IdP.
l Forward proxy: Tableau Server requires access to the internet for licensing and map
functionality. Depending on your forward proxy environment, you may need to con-
figure forward proxy safelists for Tableau service URLs. See Communicating with the
Internet (Linux).
28 Tableau Software
Tableau Server Enterprise Deployment Guide
Application servers:
Data servers
Proxy servers
Tableau Software 29
Tableau Server Enterprise Deployment Guide
Directory structure
The reference architecture recommends installing the Tableau Server package and the data
into non-default locations:
l Install package to: /app/tableau_server: Create this directory path before you
install the Tableau Server package, and then specify this path during installation.
l Install Tableau data to: /data/tableau_data. Do not create this directory before
you install Tableau Server. Instead, you must specify the path during installation, and
then Tableau Setup will create and permission the path appropriately.
See Run installation package and initialize TSM for implementation details.
Tableau Server
l Amazon Linux 2
l Instance Type: m5a.8xlarge
l Security group ID: Private
30 Tableau Software
Tableau Server Enterprise Deployment Guide
l Storage: EBS, 150 GiB, gp2 volume type. If your deployment will make use of external
storage for the Tableau File Store, you will need calculate the appropriate disk space.
See Install Tableau Server with External File Store (Linux).
l Network: install two EC2 hosts in each private subnet (10.0.30.0/24 and 10.0.31.0/24).
l Copy the latest maintenance release of Tableau Server 2021.2 (or later) rpm package
from Tableau Downloads page to each Tableau host.
Bastion host
l Amazon Linux 2
l Instance Type: t3.micro
l Security group ID: Bastion
l Storage: EBS, 50 GiB, gp2 volume type
l Network: Bastion subnet 10.0.0.0/24
Tableau Software 31
Tableau Server Enterprise Deployment Guide
For Windows, see the topic, Securely Connect to Linux Instances Running in a Private
Amazon VPC.
ssh -A ec2-user@<public-IP>
3. You can then connect to other hosts in the VPC from the bastion host, using the private
IP address, for example:
ssh -A ec2-user@10.0.1.93
32 Tableau Software
Tableau Server Enterprise Deployment Guide
This topic describes how to finish installing and configuring the baseline Tableau Server
deployment. The procedure here continues with the AWS and Linux reference architecture
example.
The Linux examples throughout the installation procedures show commands for RHEL-like dis-
tributions. Specifically the commands here have been developed with the Amazon Linux 2 dis-
tribution. If you are running the Ubuntu distribution, edit the commands accordingly.
Tableau Software 33
Tableau Server Enterprise Deployment Guide
You can run PostgreSQL on Amazon RDS or on an EC2 instance. For more information
about the differences between running the repository on RDS vs an EC2 instance, see
Tableau Server External Repository (Linux).
By way of example, the procedure below shows how to install and configure Postgres on an
Amazon EC2 instance. The example shown here is a generic installation and configuration for
PostgreSQL in the reference architecture. Your DBA should optimize your
PostgreSQL deployment based on the size of your data and performance needs.
Requirements: Note that you must be running PostgreSQL 1.6 and you must install the uuid-
ossp module.
PostgreSQL versioning
You must install compatible major versions of PostgreSQL for the Tableau Server external
repository. Additionally, minor versions must also meet minimum requirements.
2021.3.0 - 2021.3.7
2021.4.0 - 2021.4.3
2021.3.8 - 2021.3.13
2021.4.4 - 2021.4.8
34 Tableau Software
Tableau Server Enterprise Deployment Guide
2021.3.14 - 2021.3.15
2021.4.9 - 2021.4.10
2021.3.16 - 2021.3.17
2021.4.11 - 2021.4.12
2021.3.26 12.15
2021.4.23
2022.1.0 13.3
2022.3.0 - 2022.3.7
2023.1.0 - 2023.1.4
2022.3.8 - 2022.3.19
2023.1.5 - 2023.1.15
2023.3.0 - 2023.3.8
2023.1.16 - 2023.1.x
2023.3.9 - 2023.3.x
Tableau Software 35
Tableau Server Enterprise Deployment Guide
Install PostgreSQL
This example installation procedure describes how to install PostgreSQL version 13.6.
Sign-in to the EC2 host that you created in the previous Part.
2. Create and edit the file, pgdg.repo. in the /etc/yum.repos.d/ path. Populate the file
with the following configuration information:
[pgdg13]
name=PostgreSQL 13 for RHEL/CentOS 7 - x86_64
baseurl-
l=https://download.postgresql.org/pub/repos/yum/13/redhat/rhel-
7-x86_64
enabled=1
gpgcheck=0
5. Initialize Postgres:
Configure Postgres
Finish the base installation by configuring Postgres:
36 Tableau Software
Tableau Server Enterprise Deployment Guide
listen_addresses = '*'
sudo su - postgres
exit
5. Restart Postgres:
Tableau Software 37
Tableau Server Enterprise Deployment Guide
On PostgreSQL host:
sudo su
cd /var/lib/pgsql
exit
Restore Step 1
Restore to Step 1 if the Tableau Server initial node fails during installation.
1. On the computer running Tableau, run the obliterate script to completely remove
Tableau Server from the host:
sudo /app/tableau_server/packages/scripts.<version_code>/./t-
ableau-server-obliterate -a -y -y -y -l
2. Restore the PostgreSQL Stage 1 tar. On the computer running Postgres, run the fol-
lowing commands:
sudo su
cd /var/lib/pgsql
38 Tableau Software
Tableau Server Enterprise Deployment Guide
tar -xvf step1.13.bkp.tar
exit
Resume the installation process of installing the initial node of Tableau Server.
2. Copy the installation package from Tableau Downloads page to the host computer that
will be running Tableau Server.
Tableau Software 39
Tableau Server Enterprise Deployment Guide
wget https://-
downloads.tableau.com/esdalt/2022<version>/tableau-server-<ver-
sion>.rpm
5. Run the installation program and specify the /app/tableau_server install path. For
example, on a Linux RHEL-like operating system, run:
exit
2. Provide the Tableau Server product key(s) in this step. Run the following command for
each license key that you have purchased:
40 Tableau Software
Tableau Server Enterprise Deployment Guide
{
"zip" : "97403",
"country" : "USA",
"city" : "Springfield",
"last_name" : "Simpson",
"industry" : "Energy",
"eula" : "yes",
"title" : "Safety Inspection Engineer",
"company_employees" : "100",
"phone" : "5558675309",
"company" : "Example",
"state" : "OR",
"opt_in" : "true",
"department" : "Engineering",
"first_name" : "Homer",
"email" : "homer@example.com"
}
4. After saving changes to the file, pass it with the --file option to register Tableau
Server:
Note: If your deployment will make use of external storage for the Tableau File Store, you
will need to enable External File Store before you configure the identity store. See Install
Tableau Server with External File Store (Linux).
Tableau Software 41
Tableau Server Enterprise Deployment Guide
The default reference architecture uses a local identity store. Configure the initial host with
local identity store by passing the config.json file with the tsm settings import com-
mand.
The config.json file is included in the scripts.<version> directory path (for example,
scripts.20204.21.0217.1203), and is formatted to configure the identity store.
{
"flavor":"generic",
"masterUsername":"postgres",
"host":"<instance ip address>",
"port":5432
}
2. After saving changes to the file, pass the file with the following command:
The option, --no-ssl, configures Tableau to use SSL/TLS only when the Postgres
server is configured for SSL/TLS. If Postgres is not configured for SSL/TLS, then the
connection is not encrypted. Part 6 - Post-Installation Configuration describes how to
42 Tableau Software
Tableau Server Enterprise Deployment Guide
enable SSL/TLS for the Postgres connection after you have completed the first phase of
deployment.
Run this command to apply the changes and restart Tableau Server:
2. When initialization is finished, you must create a Tableau Server administrator account.
Unlike the computer account that you are using to install and manage TSM operating-
system components, the Tableau Server administrator account is an application
account that used for creating Tableau Server users, projects, and sites. The Tableau
Server administrator also applies permissions to Tableau resources. Run the following
command to create the initial administrator account. In the following example, the user
is called tableau-admin:
tsm status -v
Tableau Software 43
Tableau Server Enterprise Deployment Guide
external:
Status: RUNNING
'Tableau Server Repository 0' is running (Active Repository).
node1: localhost
Status: RUNNING
'Tableau Server Gateway 0' is running.
'Tableau Server Application Server 0' is running.
'Tableau Server Interactive Microservice Container 0' is run-
ning.
'MessageBus Microservice 0' is running.
'Relationship Query Microservice 0' is running.
'Tableau Server VizQL Server 0' is running.
...
2. Run the following command to verify that Tableau administrative site is running:
curl localhost
The first few lines should show Vizportal html, similar to this:
<!DOCTYPE html>
<html xmlns:ng="" xmlns:tb="">
<head ng-csp>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="initial-scale=1, maximum-
scale=2, width=device-width, height=device-height, viewport-fit-
t=cover">
<meta name="format-detection" content="telephone=no">
<meta name="vizportal-config ...
44 Tableau Software
Tableau Server Enterprise Deployment Guide
l PostgreSQL
l Tableau initial node (Node 1)
In most cases, you can recover your installation of the initial node by restoring these tar files.
Restoring the tar files is much quicker than reinstalling and reinitializing the initial node.
tsm stop
sudo su
cd /var/lib/pgsql
exit
4. Verify that the Postgres tar file is created with root permissions:
sudo /app/tableau_server/packages/scripts.<version_
code>/./stop-administrative-services
Tableau Software 45
Tableau Server Enterprise Deployment Guide
cd /data
sudo /app/tableau_server/packages/scripts.<version_
code>/./start-administrative-services
9. Run the tsm status command to monitor TSM state before restarting.
In most cases, the command will first return a status of DEGRADED or ERROR. Wait a
few minutes and run the command again. If the status of ERROR or DEGRADED is
returned, continue waiting. Do not attempt to start TSM until the status, STOPPED is
returned. And then run the following command:
tsm start
Restore Step 2
This process restores the Tableau Node 1 and the Postgres instance to Step 2. After you
have restored to this step, you can then redeploy the remaining Tableau Nodes.
1. Stop the tsm services on the initial Tableau host (Node 1):
tsm stop
2. Stop Tableau administrative services on all nodes of the Tableau Server deployment.
Run the following command on each node, in order (Node 1, Node 2, and then Node
3):
46 Tableau Software
Tableau Server Enterprise Deployment Guide
sudo /app/tableau_server/packages/scripts.<version_
code>/./stop-administrative-services
3. After Tableau services have stopped, restore the PostgreSQL Step 2 tar. On the com-
puter running Postgres, run the following commands:
l sudo su
cd /var/lib/pgsql
exit
4. Restore the Tableau Step 2 tar. On the initial Tableau host, run the following com-
mands:
cd /data
l sudo rm /data/tableau_data/data/t-
absvc/appzookeeper/0/version-2/currentEpoch
l sudo rm /data/tableau_data/data/t-
absvc/appzookeeper/0/version-2/acceptedEpoch
l sudo rm /data/tableau_data/data/t-
absvc/tabadminagent/0/servicestate.json
Tableau Software 47
Tableau Server Enterprise Deployment Guide
sudo /app/tableau_server/packages/scripts.<version_
code>/./start-administrative-services
sudo /app/tableau_server/packages/scripts.<version_
code>/./start-administrative-services
8. On Node 1, run the tsm status command to monitor TSM state before restarting.
In some cases, you will get an error, Cannot connect to server.... This error
occurs because the tabadmincontroller service has not restarted. Continue to run tsm
status periodically. If this error does not go away after 10 minutes, run the start-
administrative-services command again.
After a few moments, the tsm status command will return a status of DEGRADED,
and then ERROR. Do not start TSM until the status, STOPPED is returned. And then
run the following command:
tsm start
48 Tableau Software
Tableau Server Enterprise Deployment Guide
Installation of Tableau Server Nodes 2-4 requires that you generate, copy, and reference a
bootstrap file during node installation.
To generate the bootstrap file, you run a TSM command on the initial node. You will then copy
the bootstrap file to the target node, where you run it as part of the node initialization.
The following json content shows an example of a bootstrap file. (The certificate and crypto-
related values have been truncated to make the example file easier to read.)
{
"initialBootstrapSettings" : {
"certificate" : "-----BEGIN CERTIFICATE-----\r\...=\r\n-----END
CERTIFICATE-----",
"port" : 8850,
"configurationName" : "tabsvc",
"clusterId" : "tabsvc-clusterid",
"cryptoKeyStore" : "zs7OzgAAAAIAAAABAAAAA...w==",
"toksCryptoKeystore" : "LS0tLS1CRUdJTiBUT00tLS0tCjM5MDBh...L",
"sessionCookieMaxAge" : 7200,
"nodeId" : "node1",
"machineAddress" : "ip-10-0-1-93.us-west-1.compute.internal",
"cryptoEnabled" : true,
"sessionCookieUser" : "tsm-bootstrap-user",
"sessionCookieValue" : "eyJjdHkiOiJKV1QiLCJl-
bmMiOiJBMTI4Q0JDLUhQ...",
"sessionCookieName" : "AUTH_COOKIE"
}
}
The bootstrap file includes connection-based validation to authenticate Node 1 and creates an
encrypted channel for the bootstrap process. The bootstrap session is time-limited, and con-
figuring and validating nodes is time consuming. Plan on creating and copying new bootstraps
as you configure the nodes.
After you run the bootstrap file, you then sign in to the initial Tableau Server node and con-
figure the processes for the new node. When you finish configuring the nodes, you must apply
Tableau Software 49
Tableau Server Enterprise Deployment Guide
changes and restart the initial node. The new node is configured and started. As you add
nodes, the configuration and restart of the deployment will take consecutively longer to com-
plete.
The Linux examples throughout the installation procedures show commands for RHEL-like
distributions. If you are running the Ubuntu distribution, edit the commands accordingly.
4. Run the installation program and specify the /app/tableau_server install path. For
example, on a Linux RHEL-like operating system, run:
In this example, the host computers are running in AWS, where EC2 hosts are running
Amazon Linux 2.
50 Tableau Software
Tableau Server Enterprise Deployment Guide
1. Connect to the initial node (Node 1) and run the following command:
cd /app/tableau_server/packages/scripts.<version_number>
5. After initialize-tsm has completed, delete boot.json, and then exit or log out of
the session.
Configure processes
You must configure the Tableau Server cluster on the node where the Tableau Server Admin-
istration Controller (TSM controller) is running. The TSM controller runs on the initial node.
Tableau Software 51
Tableau Server Enterprise Deployment Guide
Configure Node 2
1. After you have initialized TSM using the bootstrap file on Node 2, sign in to the initial
node.
2. On the initial node (node1) run the following commands to configure processes on
Node 2.:
52 Tableau Software
Tableau Server Enterprise Deployment Guide
tsm topology set-process -n node2 -pr clientfileservice -c 1
tsm topology set-process -n node2 -pr tdsservice -c 1
tsm topology set-process -n node2 -pr collections -c 1
tsm topology set-process -n node2 -pr contentexploration -c 1
If you are installing version 2022.1 or later, add the Index and Search service as well:
If you are installing version 2023.3 or later, only include the Index and Search service.
Do not add the Search and Browse (searchserver) service
3. Review the configuration before you apply it. Run the following command:
4. After you have verified that your changes are in the pending list (there will be other ser-
vices in the pending list as well), apply the changes:
The changes will require a restart. Configuration and restart will take some time.
tsm status -v
Configure Node 3
Initialize TSM using the bootstrap process on Node 3, and then run the tsm topology set-
process commands below.
There is a Coordination Service warning that will display each time you set a process. You can
ignore this warning as you set the processes.
1. After you initialize TSM using the bootstrap file on Node 3, sign in to the initial node
(node1) and run the following commands to configure processes:
Tableau Software 53
Tableau Server Enterprise Deployment Guide
tsm topology set-process -n node3 -pr clustercontroller -c 1
tsm topology set-process -n node3 -pr clientfileservice -c 1
tsm topology set-process -n node3 -pr backgrounder -c 4
tsm topology set-process -n node3 -pr filestore -c 1
If you are installing version 2022.1 or later, add the Index and Search service as well:
2. Review the configuration before you apply it. Run the following command:
3. After you have verified that your changes are in the pending list (the list will include
other services that are automatically configured), apply the changes:
The changes will require a restart. Configuration and restart will take some time.
tsm status -v
tsm stop
tsm topology deploy-coordination-service -n node1,node2,node3
The process includes a restart of TSM, which will take some time.
54 Tableau Software
Tableau Server Enterprise Deployment Guide
tsm start
l PostgreSQL
l Tableau initial node (Node 1)
l Tableau Node 2
l Tableau Node 3
tsm stop
2. After TSM has stopped, stop Tableau administrative services on each node. Run the fol-
lowing command on each node, in order (Node 1, Node 2, and then Node 3):
sudo /app/tableau_server/packages/scripts.<version_
code>/./stop-administrative-services
sudo su
cd /var/lib/pgsql
Tableau Software 55
Tableau Server Enterprise Deployment Guide
exit
7. Create the tar backup on Node 1, Node 2, and Node 3. Run the following commands
on each node:
l cd /data
l Verify that the Tableau tar file is created with root permissions:
ls -al
8. Start Tableau administrative services on each node in order (Node 1, Node 2, and then
Node 3):
sudo /app/tableau_server/packages/scripts.<version_
code>/./start-administrative-services
9. Run the tsm status command to monitor TSM state before restarting.
In most cases, the command will return a status of DEGRADED, and then ERROR.
Wait a few moments and run the command again. If the status of ERROR or
DEGRADED is returned, continue waiting. Do not attempt to start TSM until the status,
STOPPED is returned. And then run the following command:
tsm start
Restore Step 3
56 Tableau Software
Tableau Server Enterprise Deployment Guide
This process restores the Tableau Node 1, Node 2, and Node 3. It also restores the Postgres
instance to Step 3. After you have restored to this step, you can then deploy coordination ser-
vice, Node 4, and then final node configurations.
1. Stop the tsm service on the initial Tableau host (Node 1):
tsm stop
2. After TSM has stopped, stop Tableau administrative services on Node 1, Node 2, and
Node 3. Run the following command on each node:
sudo /app/tableau_server/packages/scripts.<version_
code>/./stop-administrative-services
3. Restore the PostgreSQL Step 3 tar. On the computer running Postgres, run the fol-
lowing commands:
sudo su
cd /var/lib/pgsql
exit
4. Restore the Tableau Step 3 tar on Node 1, Node 2, and Node 3. Run the following com-
mands on each Tableau node:
cd /data
Tableau Software 57
Tableau Server Enterprise Deployment Guide
l sudo rm /data/tableau_data/data/t-
absvc/appzookeeper/1/version-2/currentEpoch
l sudo rm /data/tableau_data/data/t-
absvc/appzookeeper/1/version-2/acceptedEpoch
l sudo rm /data/tableau_data/data/t-
absvc/tabadminagent/0/servicestate.json
If the shell returns a "file not found" error, you may need to change the path name to
increment the number <n> in this section of the path: .../ap-
pzookeeper/<n>/version-2/....
6. Restart the administrative services on Node 1, Node 2, and Node 3. Run the following
commands on each node:
sudo /app/tableau_server/packages/scripts.<version_
code>/./start-administrative-services
sudo /app/tableau_server/packages/scripts.<version_
code>/./start-administrative-services
7. On Node 1, run the tsm status command to monitor TSM state before restarting.
In some cases, you will get an error, Cannot connect to server.... This error
occurs because the tabadmincontroller service has not restarted. Continue to run tsm
status periodically. If this error does not go away after 10 minutes, run the start-
administrative-services command again.
After a few moments, the tsm status command will return a status of DEGRADED,
and then ERROR. Do not start TSM until the STOPPED status is returned. And then
run the following command:
tsm start
58 Tableau Software
Tableau Server Enterprise Deployment Guide
Configure Node 4
The process for configuring Node 4 is the same as Node 3.
Set the same processes as you set for Node 3, running the same set of commands as shown
above, but specifying node4 in the commands rather than node3.
As with Node 3 verification, verify the Node 4 configuration by running tsm status -v.
Before you proceed, wait for the File Store process on Node 4 to finish synchronizing. The File
Store service status will return is synchronizing until it finishes. When the File Store ser-
vice status returns is running you can proceed.
2. Decommission the file store on Node 1. This will cause a warning about removing the
file store from a co-located controller. You can ignore the warning. Run the following
command:
3. When file store is decommissioned, run the following command to remove the back-
grounder process from Node 1:
4. Review the configuration before you apply it. Run the following command:
5. After you have verified that your changes are in the pending list, apply the changes:
Tableau Software 59
Tableau Server Enterprise Deployment Guide
The changes will require a restart. Configuration and restart will take some time.
Before you proceed, wait for the File Store process on Node 4 to finish synchronizing.
The File Store service status will return is synchronizing until it finishes. When the
File Store service status returns is running you can proceed.
Perform backup
A full recovery of Tableau Server requires a backup portfolio that includes three components:
l A backup file of the repository and file store data. This file is generated by the tsm
maintenance backup command.
l A topology and configuration export file. This file is generated by the tsm settings
export command.
l Authentication certificate, key, and keytab files.
For a full description of the backup and restore process, see the Tableau Server topic, Per-
form a Full Backup and Restore of Tableau Server (Linux).
At this stage of your deployment, all relevant files and assets that are required for a full res-
toration are included by running the tsm maintenance backup and tsm settings
export commands.
1. Run the following command to export the configuration and topology settings to a file
called ts_settings_backup.json
2. Run the following command to create a backup of the repository and file store data in a
file named ts_backup-<yyyy-mm-dd>.tsbak. Ignore the warning about the file
60 Tableau Software
Tableau Server Enterprise Deployment Guide
/data/tableau_data/data/tabsvc/files/backups/
3. Copy both files and save them on a different storage asset that is not shared by your
Tableau Server deployment.
Tableau Software 61
Tableau Server Enterprise Deployment Guide
The web tier of the reference architecture should include the following components:
l A web-facing application load balancer that accepts HTTPS requests from Tableau cli-
ents and communicates with the reverse proxy servers.
l Reverse proxy:
l We recommend deploying the Tableau Server Independent Gateway.
client load.
l Receives HTTPS traffic from load balancer.
l Supports sticky session to Tableau host.
l Configure proxy for round robin load balancing to each Tableau Server running
the Gateway process.
lHandles authentication requests from external IdP.
l Forward proxy: Tableau Server requires access to the internet for licensing and map
functionality. You must configure forward proxy safelists for Tableau service URLs.
See Communicating with the Internet (Linux).
l All client-related traffic may be encrypted over HTTPS:
l Client to application load balancer
62 Tableau Software
Tableau Server Enterprise Deployment Guide
l Proxy server to Tableau Server
l Authentication handler running on reverse proxy to IdP
l Tableau Server to IdP
Independent Gateway supports simple round robin load balancing to the backend Tableau
Servers. However, Independent Gateway is not intended to serve as the enterprise application
load balancer. We recommend running Independent Gateway behind an enterprise-class
application load balancer.
Tableau Software 63
Tableau Server Enterprise Deployment Guide
In the reference architecture the reverse proxy is configured to create a client authentication
session with the IdP before proxying those request to Tableau Server. We refer to this pro-
cess as the pre-auth phase. The reverse proxy will only redirect authenticated client sessions
to Tableau Server. Tableau Server will then create a session, verify authentication of the ses-
sion with the IdP, and then return the client request.
The following diagram shows the step-by-step detail of the pre-auth and authentication pro-
cess with an AuthN module configured. The reverse proxy may be a generic 3rd party solution
or the Tableau Server Independent Gateway:
64 Tableau Software
Tableau Server Enterprise Deployment Guide
Configuration overview
This is an overview of the process to configure the web tier. Verify connectivity after each step:
Tableau Software 65
Tableau Server Enterprise Deployment Guide
Note: The example web tier configuration presented in this section includes detailed pro-
cedures for deploying third party software and services. We've made a best effort to
verify and document the procedures to enable the web tier scenario. However, the third-
party software may change or your scenario may differ from the reference architecture
described here. Please refer to third-party documentation for authoritative configuration
details and support.
The Linux examples throughout this section show commands for RHEL-like distributions. Spe-
cifically the commands here have been developed with the Amazon Linux 2 distribution. If you
are running the Ubuntu distribution, edit the commands accordingly.
Deploying the web tier in this example follows a stepwise configuration and verification pro-
cedure. The core web tier configuration consists of the following steps to enable HTTP
between Tableau and the internet. Independent Gateway is run and configured for reverse
proxy/load balancing behind the AWS application load balancer:
1. Prepare environment
2. Install Independent Gateway
3. Configure Independent Gateway Server
4. Configure AWS application load balancer
After the web tier is set up and connectivity with Tableau is verified, configure authentication
with an external provider.
Prepare Environment
Complete the following tasks before you deploy Independent Gateway.
1. AWS Security group changes. Configure the Public security group to allow inbound
Independent Gateway housekeeping traffic (TCP 21319) from the Private security
group.
66 Tableau Software
Tableau Server Enterprise Deployment Guide
2. Install version 22.1.1 (or later) on four node Tableau Server cluster as documented at
Part 4 - Installing and Configuring Tableau Server.
3. Configure the two proxy EC2 instances in the Public security group as documented at
Configure host computers.
Deploying Tableau Server Independent Gateway consists of installing and running the .rpm
package and then configuring initial state. The procedure included with this Guide provides pre-
scriptive guidance for deploying into the reference architecture.
If your deployment differs from the reference architecture, consult the core Tableau Server doc-
umentation, Install Tableau Server with Independent Gateway (Linux).
Important: Configuring Independent Gateway can be an error prone process. It is very dif-
ficult to troubleshoot configuration issues across two instances of Independent Gateway
servers. For this reason, we recommend configuring one Independent Gateway server at
a time. After you configure the first server and verify functionality, you should then con-
figure the second Independent Gateway server.
Although you will configure each Independent Gateway server separately, run this installation
procedure on both EC2 instances that you installed into the Public security group:
Tableau Software 67
Tableau Server Enterprise Deployment Guide
3. Copy the version 2022.1.1 (or later) Independent Gateway installation package from
Tableau Downloads page to the host computer that will be running Tableau Server.
wget https://-
downloads.tableau.com/esdalt/2022<version>/tableau-server-tsig-
<version>.x86_64.rpm
4. Run the installation program. For example, on a Linux RHEL-like operating system,
run:
6. After initialization is complete, open the tsighk-auth.conf file and copy the authen-
tication secret in the file. You will need to submit this code for each Independent Gate-
way instance as part of the back-end Tableau Server configuration:
7. After you have run the previous steps on the both instances of the Independent Gate-
way, prepare the tsig.json configuration file. The configuration file consists of an
"independentGateways" array. The array holds configuration objects that each define
connection details for an Independent Gateway instance.
68 Tableau Software
Tableau Server Enterprise Deployment Guide
Copy the following the JSON and customize it according to your deployment envir-
onment. The example here shows a file for a sample AWS reference architecture.
The example JSON file below only includes connection information for one Independent
Gateway. Later in the process, you will include the connection information for the
second Independent Gateway server.
{
"independentGateways": [
{
"id": "ip-10-0-1-169.ec2.internal",
"host": "ip-10-0-1-169.ec2.internal",
"port": "21319",
"protocol" : "http",
"authsecret": "13660-27118-29070-25482-9518-22453"
}]
}
l "id" - The private DNS name of the AWS EC2 instance running Independent
Gateway.
l "host" - same as "id".
l "port" - The housekeeping port, by default, "21319".
l "protocol" - The protocol for client traffic. Leave this as http for the initial con-
figuration.
l "authsecret" - The secret that you copied in the previous step.
Tableau Software 69
Tableau Server Enterprise Deployment Guide
Relay connection: You can configure Independent Gateway to relay client communication
over a single port to the gateway process on Tableau Server. We refer to this as a relay con-
nection:
l The relay process results in an extra hop from Independent Gateway to the backend
Tableau Server Gateway process. The extra hop degrades performance as compared
to the direct connection configuration.
l TLS is supported for relay mode. All communication in relay mode is restricted to a
single protocol (HTTP or HTTPS) and can therefore be encrypted and authenticated
with TLS.
Direct connection: The Independent Gateway can communicate directly with the back-end
Tableau Server processes over multiple ports. We refer to this communication as direct con-
nection:
tsm stop
tsm configuration set -k gateway.tsig.proxy_tls_optional -v
none
tsm pending-changes apply
tsm topology external-services gateway enable -c tsig.json
tsm start
70 Tableau Software
Tableau Server Enterprise Deployment Guide
If you are configuring Independent Gateway for direct connection to Tableau Server, you must
enable the configuration to trigger communication. After Tableau Server communicates to the
Independent Gateway, the protocol targets will be established. You must then retrieve the
proxy_targets.csv from the Independent Gateway computer and open the corresponding
ports from the Public to the Private security groups in AWS.
tsm stop
tsm topology external-services gateway enable -c tsig.json
tsm start
3. On Independent Gateway computer run the following command to view the ports that
the Tableau Server cluster is using:
less /var/opt/tableau/tableau_tsig/config/httpd/proxy_tar-
gets.csv
4. Configure AWS security groups. Add the TCP ports listed in proxy_targets.csv to
allow communication from the Public security group to the Private security group.
We recommend automating port ingress configuration since the ports may change if the
Tableau Server deployment changes. Adding nodes or reconfiguring processes on the
Tableau Server deployment will trigger changes to the port access required by
Independent Gateway.
Tableau Software 71
Tableau Server Enterprise Deployment Guide
If the Tableau Server sign-in page does not load, or if Tableau Server doesn't start then follow
these troubleshooting steps:
Network:
wget http://ip-10-0-1-38:21319
If connection is refused or fails, then verify that the Public security group is configured
to allow Independent Gateway housekeeping traffic (TCP 21319) from the Private
security group.
If security group is configured correctly, then verify you specified the correct
IP addresses or IP ranges during the initialization of Independent Gateway. You can
view and change this configuration in the environment.bash file located at /etc/-
opt/tableau/tableau_tsig/environment.bash. If you make a change to this
file then restart the tsig-http service as described below.
1. Overwrite the httpd.conf file with the Independent Gateway stub file:
cp /var/opt/tableau/tableau_tsig/config/httpd.conf.stub /var/-
opt/tableau/tableau_tsig/config/httpd.conf
sudo su - tableau-tsig
systemctl --user restart tsig-httpd
exit
72 Tableau Software
Tableau Server Enterprise Deployment Guide
On Tableau Node 1
l Double-check the tsig.json file. If you find errors, fix them, and then run tsm topo-
logy external-services gateway update -c tsig.json.
l If running direct connection, verify the TCP ports listed in proxy_targets.csv are
configured as ingress ports from Public to Private security groups.
A target group is an AWS configuration that defines the EC2 instances running your proxy serv-
ers. These are the targets for traffic from the LBS.
2. On Create page:
3. Select the target group that you just created, and then click the Targets tab:
l Click Edit.
l Select the EC2 instances (or single instance if you are configuring one at a time)
that are running proxy application, and then click Add to registered.
l Click Save.
Tableau Software 73
Tableau Server Enterprise Deployment Guide
Note: The UI that is displayed to configure load balancer is not consistent across AWS
datacenters. The procedure below, "Wizard configuration," maps to the AWS con-
figuration wizard that begins with Step 1 Configure Load Balancer.
If your datacenter displays all configurations in a single page that includes a Create load
balancer button at the bottom of the page, then follow the "Single page configuration"
procedure below.
Wizard configuration
1. Configure load balancer page:
l Specify name
l Scheme: internet-facing (default)
l IP address type: ipv4 (default)
l Listeners (Listeners and routing):
a. Leave the default HTTP listener
b. Click Add listener and add HTTPS:443
l VPC: select the VPC where you've installed everything
l Availability Zones:
l Select the a and b for your datacenter regions
74 Tableau Software
Tableau Server Enterprise Deployment Guide
l Select the Public security group. If the Default security group is selected, then
clear that selection.
l Click Next: Configure Routing.
l The two proxy server instances that you configured previously should be dis-
played.
l Click Next: Review.
6. Review page
Click Create.
l Specify name
l Scheme: internet-facing (default)
l IP address type: ipv4 (default)
Network mapping
l In each corresponding drop-down selector, select the Public subnet (where your
Security groups
Tableau Software 75
Tableau Server Enterprise Deployment Guide
Select the Public security group. If the Default security group is selected, then clear that selec-
tion.
l Leave the default HTTP listener. For Default action, specify the Target Group that you
previously set up.
l Click Add listener and add HTTPS:443. For Default action, specify the Target Group
that you previously set up.
1. After the load balancer is created, you must enable stickiness on the Target Group.
l Open AWS Target Group page (EC2> Load Balancing> Target groups),
select the target group instance that you just set up. On the Action menu, select
Edit attributes.
l On the Edit attributes page, select Stickiness, specify a duration of 1 day,
and then Save changes.
2. On load balancer, enable stickiness on the HTTP listener. Select the load balancer you
just configured, and then click the Listeners tab:
l For HTTP:80, click View/edit rules. On the resulting Rules page, click the edit
icon (once at the top of the page, and then again by the rule) to edit the rule.
Delete the existing THEN rule and replace it by clicking Add action > Forward
to.... In the resulting THEN configuration, specify the same target group you
have created. Under Group-level stickiness, enable stickiness and set duration
to 1 day. Save the setting and then click Update.
76 Tableau Software
Tableau Server Enterprise Deployment Guide
Select the load balancer you have configured for this deployment, and then click Actions >
Edit attributes. Set Idle timeout to 400 seconds, and then click Save.
Open AWS Load Balancer page (EC2> Load Balancers), select the load balancer instance
that you just set up.
Under Description, copy the DNS name and paste it into a browser to access the Tableau
Server sign in page.
If you get a 500-level error, then you may need to restart your proxy servers.
Verify connectivity
After your DNS updates are finished, you should be able to navigate to the Tableau Server
sign-in page by entering your public URL, for example, https://tableau.example.com.
This example picks up from the previous section and assumes that you are configuring one
Independent Gateway at a time.
Tableau Software 77
Tableau Server Enterprise Deployment Guide
The example describes how to configure Tableau Server and Independent Gateway over
HTTP. Okta will send request to the AWS load balancer over HTTPS, but all internal traffic will
travel over HTTP. As you configure for this scenario, be aware of the HTTP vs HTTPS pro-
tocols when setting URL strings.
This example uses Mellon as a pre-authentication service provider module on the Independ-
ent Gateway servers. This configuration ensures that only authenticated traffic connects to
Tableau Server, which also acts as a service provider with the Okta IdP. Therefore, you must
configure two IdP applications: one for the Mellon service provider and one for the Tableau
service provider.
The first step is to create an account on Tableau Server with a Server Administrator role. For
the example Okta scenario, the username must be in a valid email address format, for
example, user@example.com. You must set a password for this user, but the password will
not be used after SAML is configured.
Each of these applications are associated with different metadata that you will need to con-
figure on the reverse proxy and Tableau Server, respectively.
This procedure describes how to create and configure the Okta pre-auth application. Later in
this topic you will create the Okta Tableau Server application. For a free test Okta account
with limited users, see the Okta Developer web page.
Create a SAML app integration for the Mellon pre-authentication service provider.
78 Tableau Software
Tableau Server Enterprise Deployment Guide
1. Open the Okta administration dashboard > Applications > Create App Integration.
2. On Create a new app integration page, select SAML 2.0 and then click Next.
3. On the General Settings tab, enter an App name, for example Tableau Pre-Auth,
and then click Next.
l Single sign on (SSO) URL. The final element of the path in the single sign on URL
is referred to as the MellonEndpointPath in the mellon.conf configuration
file that follows later in this procedure. You can specify whatever endpoint you
would like. In this example, sso is the endpoint. The last element, postRe-
sponse, is required: https://t-
ableau.example.com/sso/postResponse.
l Clear the checkbox: Use this for Recipient URL and Destination URL.
l Recipient URL: Same as SSO URL, but with HTTP. For example, http://t-
ableau.example.com/sso/postResponse.
l Destination URL: same as SSO URL, but with HTTP. For example, http://t-
ableau.example.com/sso/postResponse.
l Audience URI (SP Entity ID). For example, https://tableau.example.com.
l Name ID format: EmailAddress
l Application username: Email
l Attributes Statements: Name = mail; Name format = Unspecified; Value =
user.email.
Click Next.
l In Okta: Applications > Applications > Your new application (e.g., Tableau
Pre-Auth) > Sign On
l Adjacent to SAML Signing Certificates, click View SAML setup instructions.
Tableau Software 79
Tableau Server Enterprise Deployment Guide
l On the How to Configure SAML 2.0 for <pre-auth> Application, page, scroll
down to Optional section, Provide the following IDP metadata to your SP
provider.
l Copy the contents of the XML field and save them in a file called pre-auth_
idp_metadata.xml.
l In Okta: Applications > Applications > Your new application (e.g., Tableau
Pre-Auth) > Sign On
l Under Sign On Policy, click Add Rule.
l On the App Sign On Rule, specify a name and the different MFA options. To
test functionality, you can leave all options as default. However, under Actions,
you must select, Prompt for factor, and then specify how often users must sign
in. Click Save.
The mod_auth_mellon module is third-party software. We've made a best effort to verify and
document the procedures to enable this scenario. However, third-party software may change
or your scenario may differ from the reference architecture described here. Please refer to
third-party documentation for authoritative configuration details and support.
80 Tableau Software
Tableau Server Enterprise Deployment Guide
1. On the active EC2 instance that is running Independent Gateway, install a current ver-
sion of the Mellon authentication module.
You must have a copy of pre-auth_idp_metadata.xml file that you created from the Okta
configuration.
1. Change directory:
cd /etc/mellon
The return URL is referred to as the single sign on URL in Okta. The final element of the
path in the return URL is referred to as the MellonEndpointPath in the mel-
lon.conf configuration file that follows later in this procedure. In this example, we spe-
cify sso as the endpoint path.
For example:
sudo /usr/libexec/mod_auth_mellon/mellon_create_metadata.sh
https://tableau.example.com "https://tableau.example.com/sso"
The script returns the service provider certificate, key, and metadata files.
3. Rename the service provider files in the mellon directory for easier readability. We will
refer to these files by the following names in the documentation:
Tableau Software 81
Tableau Server Enterprise Deployment Guide
Copy the file contents as shown below, but update MellonCookieDomain with your
root domain name. For example, if domain name for Tableau is tableau-
.example.com, enter example.com for the root domain.
<Location "/">
AuthType Mellon
MellonEnable auth
Require valid-user
MellonCookieDomain <root domain>
MellonSPPrivateKeyFile /etc/mellon/mellon.key
MellonSPCertFile /etc/mellon/mellon.cert
MellonSPMetadataFile /etc/mellon/sp_metadata.xml
82 Tableau Software
Tableau Server Enterprise Deployment Guide
MellonIdPMetadataFile /etc/mellon/pre-auth_idp_metadata.xml
MellonEndpointPath /sso
</Location>
<Location "/tsighk">
MellonEnable Off
</Location>
This file holds a single directive that specifies the location of the mod_auth_mel-
lon.so file. The location in the example here is the default location of the file. Verify
that the file is in this location, or change the path in this directive to match the actual loc-
ation of mod_auth_mellon.so:
5. Click the Identity Provider metadata link, to launch a browser. Copy the browser link.
This is the link you will use when you configure Tableau in the procedure that follows.
6. Click Done.
7. Assign the new Tableau Server Okta app to your user (user@example.com): Click the
user name then assign the application in Assign Application.
Tableau Software 83
Tableau Server Enterprise Deployment Guide
To reduce downtime, do not apply changes until you have enabled SAML as described in the
next section.
1. Download the Tableau Server application metadata from Okta. Use the link that you
saved from the previous procedure:
wget https://dev-66144217.okta.-
com/app/exk1egxgt1fhjkSeS5d7/sso/saml/metadata -O idp_
metadata.xml
2. Copy a TLS certificate and related key file to the Tableau Server. The key file must be
an RSA key. For more information about SAML certificate and IdP requirements, see
SAML Requirements (Linux).
84 Tableau Software
Tableau Server Enterprise Deployment Guide
If you do not have a TLS certificate, you can generate a self-signed certificate using the
embedded procedure below.
You will be prompted to enter values for the certificate fields. For example:
Tableau Software 85
Tableau Server Enterprise Deployment Guide
d. Sign the new certificate with the CA certificate that you created above. The fol-
lowing command also outputs the certificate in the crt format:
e. Convert the key file to RSA. Tableau requires an RSA key file for SAML. To con-
vert the key, run the following command:
3. Configure SAML. Run the following command, specifying your entity ID and return
URL, and the paths to the metadata file, certificate file, and key file:
4. If your organization is running Tableau Desktop 2021.4 or later, then you must run the
following command to enable authentication through the reverse proxy servers.
Versions of Tableau Desktop 2021.2.1 - 2021.3 will work without running this com-
mand, provided that your pre-authentication module (e.g., Mellon) is configured to
allow top-level domain cookie preservation.
86 Tableau Software
Tableau Server Enterprise Deployment Guide
As your Tableau Server deployment applies changes, sign back into the Tableau Server
Independent Gateway computer and run the following commands to restart the tsig-httpd ser-
vice:
sudo su - tableau-tsig
systemctl --user restart tsig-httpd
exit
If TSM doesn't start ("gateway error") or if you get browser errors when you attempt to connect,
see Troubleshooting Tableau Server Independent Gateway.
The process for deploying the second Independent Gateway requires the following steps:
Tableau Software 87
Tableau Server Enterprise Deployment Guide
1. On the second instance of Independent Gateway: Install the Mellon auth module.
Do not configure the Mellon auth module as described earlier in this topic. Instead, you
must clone the configuration as described in the subsequent steps.
Take a tar copy of the existing Mellon configuration. The tar backup will preserve all dir-
ectory hierarchy and permissions. Run the following commands:
cd /etc
Extract ("unzip") the tar file to the second instance in the /etc directory. Run the fol-
lowing commands:
cd /etc
{
"independentGateways": [
{
"id": "ip-10-0-1-169.ec2.internal",
"host": "ip-10-0-1-169.ec2.internal",
"port": "21319",
88 Tableau Software
Tableau Server Enterprise Deployment Guide
"protocol" : "http",
"authsecret": "13660-27118-29070-25482-9518-22453"
},
{
"id": "ip-10-0-2-230.ec2.internal",
"host": "ip-10-0-2-230.ec2.internal",
"port": "21319",
"protocol" : "http",
"authsecret": "9055-27834-16487-27455-30409-7292"
}]
}
5. On Node 1 of the Tableau Server deployment: Run the following commands to update
the configuration:
tsm stop
tsm start
sudo su - tableau-tsig
exit
7. In AWS EC2>Target groups: Update target group to include the EC2 instance running
the second Independent Gateway instance.
Select the target group that you just created, and then click the Targets tab:
l Click Edit.
l Select the EC2 instance of the second Independent Gateway computer, and then
click Add to registered.Click Save.
Tableau Software 89
Tableau Server Enterprise Deployment Guide
This section describes how to configure SSL/TLS for Tableau Server and the Independent
Gateway in the example AWS reference architecture. For a configuration example describing
how to configure SSL/TLS on Apache in AWS reference architecture, see
Example: Configure SSL/TLS in AWS reference architecture.
At this time, TLS is not supported on the backend Tableau Server processes that run in the
8000-9000 range. To enable TLS, you must configure Independent Gateway with a relay con-
nection to the Tableau Server.
This procedure describes how to enable and configure TLS on Independent Gateway to
Tableau Server, and Tableau Server to Independent Gateway. The procedure encrypts the
relay traffic over HTTPS/443 and housekeeping traffic over HTTPS/21319.
The Linux procedures throughout this example show commands for RHEL-like distributions.
Specifically the commands here have been developed with the Amazon Linux 2 distribution. If
you are running the Ubuntu distribution, edit the commands accordingly.
The guidance here is prescriptive to the specific AWS example reference architecture as
presented in this Guide. Therefore, optional configurations are not included. For full reference
documentation, see Configure TLS on Independent Gateway (Linux).
90 Tableau Software
Tableau Server Enterprise Deployment Guide
l Verify that clients can connect to Tableau Server over HTTP. Configuring TLS with
Independent Gateway is a multi-step process and may require troubleshooting. There-
fore, we recommend starting with a fully operational Tableau Server deployment before
configuring TLS.
l Collect TLS/SSL certificates, keys, and related assets. You will need SSL certificates for
the Independent Gateways and for Tableau Server. To simplify certificate management
and deployment, and as a security best practice, we recommend using certificates gen-
erated by a major trusted-third party certificate authority (CA). Alternatively, you may
generate self-signed certificates or use certificates from a PKI for TLS.
The example configuration in this topic uses the following asset names by way of illus-
tration:
l tsig-ssl.crt: The TLS/SSL certificate for Independent Gateway.
l tsig-ssl.key: The private key for tsig-ssl.crt on Independent Gateway.
l ts-ssl.crt: The TLS/SSL certificate for Tableau Server.
l ts-ssl.key: The private key for tsig-ssl.crt on Tableau Server.
l tableau-server-CA.pem: The root certificate for the CA that generates the
certificates for the Tableau Server computers. This certificate is generally not
required if you are using certificates from major trusted-third parties.
l rootTSIG-CACert.pem: The root certificate for the CA that generates the cer-
tificates for the Independent Gateway computers. This certificate is generally not
required if you are using certificates from major trusted-third parties.
l There are other certificates and key file assets required for SAML that are
detailed in Part 5 of this Guide.
Tableau Software 91
Tableau Server Enterprise Deployment Guide
l If your implementation requires the use of a certificate chain file, see the Know-
ledge Base article, Configure TLS on Independent Gateway when using a cer-
tificate that has a certificate chain.
l Verify that you have access to IdP. If you are using an IdP for authentication, you will
likely need to make changes to the recipient and destination URLs at the IdP after you
have configured SSL/TLS.
You can distribute the assets to any arbitrary directory as long as the tsig-httpd user has read
access to the files. The paths to these files are referenced in other procedures. We will use
the example paths under /etc/ssl, as shown below, throughout the topic.
2. Copy the certificate and key files to the /etc/ssl paths. For example,
3. (Optional) If you are using a self-signed or PKI certificate for SSL/TLS on Tableau
Server, then you must copy the CA root certificate file to the Independent Gateway com-
92 Tableau Software
Tableau Server Enterprise Deployment Guide
You must update port and protocol environmental variables for Independent Gateway con-
figuration.
TSIG_HK_PROTOCOL="https"
TSIG_PORT="443"
TSIG_PROTOCOL="https"
The stub configuration file includes a block of TLS-related directives that are commented out
with a #TLS# marker. Remove the markers from the directives as shown in the example
below. Note that the example shows use of root CA certificate for the SSL certificate used on
Tableau Server with the SSLCACertificateFile option.
Tableau Software 93
Tableau Server Enterprise Deployment Guide
These changes will be lost if you re-install Independent Gateway. We recommend making a
back-up copy.
1. Copy the file that you updated in the last step, to update httpd.conf with the changes:
cp /var/opt/tableau/tableau_tsig/config/httpd.conf.stub /var/-
opt/tableau/tableau_tsig/config/httpd.conf
sudo su - tableau-tsig
systemctl --user restart tsig-httpd
exit
After you restart, the Independent Gateway will be nonoperational until you run the next set of
steps on Tableau Server. After you have completed the steps on Tableau Server, Independ-
ent Gateway will pick up changes and come online.
1. Verify that you have the Tableau Server "external SSL" certificates and keys copied to
Node 1.
2. To minimize downtime, we recommend stopping TSM, running the following steps, and
then starting TSM after changes have been applied:
tsm stop
94 Tableau Software
Tableau Server Enterprise Deployment Guide
1. Specify the location of certificate and key files for Independent Gateway. These paths
reference the location on the Independent Gateway computers. Note that this example
assumes the same certificate and key pair are used to protect HTTPS and house-
keeping traffic:
3. (Optional) If you are using a self-signed or PKI certificate for SSL/TLS on the Independ-
ent Gateway, then you must upload the CA root certificate file. The CA root certificate
file is the root certificate that was used to generate the certificates for the Independent
Gateway computers. For example,
4. (Optional) If you are using a self-signed or PKI certificate for SSL/TLS on Tableau
Server, then you must copy the CA root certificate file to the Independent Gateway
/etc/ssl/certs directory. The CA root certificate file is the root certificate that was
used to generate the certificates for the Tableau Server computers. After you have
copied the certificate to the Independent Gateway, you must specify the location of the
certificate on Node 1 with the following tsm command. For example,
Tableau Software 95
Tableau Server Enterprise Deployment Guide
tsm configuration set -k gateway.tsig.ssl.proxy.gateway_relay_
cluster.cacertificatefile -v /etc/ssl/certs/tableau-server-
CA.pem --force-keys
5. (Optional: for testing purposes only) If you are using sharing self-signed or
PKI certificates across computers and therefore the subject names on the certificates
do not match the computer names, then you must disable certificate verification.
Step 3: Enable "external SSL" for Tableau Server and apply changes
2. Apply changes.
Step 4: Update the gateway configuration JSON file and start tsm
1. Update the Independent Gateway configuration file (for example, tsig.json) on the
Tableau Server side to specify the https protocol for the Independent Gateway
objects:
"protocol" : "https",
2. Remove (or comment-out) the connection information for the second instance of
Independent Gateway. Be sure to verify the JSON in an external editor before you save
it.
After you have configured and validated TLS for the single instance of Independent
Gateway, you will update this JSON file with the connection information for the second
instance of Independent Gateway.
96 Tableau Software
Tableau Server Enterprise Deployment Guide
tsm topology external-services gateway update -c tsig.json
4. Start TSM.
tsm start
5. While TSM is starting, sign in to the Independent Gateway instance and restart the
tsig-httpd service:
sudo su - tableau-tsig
exit
For example, if you are using a Okta pre-auth application, you will need to update the applic-
ation to use HTTPS protocol for the Recipient URL and the Destination URL.
In Target Groups, select the HTTP target group that has been configured for the load
balancer, click Actions, and then click Delete.
Tableau Software 97
Tableau Server Enterprise Deployment Guide
l Select "Instances"
l Enter a target group name, for example TG-internal-HTTPS
l Select your VPC
l Protocol: HTTPS 443
l Under Health checks > Advanced health checks settings > Success codes,
append the code list to read: 200,303.
l Click Create.
3. Select the target group that you just created, and then click the Targets tab:
l Click Edit
l Select the EC2 instance that is running Tableau Server Independent Gateway
that you have configured, and then click Add to registered.
l Click Save.
l Open AWS Target Group page (EC2> Load Balancing> Target groups),
select the target group instance that you just set up. On the Action menu, select
Edit attributes.
l On the Edit attributes page, select Stickiness, specify a duration of 1 day,
and then Save changes.
5. On load balancer, update listener rules. Select the load balancer you have configured
for this deployment, and then click the Listeners tab.
l For HTTP:80, click View/edit rules. On the resulting Rules page, click the edit
icon (once at the top of the page, and then again by the rule) to edit the rule.
Delete the existing THEN rule and replace it by clicking Add action > Redirect
to.... In the resulting THEN configuration, specify HTTPS and port 443 and leave
the other options to default settings. Save the setting and then click Update.
l For HTTPS:443, click View/edit rules. On the resulting Rules page, click the
edit icon (once at the top of the page, and then again by the rule) to edit the rule.
Delete the existing THEN rule and replace it by clicking Add action > Forward
to.... Specify the Target group to the HTTPS group that you just created. Under
Group-level stickiness, enable stickiness and set duration to 1 day. Save the
setting and then click Update.
98 Tableau Software
Tableau Server Enterprise Deployment Guide
6. On load balancer, update idle timeout to 400 seconds. Select the load balancer you
have configured for this deployment, and then click the Actions > Edit attributes. Set
Idle timeout to 400 seconds, and then click Save.
Validate TLS
To validate TLS functionality, sign-in to Tableau Server with the public URL (e.g., https://t-
ableau.example.com) with the Tableau admin account that you created at the beginning of this
procedure.
If TSM is not starting or you get other errors, see Troubleshooting Tableau Server Independent
Gateway.
The process for deploying the second Independent Gateway requires the following steps:
1. On the configured (first) instance of Independent Gateway: Copy the following files to
corresponding locations on the second instance of Independent Gateway:
l /etc/ssl/certs/tsig-ssl.crt
l /etc/ssl/private/tsig-ssl.key (You will need to create the private dir-
ectory on the second instance).
l /var/opt/tableau/tableau_tsig/config/httpd.conf.stub
l /etc/opt/tableau/tableau_tsig/environment.bash
2. On Node 1 of the Tableau Server deployment: Update the connection file (tsig.json)
with the connection information from the second Independent Gateway.
Tableau Software 99
Tableau Server Enterprise Deployment Guide
{
"independentGateways": [
{
"id": "ip-10-0-1-169.ec2.internal",
"host": "ip-10-0-1-169.ec2.internal",
"port": "21319",
"protocol" : "https",
"authsecret": "13660-27118-29070-25482-9518-22453"
},
{
"id": "ip-10-0-2-230.ec2.internal",
"host": "ip-10-0-2-230.ec2.internal",
"port": "21319",
"protocol" : "https",
"authsecret": "9055-27834-16487-27455-30409-7292"
}]
}
3. On Node 1 of the Tableau Server deployment: Run the following commands to update
the configuration:
tsm stop
tsm start
sudo su - tableau-tsig
exit
5. In AWS EC2>Target groups: Update target group to include the EC2 instance running
the second Independent Gateway instance.
Select the target group that you just created, and then click the Targets tab:
l Click Edit.
l Select the EC2 instance of the second Independent Gateway computer, and then
click Add to registered.Click Save.
To simplify certificate management and deployment, and as a security best practice, we recom-
mend using certificates generated by a major trusted-third party certificate authority (CA).
Alternatively, you may generate self-signed certificates or use certificates from a PKI for TLS.
This procedure describes how to use OpenSSL to generate self-signed certificate on the Post-
gres host on a RHEL-like Linux distribution in the example AWS reference architecture.
After you generate and sign the SSL certificate, you must copy the CA certificate to the
Tableau host.
You will be prompted to enter values for the certificate fields. For example:
3. Create the certificate and related key (server.csrand server.key in the example
below) for the Postgres computer. The subject name for the certificate must match the
EC2 private DNS name of the Postgres host. The subject name is set with the -subj
option with the format "/CN=<private DNS name>", for example:
4. Sign the new certificate with the CA certificate that you created in step 2. The following
command also outputs the certificate in the crt format:
5. Copy the crt and key files to the Postgres /var/lib/pgsql/13/data/ path:
sudo su
7. Set permissions on the cer and key files. Run the following commands:
cd /var/lib/pgsql/13/data
chown postgres.postgres server.crt
chown postgres.postgres server.key
chmod 0600 server.crt
chmod 0600 server.key
to
ssl = on
exit
If you want to require certificate trust validation for the connection, then you must run the fol-
lowing command on Tableau Server to reconfigure the Postgres host connection:
1. On Node 1, create and edit the file, pgdg.repo, in the /etc/yum.repos.d path. Pop-
ulate the file with the following configuration information.
[pgdg13]
name=PostgreSQL 13 for RHEL/CentOS 7 - x86_64
baseurl-
l=https://download.postgresql.org/pub/repos/yum/13/redhat/rhel-
7-x86_64
enabled=1
gpgcheck=0
scp ec2-user@<private-DNS-name-of-Postgress-host>:/home/ec2-user-
/pgsql-rootCACert.pem /home/ec2-user
psql "postgresql://postgres@<IP-address>:5432/-
postgres?sslmode=verify-ca&sslrootcert=pgsql-rootCACert.pem"
For example:
psql "post-
gresql://postgres@10.0.1.189:5432/postgres?sslmode=verify-ca&ssl-
rootcert=pgsql-rootCACert.pem"
Postgres will prompt you for the password. After successful sign in, the shell will return:
psql (13.4)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-
SHA384, bits: 256, compression: off)
Type "help" for help.
postgres=#
For the initial configuration of SMTP,and notifications we recommend that you use the con-
figuration file template below to create a json file. You can also set any single configuration
key listed below with the syntax described tsm configuration set (Linux).
1. Copy the following json template to a file. Customize the file with your
SMTP configuration options and the subscription and alert notifications for your organ-
ization.
l To see a list and description of all SMTP options see SMTP CLI configuration ref-
erence (Linux).
l To see a list and description of all notification event options, see the CLI section
of Configure Server Event Notification (Linux).
{
"configKeys": {
"svcmonitor.notification.smtp.server": "SMTP server host
name",
"svcmonitor.notification.smtp.send_account": "SMTP user name",
"svcmonitor.notification.smtp.port": 443,
"svcmonitor.notification.smtp.password": "SMTP user account
password",
"svcmonitor.notification.smtp.ssl_enabled": true,
"svcmonitor.notification.smtp.from_address": "From email
address",
"svcmonitor.notification.smtp.target_addresses": "To email
address1,address2",
"svcmonitor.notification.smtp.canonical_url": "Tableau Server
URL",
"backgrounder.notifications_enabled": true,
"subscriptions.enabled": true,
"subscriptions.attachments_enabled": true,
"subscriptions.max_attachment_size_megabytes": 150,
"svcmonitor.notification.smtp.enabled": true,
"features.DesktopReporting": true,
"storage.monitoring.email_enabled": true,
2. Run the tsm settings import -f file.json to pass the json file to Tableau Ser-
vices Manager.
4. Run the tsm email test-smtp-connection to view and verify the connection con-
figuration.
1. Go to the Tableau Driver Download page and copy the URL for the PostgreSQL jar file.
l From the new path, download the latest version of the PostgreSQL jar file. For
example:
tsm restart
If you are deploying Tableau Server with an IdP, then you must manage password policies
with the IdP.
The following procedure includes json configuration for setting password policy on Tableau
Server. For more information about the options below, see Local Authentication (Linux).
1. Copy the following json template to a file. Fill in the key values with your password
policy configuration.
{
"configKeys": {
"wgserver.localauth.policies.mustcontainletters.enabled":
true,
"wgserver.localauth.policies.mustcontainuppercase.enabled":
true,
"wgserver.localauth.policies.mustcontainnumbers.enabled":
true,
"wgserver.localauth.policies.mustcontainsymbols.enabled":
true,
"wgserver.localauth.policies.minimumpasswordlength.enabled":
true,
"wgserver.localauth.policies.minimumpasswordlength.value": 12,
"wgserver.localauth.policies.maximumpasswordlength.enabled":
false,
"wgserver.localauth.policies.maximumpasswordlength.value":
255,
"wgserver.localauth.passwordexpiration.enabled": true,
2. Run the tsm settings import -f file.json to pass the json file to Tableau Ser-
vices Manager to configure Tableau Server.
1. Shut down the first instance of Independent Gateway (TSIG1). All inbound traffic
should route through the second instance of Independent Gateway (TSIG2).
2. Resart TSIG1 and then shut down TSIG2. All inbound traffic should route through
TSIG1.
3. Restart TSIG2.
4. Shut down Tableau Server Node 1. All Vizportal/Application service traffic will fail over
to Node 2.
To ensure your Tableau Server installation using ATR activations will have a 72
hour grace period after initial node failure, install or upgrade to one of these ver-
sions. For more details, see Tableau Server HA using ATR Does Not Have a Grace
Period After the Initial Node Failure in the Tableau Knowledge Base.
5. Restart Node1 and shut down Node 2. All Vizportal/Application service traffic will fail
over to Node 1.
6. Restart Node 2.
In this context "shutting down" or "restarting" is done by turning off the operating system or vir-
tual machine without attempting a graceful shut down of the application before hand. The goal
is to simulate a hardware or virtual machine failure.
The minimum validation step for each failover test is to authenticate with a user and perform
basic view operations.
You may get a "Bad Request" browser error when you attempt to sign-in after a simulated fail-
ure. You may see this error even if you clear the cache in the browser. Often this issue occurs
when the browser is caching data from previous IdP session. If this error persists even after
you clear the local browser cache, validate the Tableau scenario by connecting with a different
browser.
If there is a problem with the initial node and you have redundant processes on Node 2, there
is no guarantee that Tableau Server will continue to run. Tableau Server may continue to run
for up to 72 hours after an initial node failure, before the lack of the licensing service impacts
other processes. If so, your users may be able to continue to sign in and see and use their con-
tent after the initial node fails, but you will not be able to reconfigure Tableau Server because
you won't have access to the Administration Controller.
Even when configured with redundant processes, it is possible that Tableau Server may not
continue to function after the initial node fails.
cd /app/tableau_server/packages/scripts.<version>
Where <license keys> is a comma-separated (no spaces) list of the license keys
for your deployment. If you do not have access to your license keys, visit the Tableau
Customer Portal to retrieve them. For example:
The auto-node-recovery script will execute about 20 steps to recover services to Node 2. Each
step is displayed in the terminal as the script progresses. More detailed status is logged to
/data/tableau_data/logs/app-controller-move.log. In most environments, the
script takes between 35 and 45 minutes to complete.
switchto
Switchto is a script from Tim that makes switching between windows easy.
1. Copy the following code into a file called switchto in the home directory on your bas-
tion host.
#!/bin/bash
#--------------------------------------------------------------
-----
# switchto
#
# Helper function to simplify SSH into the various AWS hosts
usage() {
echo "Usage: switchto.sh [ node1 | node2 | node3 | node4 |
pgsql | proxy1 | proxy2 ]"
}
ip=""
case $1 in
node1)
ip="$NODE1"
;;
node2)
ip="$NODE2"
;;
node3)
ip="$NODE3"
;;
ssh -A ec2-user@$ip
2. Update the IP addresses in the script to map to your EC2 instances and then save the
file.
3. Apply permissions to the script file:
Usage:
./switchto <target>
./switchto node1
sudo su - tableau-tsig
exit
l Okta pre-authentication configuration. Carefully review the URLs that you have set.
Look for trailing slashes. Verify HTTP vs HTTPS.
l Shell history for SAML configuration on Node 1. Review the tsm authentication
saml configure command that you ran. Verify that all of the URLs match those that
you have configured in Okta. While you are reviewing shell history from Node 1, verify
that the tsm configuration set commands that specify the Mellon configuration
file paths map exactly to the file paths where you copied the files on Independent Gate-
way.
l Mellon configuration on Independent Gateway. Review the shell history to verify that
you created the metadata with the same URL string that you have configured in Okta
and Tableau SAML. Verify that all the paths that are specified in/etc/mel-
lon/conf.d/global.conf are correct and that the MellonCookieDomain is set to
your root domain, not your Tableau subdomain.
Tableau Server logs errors and events to dozens of different log files. Independent Gateway
logs to a set of local files as well. We recommend inspecting these logs in the following order.
The default location of the Independent Gateway log files are at /var/-
opt/tableau/tableau_tsig/logs.
l access.log: This log is useful to the extent that it has entries that show connections
from the Tableau Server nodes. If you are getting gateway errors (won't start) when you
attempt to start TSM, and there are no entries in the access.log file, then there is a
core connectivity issue. Always verify AWS security group configuration as a first step.
Another common issue is a typo in tsig.json. If you make an update to tsig.json, run
The tabadminagent (not tabadmincontroller) set of files are the only relevant log files
for troubleshooting Independent Gateway-related errors.
You must find where Independent Gateway errors have been logged to tabdminagent.
These errors can be on any node, but they are only on one node. Perform the following steps
on each node in the Tableau Server cluster until you find the “independent” string:
1. Locate the tabadminagent log file location on Tableau Server nodes 1-4 in EDG setup:
cd /data/tableau_data/data/tabsvc/logs/tabadminagent
less tabadminagent_nodeN.log
3. Search for all instances of “Independent” and “independent” - by using the following
search string:
/ndependent
If there are no matches, then go to next node and repeat steps 1-3.
4. When you get a match: Shift + G to move to bottom to get last error messages.
cp /var/opt/tableau/tableau_tsig/config/httpd.conf.stub /var/-
opt/tableau/tableau_tsig/config/httpd.conf
sudo su - tableau-tsig
systemctl --user restart tsig-httpd
exit
This failure will result in a status of DEGRADED for the external node when you run tsm
status -v on Tableau Node 1. The external node in the status output refers to Independ-
ent Gateway.
To resolve this issue, delete or move the access.log files off the disk. Access.log files are
stored at /var/opt/tableau/tableau_tsig/logs. After you have cleared the disk,
restart tableau-tsig service.
Browser errors
Bad Request: A common error for this scenario is a "Bad Request" error from Okta. Often this
issue occurs when the browser is caching data from previous Okta session. For example, if
you manage the Okta applications as an Okta administrator and then attempt to access
Tableau using a different Okta-enabled account, session data from the administrator data may
cause the "Bad Request" error. If this error persists even after you clear the local browser
cache, try validating the Tableau scenario by connecting with a different browser.
Another cause of the "Bad Request" error is a typo in one of the many URLs that you enter
during the Okta, Mellon, and SAML configuration processes. Check that you entered all of
these without error.
Often the error.log file on the Independent Gateway server will specify which URL is caus-
ing the error.
Not Found - The requested URL was not found on this server: This error indicates one
of many configuration errors.
If the user is authenticated with Okta, and then receives this error, then it's likely that you have
uploaded the Okta pre-auth application to Tableau Server when you configured SAML. Verify
that you have the Okta Tableau Server application metadata configured on Tableau Server,
and not the Okta pre-auth application metadata
l Review the Okta pre-auth application settings. Be sure HTTP vs HTTPS protocols are
set as specified in this topic.
l Restart tsig-httpd on both Independent Gateway servers.
l Verify that sudo apachectl configtest returns “Syntax OK” on both Independ-
ent Gateways.
l Verify that the test user is assigned to both applications in Okta.
l Verify that stickiess is set on the load balancer and associated target groups.
For example run this wget command to verify the housekeeping (HK) protocol from Tableau
Server:
wget https://ip-10-0-1-38.us-west-1.compute.internal:21319
Construct the URL with the same host address that you included for the host option of the
tsig.json file. Specify the https protocol, and append the URL with the HK port 21319.
If Tableau is able to communicate, then you may still get content-related errors, but you will not
get connection-related errors. If Tableau is unable to connect at all, then start by verifying pro-
tocol configuration in the firewall/security groups. For example, the inbound rules for the secur-
ity group where Independent Gateway resides must allow TCP 21319.
Requirements. To run the script, you must prepare and configure the AWS environment
according to the example implementation in Part 3 - Preparing for Tableau Server Enterprise
Deployment:
l VPC, subnet, and security groups have been configured as described. IP addresses do
not have to match those that are shown in the example implementation.
l Four EC2 instances running the latest, updated builds of AWS Linux 2
l PostgreSQL is installed and has been configured as described in Install, configure, and
tar PostgreSQL .
l A Step 1 tar backup file is on the EC2 instance where PostgreSQL is installed, as
described in Take PostgreSQL Step 1 tar backup.
l The EC2 instance that will be running Node 1 of the Tableau Server deployment has
been configured to communicate with PostgreSQL as described in Part 4 - Installing
and Configuring Tableau Server.
l You have logged into each EC2 instance with an SSH session from the bastion host.
The script takes about 1.5-2 hours to install and configure the four Tableau servers. The script
configures Tableau according to the prescribed settings of the reference architecture. The
script performs the following actions:
1. Copy the script from the TabDeploy4EDG samples page and paste the code into a file
called, TabDeploy4EDG.
2. Save the file to the home directory on the EC2 host that is serving as the bastion host.
3. Run the following command to change the mode on the file to make it executable:
Run TabDeploy4EDG
TabDeploy4EDG must be run from the bastion host. The script has been written with the
assumption that you are running under the context of ssh forward agent as described at
Example: Connect to bastion host in AWS. If you are not running with ssh forward agent con-
text, then you will be prompted for passwords throughout the installation process.
1. Create, edit, and save a registration file (registration.json). The file must be a
properly-formatted json file. Copy and customize the following template:
{
"zip" : "97403",
"country" : "USA",
./TabDeploy4EDG -g edg.config
At a minimum, you must add the IP addresses of each EC2 host, a file path to the regis-
tration file, and a valid license key.
4. When you are done editing the configuration file, save it, and then close it.
./TabDeploy4EDG -f edg.config
with the subnets, security groups, and EC2 instances that are described in Part 3 - Preparing
for Tableau Server Enterprise Deployment.
Sample Terraform templates are available on the Tableau Samples website at https://help.t-
ableau.com/samples/en-us/edg/edg-terraform.zip. These templates must be configured and
customized for your organization. The configuration content provided in this section describes
the minimum required template changes you must customize to deploy.
Goal
The Terraform templates and content provided here are intended to provide a working sample
that will allow you to deploy EDG quickly in a development test environment.
We've made a best effort to test and document the example Terraform deployment. However,
using Terraform to deploy and maintain EDG in a production environment will require Ter-
raform expertise that is beyond the scope of this example. Tableau does not provide support
for the example Terraform solution documented here.
End state
Follow the procedure in this section to set up a VPC in AWS that is functionally equivalent to
the VPC that is specified in Part 3 - Preparing for Tableau Server Enterprise Deployment.
l Creates a VPC with an elastic IP address, two availability zones, and subnets organ-
ization as shown above (IP addresses are different)
l Creates the Bastion, Public, Private, and Data security groups.
l Sets most ingress and egress rules on the security groups. You will need to edit secur-
ity groups after Terraform runs.
l Creates the following EC2 hosts (each running AWS Linux2): bastion, proxy 1 proxy 2,
Tableau node 1, Tableau node 2, Tableau node 3, Tableau node 4.
l EC2 hosts for PostgreSQL are not created. You must create the EC2 manually in the
Data security group, and then install and configure PostgreSQL as described in Install,
configure, and tar PostgreSQL .
Requirements
l AWS account - you must have access to an AWS account that allows you to create
VPCs.
l If you are running Terraform from a Windows computer, you will need to install AWS
CLI.
l An available elastic IP address in your AWS account.
l A domain that is registered in AWS Route 53. Terraform will create a DNS zone and
related SSL certificates in Route 53. Therefore, the profile under which Terraform runs,
must also have appropriate permissions in Route 53.
https://www.terraform.io/downloads
This is the key that you will use to access AWS and the resulting VPC environment. When you
run Terraform, you’ll include the public key.
2. Create a public key. This key format is not used for Terraform. You will convert it to a
ssh key later in this procedure:
l Locate the file in Windows Explorer, right-click on it then select Properties. Nav-
igate to the Security tab and then click Advanced.
l Change the owner to you, disable inheritance and delete all permissions. Grant
yourself Full control and then click Save. Mark the file as read-only.
4. Create ssh public key. This is the key you’ll copy into Terraform later in the process.
1. Download and unzip the EDG Terraform project and save them to your local computer.
After you unzip the download you’ll have a top-level directory, edg-terraform, and a
series of subdirectories.
versions.tf
There are three instances of versions.tf files where the required_version field must
match the version of terraform.exe you're using. Check the version of terraform (ter-
raform.exe -version) and update each of the following instances:
l edg-terraform\versions.tf
l edg-terraform\modules\proxy\versions.tf
l edg-terraform\modules\tableau_instance\versions.tf
key-pair.tf
1. Open the public key that you generated in Step 1B and copy the key:
less my-key-ssh.pub
2. Copy the public key string into the public_key argument, for example:
Ensure that the key_name value is unique in the datacenter or terraform apply will fail.
locals.tf
Update user.owner to your name or alias. The value you enter here will be used for the
"Name" tag in AWS on the resources that Terraform creates.
providers.tf
default_tags {
tags = {
"Application" = "tableau",
"Creator" = "alias@example.com",
"DeptCode" = "8675309",
"Description" = "EDG",
"Environment" = "test",
"Group" = "itcloud@example.com"
}
}
/* assume_role {
role_arn = "arn:aws:iam::310946706895:role/terraform-
backend"
session_name = "terraform"
}*/
elb.tf
Under 'resource "aws_lb" "tableau" {' choose a unique value to use for name and
tags.Name.
If another AWS load balancer has the same name in the datacenter, then terraform
apply will fail.
Add idle_timeout:
variables.tf
Update root domain name. This name must match the domain that you have registered in
Route 53.
variable "root_domain_name" {
default = "example.com"
}
By default, the subdomain, tableau, is specified for the VPC DNS domain name. To change
this, update subdomain:
variable "subdomain" {
default = "tableau"
}
modules/tableau_instance/ec2.tf
There are two ec2.tf files in the project. This customization is for the Tableau instance of the
ec2.tf in the directory: modules/tableau_instance/ec2.tf.
tags = {
"Name" : var.ec2_name,
"user.owner" = "ALIAS",
"Application" = "tableau",
"Creator" = "ALIAS@example.com",
"DeptCode" = "8675309",
Root volume:
root_block_device {
volume_size = 100
volume_type = "gp3"
}
Application volume:
A. Initialize Terraform
In Terminal, change to the edg-terraform directory and run the following command:
terraform init
If initialization is successful continue to the next step. If initialize failed, follow the instructions
in the Terraform output.
B. Plan Terraform
terraform plan
This command can be run multiple times. Run as many times as needed to fix errors. When
this command runs error free continue to the next step.
C. Apply Terraform
terraform apply
You can destroy the entire VPC by running the destroy command:
terraform destroy
The destroy command will only destroy what it has created. If you have made manual changes
to some objects in AWS (i.e., security groups, subnets, etc), then the destroy will fail. To exit
out of a failing/hanging destroy operation, type Control + C. You must then clean up the
VPC manually to the state where it was when Terraform originally created it. You can then run
the destroy command.
1. In AWS create an inbound rule in the bastion security group (AWS > Security Groups
> Bastion SG > Edit inbound rules) and create a rule to allow SSH (TCP 22) con-
nections from the IP address or subnet mask where you will be running Terminal com-
mands.
Optional: You may find it helpful to allow file copying between the EC2 instances in the
Private and Public groups during deployment. Create inbound SSH rules:
2. Use the pem key that you created in Step 1.B to connect to the bastion host:
On Mac terminal:
Run the following commands from the directory where the pem key is stored:
If you get a warning about private key being accessible by others, then run this com-
mand: chmod 600 <keyName.pem> and then run the ssh-add command again.
a. Create ppk from pem key: Use PuTTY Key Generator. Load the pem key that
you created in Step 1.B. After the key imports, click Save private key. This cre-
ates a ppk file.
the EC2 instance as described in Part 3 - Preparing for Tableau Server Enterprise
Deployment.
This topic provides an end-to-end procedure that describes how to implement web tier in the
example AWS reference architecture. The example configuration is composed of the fol-
lowing components:
Note: The example web tier configuration presented in this section includes detailed pro-
cedures for deploying third party software and services. We've made a best effort to
verify and document the procedures to enable the web tier scenario. However, the third-
party software may change or your scenario may differ from the reference architecture
described here. Please refer to third-party documentation for authoritative configuration
details and support.
The Linux examples throughout this section show commands for RHEL-like distributions. Spe-
cifically the commands here have been developed with the Amazon Linux 2 distribution. If you
are running the Ubuntu distribution, edit the commands accordingly.
Deploying the web tier in this example follows a stepwise configuration and verification pro-
cedure. The core web tier configuration consists of the following steps to enable HTTP
between Tableau and the internet. Apache is run and configured for reverse proxy/load bal-
ancing behind the AWS application load balancer:
1. Install Apache
2. Configure reverse proxy to test connectivity to Tableau Server
3. Configure load balancing on proxy
4. Configure AWS application load balancer
After the web tier is set up and connectivity with Tableau is verified, configure authentication
with an external provider.
Install Apache
Run the following procedure on both EC2 hosts (Proxy 1 and Proxy 2). If you are deploying in
AWS according to the reference architecture example then you should have two availability
zones and be running a single proxy server in each zone.
1. Install Apache:
3. Verify that the version of httpd you have installed includes proxy_hcheck_module:
sudo httpd -M
The proxy_hcheck_module is required. If your version of httpd does not include this
module, then update to a version of httpd that does include it.
Copy the following code and specify the ProxyPass and ProxyPassReverse keys
with the private IP address of Tableau Server Node 1.
Important: The configuration shown below is not a secure and should not be used
in production. This configuration should only be used during the installation pro-
cess to verify end-to-end connectivity.
For example, if the private IP address of Node 1 is 10.0.30.32, then the contents of
the tableau.conf file would be:
<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass "/" "http://10.0.30.32:80/"
ProxyPassReverse "/" "http://10.0.30.32:80/"
</VirtualHost>
2. Restart httpd:
If the Tableau Server sign-in page does not load in your browser then follow these
troubleshooting steps on the Proxy 1 host:
For example:
<VirtualHost *:80>
ServerAdmin admin@example.com
#Load balancing logic.
ProxyHCExpr ok234 {%{REQUEST_STATUS} =~ /^[234]/}
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e;
path=/" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://tableau>
A target group is an AWS configuration that defines the EC2 instances running your proxy serv-
ers. These are the targets for traffic from the LBS.
2. On Create page:
3. Select the target group that you just created, and then click the Targets tab:
l Click Edit.
l Select the EC2 instances (or single instance if you are configuring one at a time)
that are running proxy application, and then click Add to registered.
l Click Save.
Note: The UI that is displayed to configure load balancer is not consistent across AWS
datacenters. The procedure below, "Wizard configuration," maps to the AWS con-
figuration wizard that begins with Step 1 Configure Load Balancer.
If your datacenter displays all configurations in a single page that includes a Create load
balancer button at the bottom of the page, then follow the "Single page configuration"
procedure below.
Wizard configuration
1. Configure load balancer page:
l Specify name
l Scheme: internet-facing (default)
l IP address type: ipv4 (default)
l Listeners (Listeners and routing):
a. Leave the default HTTP listener
b. Click Add listener and add HTTPS:443
l VPC: select the VPC where you've installed everything
l Availability Zones:
l Select the a and b for your datacenter regions
l Select the Public security group. If the Default security group is selected, then
clear that selection.
l Click Next: Configure Routing.
6. Review page
Click Create.
l Specify name
l Scheme: internet-facing (default)
l IP address type: ipv4 (default)
Network mapping
l In each corresponding drop-down selector, select the Public subnet (where your
Security groups
Select the Public security group. If the Default security group is selected, then clear that selec-
tion.
l Leave the default HTTP listener. For Default action, specify the Target Group that you
previously set up.
l Click Add listener and add HTTPS:443. For Default action, specify the Target Group
that you previously set up.
1. After the load balancer is created, you must enable stickiness on the Target Group.
l Open AWS Target Group page (EC2> Load Balancing> Target groups),
select the target group instance that you just set up. On the Action menu, select
Edit attributes.
l On the Edit attributes page, select Stickiness, specify a duration of 1 day,
and then Save changes.
2. On load balancer, enable stickiness on the HTTP listener. Select the load balancer you
just configured, and then click the Listeners tab:
l For HTTP:80, click View/edit rules. On the resulting Rules page, click the edit
icon (once at the top of the page, and then again by the rule) to edit the rule.
Delete the existing THEN rule and replace it by clicking Add action > Forward
to.... In the resulting THEN configuration, specify the same target group you
have created. Under Group-level stickiness, enable stickiness and set duration
to 1 day. Save the setting and then click Update.
Select the load balancer you have configured for this deployment, and then click Actions >
Edit attributes. Set Idle timeout to 400 seconds, and then click Save.
Open AWS Load Balancer page (EC2> Load Balancers), select the load balancer instance
that you just set up.
Under Description, copy the DNS name and paste it into a browser to access the Tableau
Server sign in page.
If you get a 500-level error, then you may need to restart your proxy servers.
Verify connectivity
After your DNS updates are finished, you should be able to navigate to the Tableau Server
sign-in page by entering your public URL, for example, https://tableau.example.com.
This example uses Mellon as a pre-authentication service provider module on the reverse
proxy servers. This configuration ensures that only authenticated traffic connects to Tableau
Server, which also acts as a service provider with the Okta IdP. Therefore, you must configure
two IdP applications: one for the Mellon service provider and one for the Tableau service pro-
vider.
The first step is to create an account on Tableau Server with a Server Administrator role. For
the example Okta scenario, the username must be in a valid email address format, for
example, user@example.com. You must set a password for this user, but the password will
not be used after SAML is configured.
Each of these applications are associated with different metadata that you will need to con-
figure on the reverse proxy and Tableau Server, respectively.
This procedure describes how to create and configure the Okta pre-auth application. Later in
this topic you will create the Okta Tableau Server application. For a free test Okta account
with limited users, see the Okta Developer web page.
Create a SAML app integration for the Mellon pre-authentication service provider.
1. Open the Okta administration dashboard > Applications > Create App Integration.
2. On Create a new app integration page, select SAML 2.0 and then click Next.
3. On the General Settings tab, enter an App name, for example Tableau Pre-Auth,
and then click Next.
l Single sign on (SSO) URL. The final element of the path in the single sign on
URL is referred to as the MellonEndpointPath in the mellon.conf con-
figuration file that follows later in this procedure. You can specify whatever end-
point you would like. In this example, sso is the endpoint. The last element,
postResponse, is required: https://t-
ableau.example.com/sso/postResponse.
l Clear the checkbox: Use this for Recipient URL and Destination URL.
Click Next.
l In Okta: Applications > Applications > Your new application (e.g., Tableau
Pre-Auth) > Sign On
l Adjacent to SAML Signing Certificates, click View SAML setup instructions.
l On the How to Configure SAML 2.0 for <pre-auth> Application, page, scroll
down to Optional section, Provide the following IDP metadata to your SP
provider.
l Copy the contents of the XML field and save them in a file called pre-auth_
idp_metadata.xml.
l In Okta: Applications > Applications > Your new application (e.g., Tableau
Pre-Auth) > Sign On
l Under Sign On Policy, click Add Rule.
l On the App Sign On Rule, specify a name and the different MFA options. To test
functionality, you can leave all options as default. However, under Actions, you
must select, Prompt for factor, and then specify how often users must sign in.
Click Save.
You must have a copy of pre-auth_idp_metadata.xml file that you created from the
Okta configuration.
1. Change directory:
cd /etc/httpd/mellon
The return URL is referred to as the single sign on URL in Okta. The final element of
the path in the return URL is referred to as the MellonEndpointPath in the mel-
lon.conf configuration file that follows later in this procedure. In this example, we spe-
cify sso as the endpoint path.
For example:
sudo /usr/libexec/mod_auth_mellon/mellon_create_metadata.sh
https://tableau.example.com "https://tableau.example.com/sso"
The script returns the service provider certificate, key, and metadata files.
3. Rename the service provider files in the mellon directory for easier readability. We will
refer to these files by the following names in the documentation:
<Location />
MellonSPPrivateKeyFile /etc/httpd/mellon/mellon.key
MellonSPCertFile /etc/httpd/mellon/mellon.cert
MellonSPMetadataFile /etc/httpd/mellon/sp_metadata.xml
MellonIdPMetadataFile /etc/httpd/mellon/pre-auth_idp_
metadata.xml
MellonEndpointPath /sso
MellonEnable "info"
</Location>
Inside the <VirtualHost *:80> block, add the following content. Update Server-
Name with the public host name in your Entity ID:
Add the Location block outside of the <VirtualHost *:80> block. Update Mel-
lonCookieDomain with the top-level domain to preserve cookie information as
shown:
<Location />
AuthType Mellon
MellonEnable auth
Require valid-user
MellonCookieDomain example.com
</Location>
The complete tableau.conf file should look like the following example:
<VirtualHost *:80>
ServerAdmin admin@example.com
ProxyHCExpr ok234 {%{REQUEST_STATUS} =~ /^[234]/}
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e;
path=/" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://tableau>
BalancerMember http://10.0.3.36/ route=1 hcmethod=GET hcex-
pr=ok234 hcuri=/favicon.ico
BalancerMember http://10.0.4.15/ route=2 hcmethod=GET hcex-
pr=ok234 hcuri=/favicon.ico
ProxySet stickysession=ROUTEID
</Proxy>
ProxyPreserveHost On
ProxyPass / balancer://tableau/
ProxyPassReverse / balancer://tableau/
DocumentRoot /var/www/html
If the configuration test returns an error, fix any errors and run configtest again. A suc-
cessful configuration will return, Syntax OK.
9. Restart httpd:
5. Click the Identity Provider metadata link, to launch a browser. Copy the browser link.
This is the link you will use when you configure Tableau in the procedure that follows.
6. Click Done.
7. Assign the new Tableau Server Okta app to your user (user@example.com): Click the
user name then assign the application in Assign Application.
1. Download the Tableau Server application metadata from Okta. Use the link that you
saved from the previous procedure:
wget https://dev-66144217.okta.-
com/app/exk1egxgt1fhjkSeS5d7/sso/saml/metadata -O idp_
metadata.xml
2. Copy a TLS certificate and related key file to the Tableau Server. The key file must be
an RSA key. For more information about SAML certificate and IdP requirements, see
SAML Requirements (Linux).
If you do not have a TLS certificate, you can generate a self-signed certificate using the
embedded procedure below.
You will be prompted to enter values for the certificate fields. For example:
d. Sign the new certificate with the CA certificate that you created above. The fol-
lowing command also outputs the certificate in the crt format:
e. Convert the key file to RSA. Tableau requires an RSA key file for SAML. To con-
vert the key, run the following command:
3. Configure SAML. Run the following command, specifying your entity ID and return
URL, and the paths to the metadata file, certificate file, and key file:
4. If your organization is running Tableau Desktop 2021.4 or later, then you must run the
following command to enable authentication through the reverse proxy servers.
Versions of Tableau Desktop 2021.2.1 - 2021.3 will work without running this com-
mand, provided that your pre-authentication module (e.g., Mellon) is configured to
allow top-level domain cookie preservation.
Validation troubleshooting
Bad Request: A common error for this scenario is a "Bad Request" error from Okta. Often this
issue occurs when the browser is caching data from previous Okta session. For example, if
you manage the Okta applications as an Okta administrator and then attempt to access
Tableau using a different Okta-enabled account, session data from the administrator data may
cause the "Bad Request" error. If this error persists even after you clear the local browser
cache, try validating the Tableau scenario by connecting with a different browser.
Another cause of the "Bad Request" error is a typo in one of the many URLs that you enter dur-
ing the Okta, Mellon, and SAML configuration processes. Check all of these carefully.
Often the httpd error.log file on the Apache server will specify which URL is causing the
error.
Not Found - The requested URL was not found on this server: This error indicates one of
many configuration errors.
If the user is authenticated with Okta, and then receives this error, then it's likely that you have
uploaded the Okta pre-auth application to Tableau Server when you configured SAML. Verify
that you have the Okta Tableau Server application metadata configured on Tableau Server,
and not the Okta pre-auth application metadata
To configure SSL from the load balancer to Tableau Server, you must:
l Install a valid SSL certificate on both the Tableau and proxy servers.
l Configure SSL from the load balancer to the reverse proxy servers.
l Configure SSL from the proxy servers to Tableau Server.
l You may also configure SSL from Tableau Server to the PostgreSQL instance.
The remainder of this topic describes this implementation in the context of the example AWS
example reference architecture.
The Linux procedures throughout this example show commands for RHEL-like distributions.
Specifically the commands here have been developed with the Amazon Linux 2 distribution. If
you are running the Ubuntu distribution, edit the commands accordingly.
Alternatively, you may generate self-signed certificates or use certificates from a PKI for TLS.
The following procedure how to generate self-signed certificates. If you are using 3rd party cer-
tificates as we recommend, then you can skip this procedure.
Run this procedure on one of the proxy hosts. After you generate the certificate and associated
key, you will share it to the other proxy host and to Tableau Server Node 1.
You will be prompted to enter values for the certificate fields. For example:
4. Sign the new certificate with the CA certificate that you created in step 2. The following
command also outputs the certificate in the crt format:
3. Copy the crt and key files to the following /etc/ssl/ paths:
RewriteEngine on
RewriteCond %{SERVER_NAME} =tableau.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI}
[END,NE,R=permanent]
l In the SSL rewrite block, update the RewriteCond server name: add your pub-
lic host name, for example, tableau.example.com
l Change <VirtualHost *:80> to <VirtualHost *:443>.
l Wrap the <VirtualHost *:443> and the <Location /> blocks with
<IfModule mod_ssl.c> ... </IfModule>.
SSLEngine on
SSLCertificateFile /etc/ssl/certs/serverssl.crt
SSLCertificateKeyFile /etc/ssl/private/serverssl.key
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
RewriteEngine on
RewriteCond %{SERVER_NAME} =tableau.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R-
R=permanent]
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin admin@example.com
ProxyHCExpr ok234 {%{REQUEST_STATUS} =~ /^[234]/}
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e;
path=/" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://tableau>
BalancerMember https://10.0.3.36/ route=1 hcmethod=GET hcex-
pr=ok234 hcuri=/favicon.ico
BalancerMember https://10.0.4.15/ route=2 hcmethod=GET hcex-
pr=ok234 hcuri=/favicon.ico
ProxySet stickysession=ROUTEID
</Proxy>
ProxyPreserveHost On
6. Restart httpd:
For example, if you are using a Okta pre-auth application, you will need to update the applic-
ation to use HTTPS protocol for the Recipient URL and the Destination URL.
In Target Groups, select the HTTP target group that has been configured for the load
balancer, click Actions, and then click Register and deregister instance.
On the Register and deregister targets page, select the instances that are currently
configured, click Deregister, and then click Save.
l Select "Instances"
l Enter a target group name, for example TG-internal-HTTPS
l Select your VPC
l Protocol: HTTPS 443
l Under Health checks > Advanced health checks settings > Success codes,
append the code list to read: 200,303.
l Click Create.
3. Select the target group that you just created, and then click the Targets tab:
l Open AWS Target Group page (EC2> Load Balancing> Target groups),
select the target group instance that you just set up. On the Action menu, select
Edit attributes.
l On the Edit attributes page, select Stickiness, specify a duration of 1 day,
and then Save changes.
5. On load balancer, update listener rules. Select the load balancer you have configured
for this deployment, and then click the Listeners tab.
l For HTTP:80, click View/edit rules. On the resulting Rules page, click the edit
icon (once at the top of the page, and then again by the rule) to edit the rule.
Delete the existing THEN rule and replace it by clicking Add action > Redirect
to.... In the resulting THEN configuration, specify HTTPS and port 443 and leave
the other options to default settings. Save the setting and then click Update.
l For HTTP:443, click View/edit rules. On the resulting Rules page, click the edit
icon (once at the top of the page, and then again by the rule) to edit the rule. In
the THEN configuration, under Forward to... change theTarget group to the
HTTPS group that you just created. Under Group-level stickiness, enable stick-
iness and set duration to 1 day. Save the setting and then click Update.