DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
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.