Add a Load Balancer

You can enhance the reliability of Tableau Server by running gateways on multiple nodes, and configuring a load balancer to distribute requests across the gateways. Unlike the repository process, which can be active or passive, all gateway processes are active. If one gateway in a cluster becomes unavailable, the load balancer stops sending requests to it. The load balancer algorithm you choose determines how the gateways will route client requests.

Notes: If you will be using Kerberos authentication, you need to configure Tableau Server for your load balancer before you configure Tableau Server for Kerberos. For more information, see Configure Kerberos.

Windows SSPI authentication is not supported with a load balancer.

Note the following as you configure your load balancer to work with Tableau Server:

  • Tested load balancers: Tableau Server clusters with multiple gateways have been tested with Apache and F5 load balancers.

    If you are using an Apache load balancer and creating custom administrative views, you need to connect directly to the Tableau Server repository. You cannot connect through the load balancer.

  • Tableau Server URL: When a load balancer is in front of a Tableau Server cluster, the URL that's accessed by Tableau Server users belongs to the load balancer, not the initial Tableau Server node.

  • Single load balancer endpoint: You must configure your load balancers for a single URL endpoint. You cannot configure different endpoint hosts to redirect to the same Tableau Server deployment. The single external URL is defined in gateway.public.host when you configure Tableau Server, as described in the procedure below.

  • Trusted host settings: The computer running the load balancer must be identified to Tableau Server as a trusted host. See the procedure below for how to configure Tableau Server.

  • Proxy server configurations: The settings used to identify a load balancer to Tableau Server are the same ones that are used to identify a proxy server. If your Tableau Server cluster requires both a proxy server and a load balancer, both must use a single external URL defined in gateway.public.host and all proxy servers and load balancers must be specified in gateway.trusted and gateway.trusted_hosts. For more information, see Configuring Proxies for Tableau Server.

Configure Tableau Server to work with a load balancer

Use the following key-value pairs to configure Tableau Server for a load balancer. You can set the values individually with the tsm configuration set command.

Or, use the configuration file template example at the end of this topic to create a configKey json file. After you have filled in the options with the appropriate values, pass the json file and apply settings with tsm commands.

Load balancer configuration key-value pairs

The key-value pairs described in this section can be set with the tsm configuration set command. After you have set all values, run the following command:

tsm pending-changes apply

gateway.public.host

Value: name

The value, name is the URL that will be used to reach Tableau Server through the load balancer.

For example, if Tableau Server is reached by entering tableau.example.com in a browser address bar, enter this command:

tsm configuration set -k gateway.public.host -v "tableau.example.com"

gateway.public.port

Value: port_number

By default, Tableau assumes that the load balancer is listening on port 80 for external communications. Use this key to specify a different port.

For example, if your load balancer is configured for SSL and listening on port 443, enter the following command:

tsm configuration set -k gateway.public.port -v "443"

gateway.trusted

Value: server

Specify the load balancer(s) IPv4 address or host name. If you are using an internal load balancer, you must use IP addresses, not host names.

The value for server can be a comma-separated list, for example:

tsm configuration set -k gateway.trusted -v "10.32.139.45, 10.32.139.46, 10.32.139.47"

or

tsm configuration set -k gateway.trusted -v "proxy1, proxy2, proxy3"

gateway.trusted_hosts

Value:

Specify alternate names for the load balancer(s), such as its fully-qualified domain name, any non-fully-qualified domain names, and any aliases. These are the names a user might type in a browser. Separate each name with a comma:

tsm configuration set -k gateway.trusted_hosts -v "name1, name2, name3"

For example:

tsm configuration set -k gateway.trusted_hosts -v "lb.example.com, lb, ftp.example.com, www.example.com"

In most cases, if there are no alternative names for the load balancer, you may enter the same value for this key as you entered for the gateway.public.host key.

Configuration template example

You can configure all of the settings in one operation by customising the following configuration template example and creating a configKey json file.

Refer to the key-value pair descriptions above to customise the values for your organisation.

{
 "configKeys": {
	"gateway.public.host": "tableau.example.com",
	"gateway.public.port": "443",
	"gateway.trusted": "proxy1, proxy2, proxy3",
	"gateway.trusted_hosts": "lb.example.com, lb, ftp.example.com, www.example.com"
	}
}

When you are finished, save the json file.

Pass the json file with tsm to set the configuration, and then apply settings by running the following commands:

tsm settings import -f /path/to/file.json

tsm pending-changes apply

For more information about using configKey schemes, see Configuration File Example.

Thanks for your feedback!