9.6 Load Balancing

The Content Editor Appliance is configured by using HAProxy for load balancing. Load balancing refers to efficiently distributing incoming network traffic across a group of backend servers, also known as a server farm or server pool.For Collaborative Editing to function correctly, you need to ensure that all the users editing the same document are served by the same Content Editor Appliance. Using the WOPI protocol, the https URL includes a unique identifier (WOPISrc) for use with this document. Thus load balancing can be done by using WOPISrc – ensuring that all URLs that contain the same WOPISrc are sent to the same Content Editor Appliance.

The browser reaches the proxy with the HTTPS protocol. The proxy terminates the HTTPS connection and passes traffic to backends via HTTP. Therefore, in CE’s config file, in /var/opt/novell/contenteditor/loolwsd/loolwsd.xml, or in the command line which starts loolwsd daemon, SSL should be disabled, and SSL termination should be enabled as shown below:

NOTE:For load balancing to work,all the nodes must run the same version of Content Editor Appliance. You cannot upgrade the Content Editor with one node and continue with the older version on another node.

frontend loolwsd
       bind *:443 ssl crt /path/to/your/certificate_and_key.pem
       mode http
       default_backend loolwsd

backend loolwsd
      timeout tunnel 3600s
      mode http
      balance balance url_param WOPISrc check_post
      hash-type consistent
      server loolwsd01 127.0.0.1:9993
      server loolwsd02 127.0.0.1:9994

The SSL termination option in the config file enables integration of Content Editor with SSL termination proxies, which handle incoming SSL connections, decrypt the SSL and pass on the unencrypted request to the server. In this setup only the proxy server has to have proper SSL settings, the Content Editor server is hidden behind it, and Content Editor communicates unencrypted with the proxy.

Sample configuration for Load Balancing with HAProxy

Add the following blocks to haproxy.cfg:

Frontend loolwsd
bind *:443 ssl crt /Path to your certificate_and_key.pem
http-request set-header X-HAProxy-loolwsd %[url_param(WOPISrc)]
mode http 
default_backend loolwsd 
backend loolwsd 
timeout tunnel 3600s 
mode http                                                                  balance hdr(X-HAProxy-loolwsd)                                                      server lool1 <CE Server 1 IP>:9980                                           server lool2 <CE Server 2 IP>:9980                                       server lool3 <CE Server 3 IP>:9980                                        server loolN <CE Server N IP>:9980

Here CE server 1, 2 and 3 are different CE nodes.

NOTE:If users are not able to perform an Online Edit when Filr is configured with AAF and CE is configured with Ha-Proxy Load Balancer, then add enable.content.editor.check=false to/opt/novell/filr/apache-tomcat/webapps/ssf/WEB-INF/classes/config/ssf-ext.properties and restart the Filr service.