Skip to main content
pdf?stylesheet=default
Blackboard Help

Optional - Set Up Load Balancing for Multiple Application Servers

If you are a Managed Hosting customer, this topic doesn't apply to you.
 

Load balancing distributes workloads across multiple computing resources. You can load balance Blackboard Learn application servers to optimize resource use, maximize throughput, minimize response time, and avoid overloading any single server. Additionally, load balancing may increase reliability through redundancy of the application servers. Blackboard Learn supports load balanced configurations.


Load-balanced configurations

Before attempting to implement a load balanced configuration, read  Load Balancing. There are two supported configurations in a load balanced environment, each with the ability to support TLS-Offloading.

Blackboard Learn only

Complete the following steps before proceeding with setting up your load balancing, performing the necessary validation checkpoints at the end of each step:

  1. Install or Upgrade Learn
  2. Optional - TLS Configuration​
  3. Optional - Set Up Port Forwarding for Single Application Server

Blackboard Learn fronted with a webserver

Complete the following steps before proceeding with setting up your load balancing, performing the necessary validation checkpoints at the end of each step:

  1. Install or Upgrade Learn
  2. Optional - Front Learn with a Webserver (Webserver TLS is covered in this document)

After configuration of the load balancer is completed proceed to:

  1. Troubleshoot the Learn environment post install or upgrade
  2. Test the Learn environment post install or upgrade

Update Learn configuration

If the frontend port and protocol were not set at first installation, these must be updated to match Apache, IIS default website, or load balancer details.

  1. Open bb-config.properties in a text editor such as Notepad.
  2. Locate the bbconfig.frontend section and add the details for the Frontend.

    bbconfig.frontend.fullhostname=<server hostname>
    bbconfig.frontend.portnumber=443
    bbconfig.frontend.protocol=https

    Learn requires TLS at the point of access by users. If Apache or IIS is the point users access the service, these options need to match Apache/IIS. If the load balancer is the point of access by users, ensure the options match the load balancer.

    Note that bbconfig.ssl.offloaded and bbconfig.ssl.offloaded.hostname tags are no longer necessary for offloading TLS and have been removed from bbconfig. TLS offloading is now indicated via inclusion of the x-forwarded-proto in requests.

  3. Restart Learn and propagate the changes by executing:

    /usr/local/blackboard/tools/admin/PushConfigUpdates.sh


Set up the load balancer

Before attempting to set up a load balanced configuration, make sure that Blackboard Learn successfully installed and that you can access it via the expected URLs and ports. This information is covered in the Install Learn and Upgrade Learn topics as well as Post Install and Upgrade Tasks.

After Blackboard Learn is configured and running on the default ports of 8080 and 8443 with the installer-generated or commercial certificate, you may set up the load balancer.

Session affinity

The load balancer must be configured to manage session affinity via session cookies. Refer to the load balancer vendor's documentation for details on adding session cookies.

Ports and forwarding

The Load Balancer should be configured to receive requests on the following ports:

HTTP: 80
HTTPS: 443

The load balancer will be configured to redirect port 80 to port 443 and then forward the request to either a Blackboard Learn only or Blackboard fronted with a web server application server configuration.

All application servers need access to the Internet in order for some services (such as Cloud services, SafeAssign, RSS feeds, Course Cartridges, and some of the mashups like YouTube embedding) to work successfully.

Blackboard Learn only

After you complete the above steps and configure settings, configure the load balancer so it redirects requests from port 80 to port 443. Forward the 443 request to the application server proxy connector on port 8081 if you're using TLS offloading. If you're using TLS re-encryption, use port 8444.

Forwarded request header settings

In order for Blackboard Learn to receive the client browser IP address for logging, the X-Forwarded-For header must be added to requests forwarded to the application server.

Similarly, in order for Blackboard Learn to not attempt to decrypt/encrypt the data stream​ when offloading TLS at the load balancer, the following header needs to be added to the forwarded request: X-Forwarded-Proto: https

Refer to the load balancer vendor's documentation for details on adding X-Forwarded headers and configuring TLS Offloading.

Blackboard Learn fronted with a web server

After you complete the above steps and configure settings, configure the load balancer so it redirects requests from port 80 to port 443. Forward the 443 request to the webserver on port 443.

Forwarded request header settings

If you are using another proxy in the chain, such as application request routing (ARR), confirm it is not setting a X-Forwarded-For header. This would overwrite the X-Forwarded-For set by the load balancer. To avoid overwriting the header, change the name of the header set by ARR. Application Request Routing Cache > Server Proxy Settings > Preserve client IP in the following header-> X-Forwarded-For-xx

The necessary X-Forwarded-For header is added by mod_proxy_http.

X-Forwarded-Proto:https​ is added in the TLS VirtualHost configuration if using TLS-Offloading at the webserver layer.