Forum Discussion

HCYeoh_133134's avatar
HCYeoh_133134
Icon for Nimbostratus rankNimbostratus
Feb 10, 2014

iApp for Exchange CAS Load balance Method Doesn't Works for OWA Pool

I'm using iApp (f5.microsoft_exchange_2010_2013_cas.v1.2.0) for LTM deployment for Exchange 2010 CAS servers. Everything is working perfectly so far except the OWA pool, it only load balancing (Least Connection method) to the same member. What am I missing out? I hardly can understand the irule that apply to https virtual server as showing below especially owa portion. Does anyone can help me to understand the persistence " persist cookie insert 0" ? Thank you. (p/s: I'm not using APM)

when HTTP_REQUEST { switch -glob -- [string tolower [HTTP::path]] { "/microsoft-server-activesync" { Direct all ActiveSync clients to a common pool; use Auth header value if it exists (Basic auth only, which is the default); otherwise we fall back to client IP if { [HTTP::header exists "APM_session"] } { persist uie [HTTP::header "APM_session"] 7200 } elseif { [HTTP::header exists "Authorization"] } { persist uie [HTTP::header "Authorization"] 7200 } else { persist source_addr } pool exchange_2010_as_pool7

    CACHE::disable
    return
}
"/owa*" {
     Outlook Web Access
    if { [HTTP::header exists "APM_session"] } {
        persist uie [HTTP::header "APM_session"] 7200
    } else {
        persist cookie insert 0
    }
    if { [HTTP::header exists "Accept-Encoding"] } {
         HTTP::header remove "Accept-Encoding"      
     }
    pool exchange_2010_owa_pool7
    return
}
"/ecp*" {
     Exchange Control Panel.
    if { [HTTP::header exists "APM_session"] } {
        persist uie [HTTP::header "APM_session"] 7200
    } else {
        persist cookie insert 0
    }
    if { [HTTP::header exists "Accept-Encoding"] } {
         HTTP::header remove "Accept-Encoding"      
     }
    pool exchange_2010_owa_pool7
    return
}
"/ews*" {
     Exchange Web Services.
    if { [HTTP::header exists "APM_session"] } {
        persist uie [HTTP::header "APM_session"] 7200
    } else {
        persist source_addr
    }
    pool exchange_2010_oa_pool7

    CACHE::disable
    return
}
"/oab*" {
     Offline Address Book. Persistence is not required for OAB
    pool exchange_2010_oa_pool7
    persist none
    return
}
"/rpc/rpcproxy.dll" {
    if { [HTTP::header exists "APM_session"] } {
        persist uie [HTTP::header "APM_session"] 7200
    } elseif { [string tolower [HTTP::header "Authorization"]] starts_with "basic" } {
        persist uie [HTTP::header "Authorization"] 7200
    } else {
        persist source_addr
    }
     Outlook Anywhere.
    pool exchange_2010_oa_pool7

    CACHE::disable
    return
}
"/autodiscover*" {
     Autodiscovery. No Persistence.
    pool exchange_2010_ad_pool7
    persist none
    return
}
default {
     This final section takes all traffic that has not otherwise
     been accounted for and sends it to the pool for Outlook Web App
    if { [HTTP::header exists "APM_session"] } {
        persist uie [HTTP::header "APM_session"] 7200
    } else {
        persist source_addr
    }
    pool exchange_2010_owa_pool7
}}

} when HTTP_RESPONSE { if { [string tolower [HTTP::header values "WWW-Authenticate"]] contains "negotiate"} { ONECONNECT::reuse disable ONECONNECT::detach disable NTLM::disable } if {[HTTP::header exists "Transfer-Encoding"]} { HTTP::payload rechunk } }