Forum Discussion

Maximilian_Mar1's avatar
Maximilian_Mar1
Icon for Nimbostratus rankNimbostratus
Mar 23, 2018

Persistence/Failover Problem with Pool Member

Hello,

 

we have 4 Pool Member, 2 active,2 passive (low priority). when high priority pool member are back we still have Connections on the low priority pool Member and i have to "force offline" them. They would stay forever. Persistence is IP 7200seconds. Any Feature/Irule which does it for me? Thanks

 

3 Replies

  • You need to force offline the low priority pool members, but rather just remove the persistence entries of it.

    tmsh delete ltm persistence persist-records pool  node-addr  node-port 

    As per articles & other previous Q&A's.

    Note: When the BIG-IP system activates a lower priority group and its pool members are processing connections, active and persisted connections continue to use the lower priority group pool members after a higher priority group becomes available. Connections to the lower priority group pool members continue until the connection has completed or the configured persistence timeout is reached.

    But you may achieve this with some Irules (Hoping, never tried)

  • Surgeon's avatar
    Surgeon
    Ret. Employee

    Connections will go to the lower priority groups until persistence expires. With 2 hour persistence it may never expires if you have permanent traffic.

     

    As it was mentioned previously you need clear persistence records. If there is an http traffic then you may use cookie persistence. In that case the browser will stop sending cookie after timeout and new connections should go via another pool members

     

  • @Max,

     

    Does the Irule code worked in the your lab env,

     

    when CLIENT_ACCEPTED {
    set lookup [list [IP::client_addr] pool low_priority_pool]
    set value [persist lookup source_addr $lookup]
    if { ([LB::status pool high_priority_pool member 10.10.10.10 80] eq "up") && ([LB::status pool high_priority_pool member 20.20.20.20 80] eq "up") && ([$value ne ""]) } {
    persist delete source_addr [IP::client_addr]
    log local0. "high_priority_pool both servers are up & hence deleting persistence of low_priority_pool"
    }
    }
    when HTTP_REQUEST {
    if { [active_members high_priority_pool] >= 2 } {
    pool high_priority_pool }
    else {
    pool low_priority_pool }
    }