Forum Discussion

Julio_Navarro's avatar
Julio_Navarro
Icon for Cirrostratus rankCirrostratus
Jul 22, 2014

Monitoring FQDNs inside a iApp

Hello;

 

I have several FQDNs in a single iApp using SharePoint Platform:

 

sales.domain.com pmo.domain.com admin.domain.com

 

Now, the monitor that came with the SharePoint template monitors the server, and not the individual FQDNs. So, if sales.domain.com goes down - for example someone turn it off on one of the FQDNs on the Windows IIS - the iApp monitor will bring the other two down, when in fact there are still working....

 

Question: How I can monitor individual FQDN and "remove" them from the "iApp" services when they are unavailable? Question: What other option do I have? Breaking of the FQDNs in different iApp?

 

Thank you

 

2 Replies

  • mikeshimkus_111's avatar
    mikeshimkus_111
    Historic F5 Account

    Hi, it sounds like you are using host-named site collections, is that correct?

     

  • mikeshimkus_111's avatar
    mikeshimkus_111
    Historic F5 Account

    What you are trying to monitor is the site collection itself, then, but if one site collection is not responding, shouldn't all of the ones hosted by the same web application/content database go down as well? Have you experienced this?

    What you could do is create separate LTM pools with the same SharePoint servers as members, then use an iRule to assign traffic to the required pool based on the host name in the request. We have an EAV monitor that supports SNI. You could create one instance of the monitor for each FQDN and assign it to the pool for that FQDN. Here's the EAV script:

    !/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
     echo "$$" > $PIDFILE
    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