Forum Discussion

lardyboy_lardyb's avatar
lardyboy_lardyb
Icon for Nimbostratus rankNimbostratus
Oct 05, 2004

using iControl to down SQL svr based on BigIP node status

Guys

 

 

I have a customer who needs to shutdown a SQL server which is part of a MS Cluster based on the status of a node as presented on the BigIP. This control should then extend to disabling the node on two pairs of BIGIP until such time as the SQL service is shutdown, when it then needs to re-enable the node for connections.

 

 

Any ideas? has this been done before? help 8O

1 Reply

  • I'm not sure what the best way to shutdown SQL Server is. I guess this depends on the platform you are using your monitoring application. It should be fairly straight forward to build an iControl app that monitors the status of a node. I'm assuming that you are using a SQL Monitor to get the status of the node. If so, then you can poll for the Availability state of the current monitor poll.
    
    enum AvailabilityState
    {
       AVAILABILITY_UNCHECKED = 0,
       AVAILABILITY_DOWN = 1,
       AVAILABILITY_UP = 2,
       AVAILABILITY_CHECKING = 3,
       AVAILABILITY_FORCED_DOWN = 4,
       AVAILABILITY_ADDR_DOWN = 5,
       AVAILABILITY_UNKNOWN = 6,
       AVAILABILITY_MAINT = 7,
       AVAILABILITY_ENABLED = 8,
       AVAILABILITY_DISABLED = 9,
       AVAILABILITY_ADDR_DISABLED = 10,
       AVAILABILITY_PORT_DISABLED = 11
    }
    AvailabilityState
    ITCMLocalLB::Node::get_availability
    (
       in IPPortDefinition node_def
    );
    Then, if you determine that the associated monitor is down, you can use the set_state() method to disable or re-enable the given node.
    enum EnabledState
    {
       STATE_DISABLED = 0,
       STATE_ENABLED = 1
    }
    void
    ITCMLocalLB::Node::set_state
    (
       in IPPortDefinition[] node_defs,
       in EnabledState state
    );
    EnabledState
    ITCMLocalLB::Node::get_state
    (
       in IPPortDefinition node_def
    );
    Hope this helps... -Joe