Forum Discussion

yammy1688_99834's avatar
yammy1688_99834
Icon for Nimbostratus rankNimbostratus
Nov 10, 2011

Backup Pool

Hi everyone,

 

 

 

I'd like to create a backup pool that is always available in the event that health checks cause all the members of a pool to be taken offline. I'm trying to avoid any instance of a virtual server or pool becoming completely unavailable due to all the members being offline.

 

 

AFAIK, this can only be accomplished via irule?

 

 

 

Is it possible to have the LTM ignore node availability when all members of a pool is down and just send traffic to the pool as if nothing is down?

 

 

 

I'm pretty sure the irule should be fairly simple, the only tricky part is, I'd like to avoid having to use a separate irule for every single virtual server.

 

 

 

Is there a way to grab the name of the virtual server as a variable and insert that as a pool name preceded with 'B'?

 

 

 

For instance if the VS name is web80, the backup pool name would be Bweb80. That way one irule should work for all virtual servers, provided I create the appropriate pool of course. Is this correct?

 

 

 

Any help would be appreciated.

 

 

 

Thanks!!

 

  • please feel free to revise.

    [root@ve1023:Active] config  b virtual bar list
    virtual bar {
       snat automap
       destination 172.28.65.152:http
       ip protocol tcp
       rules myrule
       profiles {
          http {}
          tcp {}
       }
    }
    [root@ve1023:Active] config  b rule myrule list
    rule myrule {
       when CLIENT_ACCEPTED {
            log local0. "[IP::client_addr]:[TCP::client_port]"
            log local0. "\[active_members [virtual name]\] is [active_members [virtual name]]"
            if {[active_members [virtual name]] < 1} {
                    pool B[virtual name]
            }
    }
    
    when LB_SELECTED {
            log local0. "[IP::client_addr]:[TCP::client_port]"
            log local0. "pool is [LB::server pool]"
    }
    
    when SERVER_CONNECTED {
            log local0. "[IP::client_addr]:[TCP::client_port] -> [IP::remote_addr]:[TCP::remote_port]"
    }
    }
    [root@ve1023:Active] config  b pool bar list
    pool bar {
       monitor all fake
       members 200.200.200.101:http {}
    }
    [root@ve1023:Active] config  b pool Bbar list
    pool Bbar {
       members 200.200.200.102:http {}
    }
    
    [root@ve1023:Active] config  b pool bar
    POOL bar  LB METHOD round robin   MIN/CUR ACTIVE MEMBERS 0/0
    |     (cur, max, limit, tot) = (0, 0, 0, 0)
    |     (pkts,bits) in = (0, 0), out = (0, 0)
    +-> POOL MEMBER bar/200.200.200.101:http   inactive,down
        |     session enabled    priority 0    ratio 1
        |     (cur, max, limit, tot) = (0, 0, 0, 0)
        |     (pkts,bits) in = (0, 0), out = (0, 0)
        |     requests (total) = 0
    
    
    [root@ve1023:Active] config  curl -I http://172.28.65.152
    HTTP/1.1 200 OK
    Date: Fri, 11 Nov 2011 01:31:13 GMT
    Server: Apache/2.2.3 (CentOS)
    Last-Modified: Tue, 08 Nov 2011 12:26:29 GMT
    ETag: "4183f1-30-47e02740"
    Accept-Ranges: bytes
    Content-Length: 48
    Connection: close
    Content-Type: text/html; charset=UTF-8
    
    [root@ve1023:Active] config  cat /var/log/ltm
    Nov 10 17:31:06 local/tmm info tmm[4766]: Rule myrule : 172.28.65.150:38117
    Nov 10 17:31:06 local/tmm info tmm[4766]: Rule myrule : [active_members bar] is 0
    Nov 10 17:31:06 local/tmm info tmm[4766]: Rule myrule : 172.28.65.150:38117
    Nov 10 17:31:06 local/tmm info tmm[4766]: Rule myrule : pool is Bbar
    Nov 10 17:31:06 local/tmm info tmm[4766]: Rule myrule : 172.28.65.150:38117 -> 200.200.200.102:80