Hi,
I have a pair of servers that work as a cluster (let’s say web_server and database_server) and I have 2 instance of each server. I want web_server_1 to be reachable only if database_server_1 is up and vice versa. I also want to do load balancing between each two web_servers and each two database_servers. I come up with something like below but I miss load balancing because of using the keyword use-server so it always go to the first one when both servers are up. I have also configured the backends to use cookies.
frontend frontend_web
bind *:8080
option http-server-close
acl acl_databaseserver path_beg /database
use_backend backend_databaseserver if acl_databaseserver
default_backend backend_webserverbackend backend_webserver1
option forwardfor
option log-health-checks
option httpchk
http-check send meth GET uri /web/check
http-check expect status 200
server webserver1 webserver1.local:8080 checkbackend backend_webserver2
option forwardfor
option log-health-checks
option httpchk
http-check send meth GET uri /web/check
http-check expect status 200
server webserver2 webserver2.local:8080 checkbackend backend_databaseserver1
option forwardfor
option log-health-checks
option httpchk
http-check send meth GET uri /database/check
http-check expect status 200
server databaseserver1 databaseserver1.local:8080 checkbackend backend_databaseserver2
option forwardfor
option log-health-checks
option httpchk
http-check send meth GET uri /database/check
http-check expect status 200
server databaseserver2 databaseserver2.local:8080 checkbackend backend_webserver
balance roundrobin
cookie SHARDID insert indirect nocache
acl isavail_databaseserver1_shard_s1 nbsrv(backend_databaseserver1) gt 0
acl isavail_webserver1_shard_s1 nbsrv(backend_webserver1) gt 0
acl isavail_databaseserver2_shard_s2 nbsrv(backend_databaseserver2) gt 0
acl isavail_webserver2_shard_s2 nbsrv(backend_webserver2) gt 0
use-server webserver1_s1 if isavail_databaseserver1_shard_s1 isavail_webserver1_shard_s1
use-server webserver2_s2 if isavail_databaseserver2_shard_s2 isavail_webserver2_shard_s2
server webserver1_s1 webserver1.local:8080 cookie s1
server webserver2_s2 webserver2.local:8080 cookie s2backend backend_databaseserver
balance roundrobin
cookie SHARDID insert indirect nocache
acl isavail_databaseserver1_shard_s1 nbsrv(backend_databaseserver1) gt 0
acl isavail_webserver1_shard_s1 nbsrv(backend_webserver1) gt 0
acl isavail_databaseserver2_shard_s2 nbsrv(backend_databaseserver2) gt 0
acl isavail_webserver2_shard_s2 nbsrv(backend_webserver2) gt 0
use-server databaseserver1_s1 if isavail_databaseserver1_shard_s1 isavail_webserver1_shard_s1
use-server databaseserver2_s2 if isavail_databaseserver2_shard_s2 isavail_webserver2_shard_s2
server databaseserver1_s1 databaseserver1.local:8080 cookie s1
server databaseserver2_s2 databaseserver2.local:8080 cookie s2
Any idea on what to use instead of use-server to support load-balancing?
Also if you think I can make the config more simple, feel free to let me know.
thanks.
2 posts - 2 participants