Forum Discussion

Julio_Navarro's avatar
Julio_Navarro
Icon for Cirrostratus rankCirrostratus
Jun 30, 2014

iApp monitor pool | multiple FQDN

Hello; Scenario: one iApp with 6 FQDN running on SharePoint Platform one pool with 4 nodes

 

If one of the FQDN is down, how I can remove ONLY that FQDN from the iApp without affecting the other 5 sites?

 

I only have be able to monitor the pool and remove the node when any of the URL goes down....but this is not efficient...

 

Please advise...

 

Thank you

 

3 Replies

  • mikeshimkus_111's avatar
    mikeshimkus_111
    Historic F5 Account

    Hi, sounds like you are using host-named site collections. Is that correct?

     

    If one of the site collections is unavailable on a pool member, you want to stop sending traffic for that FQDN but keep all the pool members up?

     

    thanks

     

  • Hi Mike!

     

    That correct : I want to stop sending traffic to that FQDN and keep the other FQDN inside the POOL active.

     

    Thank

     

  • mikeshimkus_111's avatar
    mikeshimkus_111
    Historic F5 Account

    Are you using server name indication on your SharePoint servers? We have an external (EAV) monitor that can do SNI.

    What you could do is set up multiple pools containing the same pool members, one for each FQDN, and an iRule on the virtual server to distribute requests to the correct pool based on HTTP::host value.

    Using a unique SNI EAV monitor on each pool would down that pool if a particular site collection was not responding. Here's an example of that monitor:

    !/bin/sh
     These arguments supplied automatically for all external monitors:
     $1 = IP (nnn.nnn.nnn.nnn notation)
     $2 = port (decimal, host byte order)
    
     This script expects the following Name/Value pairs:
     HOST = the host name of the SNI-enabled site
     URI  = the URI to request
     RECV = the expected response
    
     Remove IPv6/IPv4 compatibility prefix (LTM passes addresses in IPv6 format)
    NODE=`echo ${1} | sed 's/::ffff://'`
    if [[ $NODE =~ ^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$ ]]; then
         node is v4
        NODE=${NODE}
    else
         node is v6
        NODE=[${NODE}]
    fi
    PORT=${2}
    PIDFILE="/var/run/`basename ${0}`.sni_monitor_${HOST}_${PORT}_${NODE}_sni.pid"
     kill of the last instance of this monitor if hung and log current pid
    if [ -f $PIDFILE ]
    then
       echo "EAV exceeded runtime needed to kill ${HOST}:${PORT}:${NODE}" | logger -p local0.error
       kill -9 `cat $PIDFILE` > /dev/null 2>&1
    fi
    curl-apd -k -v --resolve $HOST:$PORT:$NODE https://$HOST$URI 2>&1 > /dev/null | grep -i "${RECV}" 
    STATUS=$?
    rm -f $PIDFILE
    if [ $STATUS -eq 0 ]
    then
        echo "UP"
    fi
    exit