Forum Discussion

vcmirko's avatar
vcmirko
Icon for Nimbostratus rankNimbostratus
Sep 12, 2019

Is loadbalancing over 2 or multiple HA-groups possible ?

I have an application that has 6 servers. Each server is an active member to write & read.

The servers are split over 2 sites. (each site has 3 servers).

I would like to have a single DNS entry point that loadbalances over all 6 servers.

 

However, each site can only cope with 1 server failure. If I have 2 failures within 1 site, the entire site should be excluded from the pool.

 

Is this possible with an F5 loadbalancer (or any loadbalancer ?)

The loadbalancer itself should also be HA.

 

So basically i'd love a solution with 2 loadbalancers as an HA-pair, should loadbalance over 6 nodes, over 2 sites with 1 entry point.

A site can no longer serve data when 2 nodes go down.

2 Replies

  • Hi

    You can do it easly.

    - So you have only a single point of entry. 

    Your virtual server listne in IP (listening service) : 192.168.1.1:443 (HTTPS)

    your VS manage 2 sites: site1.domain.com and site2.domain.com.

    - you create 2 Arecord with the same IP:

    192.168.1.1 site1.domain.com

    192.168.1.1 site2.domain.com

    - Now you have to create 2 Pool:

    Pool1: for site 1

    - server1

    - server2

    - server3

    Pool2: for site 2

    - server4

    - server5

    - server6

    - You have to create a LTM Policy in order to route request depending to hostname:

    site1.domain.com --> pool1

    site2.domain.com --> pool2

    - And you can set this irule on your VS:

    This Irule allow you to detect the number of remaining servers up

    when CLIENT_ACCEPTED {
     
       Check if the VS default pool has no active members
     
      if {[active_members [LB::server pool]] == 1}{
     
    		# redirect to a sorry page
     
        pool sorry_pool
     
      }
     
    }

    I hope I have correctly understood your request. it's the notion of a site that I have not really understood, but if you give me more details I could sketch out my explanation.

    regards

  • Hi,

     

    It are actually 2 datacenters (sites). The applications are cassandra database based. So as soon as 2 cassandra nodes drop, I lose consistency and the last surviving node in that site cannot handle any writes.

     

    However, the 2 sites are in terms of speed equal with high bandwidth in between, hence the balancing over all nodes with 1 entry point, as if both sites were just 1 big application.

     

    i was told that was not possible in active/active. So wanted to double check.

     

    Not sure why you redirect to a sorry page. I actually want to continue processing in the other site.

     

    So :

    • 1 dns name, 6 nodes
    • 2 sites, each 3 nodes
    • service should ALWAYS be running
    • if 1 node fails, it gets excluded from the pool, both sites continue to process
    • if 2 nodes fail within the same site, that entire site is excluded from the pool, leaving the other site to continue handling the requests

     

    Unless the 2 sites fail with 2 nodes each, I should never get a 500 error.