How to Configure Apache Load Balancer Updated on August 16, 2021 by InMotion Hosting Contributor 5 Minutes, 9 Seconds to Read Load balancing is the process of distributing traffic across multiple servers for high-availability (HA) and elastic scalability. Many system administrators opt for dedicated software such as HAProxy to incorporate a proxy server. But with the mod_proxy_balancer module, you can easily use an unmanaged Linux cloud server as an Apache load balancer for domains or specified URIs. Then, you can add other unmanaged or cPanel servers to your server pool configuration with an additional line of code. Such server environments usually include a software or hardware RAID solution. cPanel load balancing isn’t an option as of February 2021. However, there are many open discussions regarding future implementation. There are multiple load balancing methods. We’ll cover round robin below but the Apache load balancer module can also distribute traffic requests by server load, readiness, or authorized traffic capacity. Continue reading to learn how to: Install Apache on the Load Balancer ServerEnable Proxy Server ModulesConfigure Apache Load BalancingConfigure Apache Load Balancer Manager Install Apache on the Load Balancer Server Log into SSH. Afterwards, install Apache web server on the load balancer server from your Linux distribution (distro) repositories (e.g. CentOS, Ubuntu, etc.). For better server security, enable the ModSecurity Apache module as well. Enable Proxy Server Modules You’ll need the following Apache modules for load balancing: proxyproxy_httpProxy_balancer (for Balancer Manager)lbmethod_bytraffic (for round robin load balancing) Ensure the necessary modules are enabled. CentOS: httpd -M | grep 'proxy\|lbmethod' Debian: apache2ctl -M | grep 'proxy\|lbmethod' If any module listed above is not installed or enabled, enable it. CentOS: yum install [module] Debian: a2enmod [module] Restart Apache if you had to enable a module. CentOS: systemctl restart httpd Debian: Systemctl restart apache2 Configure Apache Load Balancing Create and edit a new load balancer file using Nano, Vim, Emacs, etc. CentOS: nano /etc/httpd/conf.d/loadbalancer.conf Debian: Nano /etc/apache2/conf-enabled/loadbalancer.conf The name of the file doesn’t matter. What matters is that the file is titled for you to easily remember what it is, is in the correct directory for your distro, and ends with the .conf file extension. Add the code block below, but replace the following: serverpool with your preferred name for the balancer functionIP addresses with the IP, domain, or server hostname of your web servers along with the port numbersitePass with the URI which will redirect to the server pool members <proxy balancer://serverpool> BalancerMember http://1.2.3.4:80 BalancerMember http://5.6.7.8:80 ProxySet lbmethod=bytraffic </proxy> ProxyPass "/site" "balancer://serverpool/" ProxyPassReverse "/site" "balancer://serverpool/" If you plan to add domains with a valid SSL certificate, you may need to install the mod_ssl Apache module as well. Save changes and restart Apache: systemctl restart httpd or systemctl restart apache2 Terminal tip: Use your up arrow key to quickly reuse commands from your .bash_history file. Open the URL to your load balancer function in a web browser. It should display the website from one of the balancer members. When you refresh the page, it should show the next balancer member. If not, try a private browsing session. If your load balancer doesn’t work, start troubleshooting with your Apache error_log. Configure Apache Load Balancer Manager The Apache Balancer Manager allows you to monitor and manage your load balancing configuration. This is optional but a light-weight monitoring solution. For more advanced options, look into security information and event management (SIEM) solutions such as ELK Stack or Splunk. Ensure you have proxy_balancer_module enabled before continuing below. Apache Load Balancer Manager settings To get started, create and edit a new Apache configuration file. CentOS: nano /etc/httpd/conf.d/loadbalancer-manager.conf Debian: nano /etc/apache2/conf-enabled/loadbalancer-manager.conf Again, the name of the file doesn’t matter, only the directory and .conf file extension. Add the following code block to the file, replacing “lb-manager” with your preferred URI for accessing the page. <location "/lb-manager"> SetHandler balancer-manager allow from all </location> By default, the page is publicly accessible. To configure Apache Load Balancer Manager securely, add the next code block above the </location> line. Then, use htpasswd to create user credentials to restrict the page to authorized users only. Change “AuthName” to match your location URI and “AuthUserFile” with the appropriate file path per your distro. CentOS: AuthType "basic" AuthName "lb-manager" AuthUserFile /etc/httpd/htpasswd Require valid-user Debian: AuthType "basic" AuthName "lb-manager" AuthUserFile /etc/apache2/htpasswd Require valid-user Create a htpasswd file. Replace “admin” at the end with an obscure username. CentOS: htpasswd -c /etc/httpd/htpasswd admin Debian: htpasswd -c /etc/apache2/htpasswd admin You’ll be prompted for a password. Enter the password twice. Save it in a password manager like KeePass. Add the following to the bottom of your load balancer configuration file, replacing “lb-manager” to match your balancer manager location: ProxyPass "/lb-manager" "!" Restart Apache. Open the URL in your web browser to access your balancer-manager:http://[serverhostname]/[lb-manager] If you used htpasswd, you’ll be prompted for an username and password before you can continue. Load Balancer Manager will display the following notable information: Web server versionWhether Load Balancer changes are retained upon system rebootLoadBalancer members, or work URLs, along with server load statistics You can make changes by clicking the balancer://[serverpoolname] link. Options to edit balancer settings include: LBMethod – bytraffic, heartbeat (ready capacity over time but not fully idle), bybusyness, byrequests (you’ll need to have the appropriate modules enabled for the respective method)TimeoutFailover AttemptsDisable FailoverSticky Session to ensure users are bound to a specific server By default, changes here don’t persist on restart. To change this, add the line below to the bottom of your load balancer configuration file. BalancerPersist On Restart Apache. Upon refreshing Apache Load Balancer Manager, you’ll see: “Balancer changes will be persisted on restart.” Learn more about server administration from our Cloud Server Hosting Product Guide. Experience full control over your server environment and deploy the best operating and management systems that fit your needs with our reliable Cloud VPS Hosting! Share this Article InMotion Hosting Contributor Content Writer InMotion Hosting contributors are highly knowledgeable individuals who create relevant content on new trends and troubleshooting techniques to help you achieve your online goals! More Articles by InMotion Hosting Related Articles How to Add mod_expires to your .htaccess How to Hide Your Apache Version and Linux OS From HTTP Headers How to Enable HTTP/2 in Apache How to Install the ModSecurity Apache Module How to Install Apache on CentOS 7 Replace Apache Servername in HTTP Headers View level of traffic with Apache access log View request type, URL, and response codes from Apache access log Apache Codes How to Add Apache Modules