Forum Discussion

dragonflymr's avatar
dragonflymr
Icon for Cirrostratus rankCirrostratus
Feb 05, 2015

Performance based "Priority groups"

Hi,

 

I am quite new to LTM so probably there is some obvious solution available and I just missed it...

 

There is Priority Group Activation feature that resolves issues when there are some problem with pool members or nodes. For me it's more HA feature. I wonder if there is some way to configure pool in such way: 1. Let's say we have 10 pool members 2. Under normal load connections are distributed to 5 members 3. When load on all 5 members exceeds some threshold additional pool members are being made active 4. When load lowers additional no new connections are directed to additional members

 

Is that possible via GUI or maybe with iRule?

 

The idea is to have for example 5 members that are servers located in my data center and 5 additional configured in the cloud. Cloud members should be used only when servers in DC are overloaded. Kind of Priority Group Activation but not based on servers availability but servers load. Probably some of LB algorithms could came close but as far as I understand still not exactly the same results can be attained.

 

Piotr

 

4 Replies

  • Hi there Piotr.

    Let me answer your question first, because that's what you are probably waiting for, and let's be the smart guy later... 🙂

    Not sure whether there is a GUI solution to your problem but here's my suggestion:

    Use a external monitor with following logic: - Monitor script will periodically query the server for it's health. - Another script on the server will run some performance diagnostics, like

    uptime
    on *nix and will return this to the F5 - Monitor script will evaluate the result, will compute "average pool utilization" and based on your predefined thresholds will automatically adjust priority of other pool members (hence add or remove new members").

    Some comments: - The script needs to be "self aware" and store the utilization somewhere, because one running instance of the script will be able to directly get the result only from one pool member (upon invoking the external monitor, only one pool member IP is passed to the script as an argument). - For changing the pool member priority call the tmsh from inside the external monitor script. - Be very careful with the timeouts in the external script, specifically about deadlocks if pool member does not answer sooner than another instance of the monitor is invoked by F5 according to health check Interval settings.

    Now, as promised, let's be the smart guy. :-) Are you sure this is the solution to your problem? You know, usually, people do not have spare servers doing nothing and waiting for other servers to being overloaded. If you have spare servers, put them into the primary pool in the first place. Another (enterprise) solution would be to have cluster of servers in something like ESX, and let the ESX manage the number of running nodes based on load. F5 will have all of them in the pool and will not bother about the load.

    I'm afraid F5 simply does not covers this (yet), and personally I'm also not a fan of this being managed by F5.

    Hope I helped.

    Jozef

  • Hi,

     

    Thanks a lot for suggestions. Probably I was to quick with this post and after some re-thinking probably functionality is more GTM area. This was all about how to handle spikes in traffic without investing in more servers in DC, so being able to offload this spikes to VE instances in the cloud created and destroyed on demand (to save costs). You stated "You know, usually, people do not have spare servers doing nothing and waiting for other servers to being overloaded". For me Priority Group Activation (PGA) is exactly about having servers doing nothing - just in case main servers experience problems - at least I understand it like that. Sure, those idle servers in one pool could be working servers in another but it seems to be risky setup in case all the power is needed for pool where PGA was configured. However I was thinking about some sort of solution using PGA. Those are theoretical ideas based on my (yet) limited knowledge about LTM: 1. First priority with two members 2. Lower priority with one member 3. Lowest with one member 4. PGA set to lower than 2 5. All members with set Connection limit to let's say 200

     

    My idea is that this setup should work like that: 1. When one of the highest priority members exceed connection limit status is changed to Unavailable. I assume that this status is triggering PGA like down or forced offline - Am I right? 2. Then PGA should activate member from lower priority - so again there are 2 members available 3. If either second member from highest priority or one from lower priority exceeded connection limit then member with lowest priority is activated - again two members up 4. Then when higher priority members will be back under connection limit lower priority members are no more used. In the end again only members from highest priority are serving requests.

     

    That way (of course only if unavailable status triggers PGA) lower priority members are added not because higher priority are down but because of overload. So instead of HA kind of operation PGA is more in performance mode. Or of course all above is just complete nonsense...

     

    Piotr

     

  • giltjr's avatar
    giltjr
    Icon for Nimbostratus rankNimbostratus

    Have you looked into using the Dynamic Ratio load balancing method? You could put a very high ratio number on your "normal" servers and a ratio of 1 on the "backup/standby" servers.

     

    There are some requirements for using Dynamic Ratio so that the F5 can see what the current performance is on the server, so it may not work for you.

     

    And no, I have never used it I've just read about it.

     

  • Thanks for suggestion, I will read more about dynamic ratio, maybe it could be good solution.

     

    Piotr