Forum Discussion

Piotr_Lewandows's avatar
Piotr_Lewandows
Icon for Altostratus rankAltostratus
May 17, 2017

Reselect member with new port

Hi,

I am not sure if my rule is broken or there is some bug in v11.2.0

I have VS IP:8888 with pool containing members set to All ports IP:0 but backed server is listening on port 443.

I need to change port from 8888 to 443 when connecting to backed server.

I tired this iRule but always getting error like that:

TCL error: /Common/http_to_https_one_vs - failed to find pool member (line 1) invoked from within "pool LAMP_110_all_pl member 10.128.30.110 443"

 

when LB_SELECTED {

    pool LAMP_110_all_pl member 10.128.30.110 443
}

 

I tried putting above command in HTTP_REQUEST event but error is the same. Tried to use /Common/LAMP_110_all_pl as well, no difference.

However everything works OK when I switch to below code

 

when LB_SELECTED {  
    LB::reselect node 10.128.30.110 443
}

 

I would prefer to use first one as second one seems to be messing up with LB a bit. By that I mean that before LB::reselect is used, LB::server name is returning

/Common/PoolName 10.128.30.110 0

after reselect just

10.128.30.110 443

and in node command (don't know if it is realted to LB::reselect node as well) there is note:

Since statistics and health monitoring are tied to pool membership, node status and statistics for this connection will not be available.

So why pool LAMP_110_all_pl member 10.128.30.110 443 is returning error?

Piotr

  • OK, figured it out.

     

    pool LAMP_110_all_pl member 10.128.30.110 443

     

    can't be used as it only allows selecting members as defined in specified pool. My pool members are defined as member:0 not member:443

     

    So only way is to use:

     

    node

     

    or

     

    LB::reselect node

     

    Now, questions is which one is better and what caveats are expected? I thing for LB::reselect I need to create code to avoid loop with reselecting node that is donw? something using LB_DOWN event.

     

    I wonder if LB::reselect is smart enough (seems to be) to not trigger second time in LB_SELECTED. From my logging it looks like that:

     

    • LB_SELECTED triggered first time - LB::reselect performed
    • LB_SELECTED triggered by LB::reselect - LB::reselect not performed again

    Is above correct assumption?

     

    What about node command?

     

    Piotr

     

  • Hi,

    why are you using pool with port 0 (any)? this is the main question!!!

    one solution is to create a new pool with members port 443.. then you can use the command : pool

    LAMP_110_all_pl_443 member 10.128.30.110 443