Difference between revisions of "Configure Apache load balancer with mod proxy"
(→Define Apache Load-balancer) |
(→Define Apache Load-balancer) |
||
Line 10: | Line 10: | ||
This server will handle all HTTP requests from site visitors. As you might see, this means even though you run a load balanced system, using only a single load balancer means you still have a SPOF (single point of failure). It is also possible to configure an environment where yet another server will act as the fail-over load-balancer if the first one fails, but this is outside the scope of this guide. | This server will handle all HTTP requests from site visitors. As you might see, this means even though you run a load balanced system, using only a single load balancer means you still have a SPOF (single point of failure). It is also possible to configure an environment where yet another server will act as the fail-over load-balancer if the first one fails, but this is outside the scope of this guide. | ||
− | To set up our load-balancer, we use the Apache web-server and its modules [https://httpd.apache.org/docs/2.4/mod/mod_proxy.html mod_proxy] | + | To set up our load-balancer, we use the Apache web-server and its modules [https://httpd.apache.org/docs/2.4/mod/mod_proxy.html mod_proxy], [https://httpd.apache.org/docs/2.4/mod/mod_proxy_http.html mod_proxy_http] and [https://httpd.apache.org/docs/2.4/mod/mod_proxy_balancer.html mod_proxy_balancer]. These are part of most of the Apache web-server distributions. |
First, create a virtual host handling the requests for your domain: ldproxy.org | First, create a virtual host handling the requests for your domain: ldproxy.org | ||
Line 46: | Line 46: | ||
Furthermore we can note that the Apache server adds a Cookie ROUTEID to make sessions sticky and redirect all subsequent requests to the same LogicalDOC node of the cluster | Furthermore we can note that the Apache server adds a Cookie ROUTEID to make sessions sticky and redirect all subsequent requests to the same LogicalDOC node of the cluster | ||
+ | |||
+ | The setting ProxySet [https://httpd.apache.org/docs/2.4/mod/mod_lbmethod_byrequests.html lbmethod=byrequests] distribute the requests among the various workers to ensure that each gets their configured share of the number of requests. | ||
== Configure Tomcat == | == Configure Tomcat == |
Revision as of 12:52, 27 June 2019
Server setup
The layout may look something like this (we will refer to these names through the rest of the guide).
Define Apache Load-balancer
This server will handle all HTTP requests from site visitors. As you might see, this means even though you run a load balanced system, using only a single load balancer means you still have a SPOF (single point of failure). It is also possible to configure an environment where yet another server will act as the fail-over load-balancer if the first one fails, but this is outside the scope of this guide.
To set up our load-balancer, we use the Apache web-server and its modules mod_proxy, mod_proxy_http and mod_proxy_balancer. These are part of most of the Apache web-server distributions.
First, create a virtual host handling the requests for your domain: ldproxy.org
<VirtualHost *:80>
ServerName ldproxy.org
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ProxyRequests Off
ProxyPreserveHost On
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://mycluster>
BalancerMember "http://eva00:9080" route=1
BalancerMember "http://192.168.2.15:8082" route=2
ProxySet lbmethod=byrequests
ProxySet stickysession=ROUTEID
</Proxy>
ProxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/
ErrorLog ${APACHE_LOG_DIR}/proxy-error.log
CustomLog ${APACHE_LOG_DIR}/proxy-access.log combined
</VirtualHost>
The load balancer nodes are two LogicalDOC servers that are accessed by IP and by hostname (eva00), of course the Apache server must be able to resolve the hostname.
Furthermore we can note that the Apache server adds a Cookie ROUTEID to make sessions sticky and redirect all subsequent requests to the same LogicalDOC node of the cluster
The setting ProxySet lbmethod=byrequests distribute the requests among the various workers to ensure that each gets their configured share of the number of requests.
Configure Tomcat
You need to change the configuration of the Tomcat in LogicalDOC. Generally it is a matter of modifying the file server.xml located in the /tomcat/conf folder
Tomcat config: LOGICALDOC_HOME/tomcat/conf/server.xml
In this file we are going to add the proxyName and proxyPort attributes to the Connector element
<Connector port="8082" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8445"
URIEncoding="UTF-8" server="Undisclosed/8.41" proxyName="ldproxy.org" proxyPort="80" />
The proxyName will cause servlets inside this web application to think that all proxied requests were directed to ldproxy.org on port 80