Forum Discussion

Mike_Harpe_6170's avatar
Mike_Harpe_6170
Icon for Nimbostratus rankNimbostratus
May 16, 2014

User wants perfect 'Round Robin' load distribution

I have a LTM VS with a pool of 40 nodes. The VS is doing SSL offload. The nodes consist of four IP addresses each serving 10 different TCP ports. The hardware is an active/standby pair of 8900s running 10.2.4 with up to date hotfix.

 

The user keeps complaining that the load is not being distributed perfectly evenly in Round Robin mode. What they expect to see is that the load balancing happens in perfect sequence. What they mean is if Node 1 gets a session, the next session should only go to Node 2. I have tried to explain the implications of iRules and CMP and other factors but they are not satisfied.

 

How can I get this behavior? I don't think they will like it once they have it but I am dealing with "it worked that way at the other place" syndrome.

 

Any help is appreciated.

 

Mike Harpe US Army HRC

 

7 Replies

  • Is persistence enabled on the virtual server? If so, that may be playing a role in how the load is being distributed. Something to keep in mind.

     

    Eric

     

  • I should have added that we disabled persistence as part of trying to get this to happen. Thanks for the reply.

     

  • I am seeing Very even load balancing using Least connection member in the pool member settings> Load Balancing Method Least Connections (Member) on my 11050

     

  • I would suggest Least Connections would actually be better.

     

    What you have to remember with Round Robin is that it doesn't take into account the length of a session. So, lets say you had three servers. Connection 1 to server 1 lasts 30 seconds, connection 2 to server 2 lasts 10 minutes, connection 3 to server three lasts 5. Connection 4 to server 1 lasts 29 seconds. Connection 5 to server 2 lasts 3 minutes.

     

    After 1 minute server 1 has 0 connections, server 2 has 2, server 3 has 1.

     

    Keep going and you can see how things get all uneven.

     

  • +1 for WLB's explanation. It might be that the load balancing itself is even, but that actual sessions are greater or lesser on different systems based on what the user is doing. Try this iRule and see what you get:

    when LB_SELECTED {    
        log local0. [LB::server]
    }
    

    It's going to report the chosen server in every load balancing event. Do you see even distribution with round robin? Least Connections is a good way to temper that, but then you'll never really attain a perfect balance across all of the servers as long as the data flowing across the sessions (what the user is asking for) can be different.

  • JG's avatar
    JG
    Icon for Cumulonimbus rankCumulonimbus

    This is one of the typical insistent requests one receives on the job. It is hard to make people understand that LB is not an exact business. In most cases, I just have to give up explaining, and try to make things appear what people want. And round-robin won't achieve that, for if a pool member drops out for a period and rejoins the pool later, it will probably not catch up with the rest of the pool members in terms of the number of connections for a long time.