Persistence Across VIPs

Posted by jpearcy

 
I have persistence working with no issue one most of our VIPs. The problem we are running into right now is that one of our apps makes calls between two VIPs. We need to keep persistence between those two VIPs. The kicker here is we are already using an aflex script on one of the VIPs SSL port so we have to keep that in mind if this would be achieved by Aflex.

 

 

Comments

  • edited July 2022
    Posted by ddesmidt

    Hi,

    You have to explain how the persistence is done on the VIP1.
    In other words:
    . explain what the AX looks at to do the persistence (Client-IP@ or cookie or specific header value or xyz)
    . copy/paste your aFleX => we can understand how it's done

    Then you have to tell us if that information is available in the app second request to the VIP2.

    From there I'm sure we'll be able to find the right aFleX for you 
    Dimitri
  • edited February 2014
    Posted by jpearcy

    well right now VIP1 is using Source IP - Service group for persistence.

    Current aflex on VIP1 port 443:
    when HTTP_REQUEST {
    if {[HTTP::uri] contains "app"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "oursitePak"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "oursitepak"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "oursitePAK"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "tlq"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "ShipmentTracking"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "TLQ"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "createlogfiles"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "tlrg"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "TLRG"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "BDP"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "bdp"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "cpi"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "CPI"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "ews"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "/ar"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "EWS"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "/AR"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "app"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "/app"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "/app"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "/eCommCSR"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "/ecommcsr"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "/ECOMMCSR"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "/carrier"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "/Carrier"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "/CARRIER"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "/DASHBOARD"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "/dashboard"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "/DashBoard"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "/Dashboard"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "RateIQ"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "rateiq"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "RATEIQ"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "rateIQ"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "rateIq"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "RateIQUI"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "rateiqui"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "RATEIQUI"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "rateIQUI"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "rateIqUi"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "appAlt"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "appAlt"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "appALT"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "appalt"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "Demo"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "demo"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "DEMO"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "ImageRepository"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "imagerepository"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "IMAGEREPOSITORY"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "customer"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "Customer"} {
    pool Apps-80
    } elseif {[HTTP::uri] contains "CUSTOMER"} {
    pool Apps-80
    } else {
    pool oursite.com-test
    }
    }
  • edited February 2014
    Posted by ddesmidt

    I'm not sure I fully understand what your application requires.

    Let's use an example to help me:

    Step1. Client1 access VIP1 with "http:// VIP1/oursitePak/xyz"

    Step2. AX selects for that client the Server1 (from Service Group "Apps-80") for that Client1
    Note: All future connections from that Client1 will be sent to Server1 (based on the persistence SourceIP)

    Step3. Server1 access VIP2 with "http:// VIP2/xyz"

    Step4. Where AX should send this request? And based on what information should AX make its decision?



    Dimitri
  • edited February 2014
    Posted by jpearcy

    The client needs to return to Server1 when it accesses VIP2 because it authenticated with Server1. If the AX sends Client1 to Server2 then the user with get a authentication failed message. It dosent really matter the method that we use to keep persistence between the VIPs we just need persistence between the VIPs
  • edited July 2022
    Posted by ddesmidt

    Sorry for the delay.
    I think I understand your need now (I was wrong before).
    What you have is:
    . Client1 talks to VIP1 and requires stickiness (let's say use Server1)
    . Then same Client1 talks to VIP2 and requires to use the same server used in VIP1 (Server1)


    We have a simple solution for you.
    But it has some requirements:
    1. The client must use hostnames (such as "vip1.example.com" and "vip2.example.com") and not IP addresses
    2. The 2 hostnames must belong to the same domains (such as "example.com")


    If that's the case, then the configuration is pretty simple.
    1. Define cookie persistence template with domain option "example.com"
    2. Assign the same persistence template to the VIP1 and VIP2


    The configuration will be something similar to:
    Code:





    slb template persist cookie Lynn domain dimi.fr slb virtual-server vip1 10.0.1.72 port 80  http service-group sg-http template persist cookie Lynn ! slb virtual-server vip2 10.0.1.73 port 80  http service-group sg-http template persist cookie Lynn





    Update us on how it goes 
    Dimitri
Sign In or Register to comment.