Purpose
How to setup a simple cluster of OFBiz instances with a load balancer and failover; getting some insights on the architecture; setting up an environment useful for tests and experiments.
Setup Components
A load balancer: we will use HAProxy
OFBiz: we will use the OFBiz trunk (but the same setup will work for any version of OFBiz)
At least three hosts, whose IP addresses will be needed to complete the setup and perform the experiments:
HOST_0: for the load balancer
HOST_1: for the first OFBiz instance of the cluster and for the OFBiz database
HOST_2: for the second OFBiz instance of the cluster (connected to the database in HOST_1)
Steps
Download and install HAProxy (load balancer) in Host_0
Setup one database, shared by all OFBiz instances of the cluster, in Host_1
Download and setup (at least) two instances of OFBiz in Host_1 and Host_2 (cluster of 2 instances)
Create a configuration file for HAProxy, as illustrated below
Start HAProxy and the two OFBiz instances
Connect to the HAProxy monitor application to make sure that the instances are up and running
Connect from a browser to OFBiz thru the load balancer; start/stop one of the OFBiz instances; etc…
HAProxy Configuration
The load balancer in one host accepting connections on OFBiz default ports (8080 and 8443).
Each incoming connection is assigned, according to the “round robin” algorithm, to one of the two OFBiz instances of the cluster. Each instance is in a separate host.
The load balancer implements session stickiness by redirecting the incoming connection from the same IP address to the same instance of the cluster.
The health of each instance of the cluster is checked every 5 seconds and if an instance is not responsive the incoming connections are sent to another instance of the cluster.
The load balancer supports both plain text and encrypted traffic (SSL/TLS), thus supporting HTTP and HTTPs traffic. No encryption/decryption is performed by the load balancer that acts as a “transparent proxy”.
To complete the configuration:
Replace <HOST_1> and <HOST_2> with the IP addresses of the hosts in which the two OFBiz instances of the cluster are
Add additional server elements for each of the instances in your cluster
(optional) change the URI used to test the instance health; in this configuration, it uses the default ecommerce application (/ecommerce/control/main)
global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy stats socket /run/haproxy/admin.sock mode 660 level admin stats timeout 30s user haproxy group haproxy daemon # Default SSL material locations ca-base /etc/ssl/certs crt-base /etc/ssl/private ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS ssl-default-bind-options no-sslv3 defaults log global mode http option dontlognull timeout http-request 5s timeout connect 5s timeout server 10s timeout client 30s errorfile 400 /etc/haproxy/errors/400.http errorfile 403 /etc/haproxy/errors/403.http errorfile 408 /etc/haproxy/errors/408.http errorfile 500 /etc/haproxy/errors/500.http errorfile 502 /etc/haproxy/errors/502.http errorfile 503 /etc/haproxy/errors/503.http errorfile 504 /etc/haproxy/errors/504.http #######################**HTTP**############################## frontend HTTP_LB bind *:80 reqadd X-Forwarded-Proto:\ http compression algo gzip compression type text/html text/plain text/javascript application/javascript application/xml text/css default_backend HTTP_LB backend HTTP_LB mode http stats enable stats hide-version stats uri /stats stats realm Haproxy\ Statistics stats auth admin:admin # Credentials for HAProxy Statistic report page. balance roundrobin # Load balancing will work in round-robin process. option httpchk GET /ecommerce/control/main HTTP/1.0 option httpclose option forwardfor stick-table type ip size 400k expire 30m stick on src default-server inter 5s server ofbiz234 HOST_1:8080 check id 1 server ofbiz235 HOST_2:8080 check id 2 ####################**HTTPS**########################## frontend HTTPS_LB bind :443 mode tcp compression algo gzip compression type text/html text/plain text/javascript application/javascript application/xml text/css default_backend HTTPS_LB backend HTTPS_LB mode tcp balance roundrobin option forwardfor option httpchk GET /ecommerce/control/main HTTP/1.0 stick-table type ip size 400k expire 30m stick on src default-server inter 5s server ofbiz234 HOST_1:8443 check port 8080 id 1 server ofbiz235 HOST_2:8443 check port 8080 id 2
Test environment for experiments is now set.
Access Monitoring Tool
To access the monitoring tool browse at http://<HOST_0>/stats (user: admin and password: admin), replace <HOST_0> with the IP address of the host in which HAProxy is installed.
DCC
If you use this remember to have a look at Distributed Entity Cache Clear (DCC) Mechanism
If you have any questions, subscribe and post to OFBiz user mailing at: user@ofbiz.apache.org.