Forum Discussion

alexandre_girau's avatar
alexandre_girau
Icon for Altocumulus rankAltocumulus
Dec 22, 2017

Persistence issue with TCP

Hi all,   We have a very simple configuration where we have multiple node in a pool for a specific TCP protocol (port 6000). In front of F5 farm we have an additionnal network device who NAT sourc...
  • alexandre_girau's avatar
    Dec 29, 2017

    Ok, I finally fix it ^^

    The issue was because I created a pool with 4 members, 2 same IP but different service port, cause we have 2 versions who using different socket

    And I have 2 Virtual Services different (based on version) with an iRule different for each in order to select specific node with the target port. The irule was like this :

    when CLIENT_ACCEPTED {
    
    set xxx_node1 "13.x.x.183"
    set xxx_node2 "40.x.x.221"
    set xxx_ppol "pool_vm_xxx_prod"
    set xxx_port yyyy
    
    if { ([LB::status pool $xxx_ppol member $xxx_node1 $xxx_port] eq "up") and ([LB::status pool $xxx_ppol member $xxx_node2 $xxx_port] eq "up") }
    {
        node $xxx_node1 $xxx_port
        node $xxx_node2 $xxx_port
    }
    elseif { ([LB::status pool $xxx_ppol member $xxx_node1 $xxx_port] eq "up") and ([LB::status pool $xxx_ppol member $xxx_node2 $xxx_port] eq "down") }
    {
        node $xxx_node1 $xxx_port
    }
    elseif { ([LB::status pool $xxx_ppol member $xxx_node1 $xxx_port] eq "down") and ([LB::status pool $xxx_ppol member $xxx_node2 $xxx_port] eq "up") }
    {
        node $xxx_node2 $xxx_port
    }
    else
    {
        log "Error : Pool $xxx_ppol is down"
    }
    

    }

    Finally, I just recreate 2 new pool specific to each version and on my 2 VS I associate this new pool based on target version and deleted the associated iRule.

    And now, my traffic is correctly load balanced 😉

    Thanks to all who help me in this situation

    Have a nice day, Regards Alex