Forum Discussion

Christopher_Kal's avatar
Christopher_Kal
Icon for Nimbostratus rankNimbostratus
Sep 27, 2005

Newbie Questions

I am new to BigIP but our company uses it. We are working on creating a C application that removes and adds servers from a pool dynamically based on pased parameters. So if i I remove server 1 from the pool it will leave server 2 in, but once server 1 is added back it will remove server 2. We also want to monitor the connections on the servers themselves to "bleed" off the traffic before removing server 1.

 

 

So my question is where do I start looking? It appears that I am going to need the ITCMLocalLB module to do the things I want but the documentation is confusing me a bit. When they say "local load balancer's" that means the pool of servers that I set up to do the loadbalancing or is this a global generic term.

 

 

Any help would be appreciated.

 

 

Thanks, Chris

 

2 Replies

  • Chris,

    You've come to the right place. Since you are posting in the 9.x forum, I'm assuming you are using a v9.x of BIG-IP. If that is the case, then you will want to be looking in the LocalLB namespace (ITCMLocalLB is our 4.x interface). In our case, LocalLB refers to local load balancing -aka- BIG-IP. GlobalLB refers to Global Load Balancing -aka- 3-DNS.

    What you are looking to do is one of the most common uses of iControl - automating server provisioning.

    For your scenario you will want to be looking at the following methods:

    To disable new connections (bleed) from a Pool Member, you'll want to use

    void LocalLB::PoolMember::set_session_enabled_state(
        in String[] pool_names,
        in MemberSessionState[][] session_states
    );

    To query the current connections for a pool (all members) to determine when all connections have been drained use:

    PoolStatistics LocalLB::Pool::get_statistics(
        in String[] pool_names
    );

    Once, you have determined when all connections have been gracefully drained, you can add and remove members with these methods:

    void LocalLB::Pool::add_member(
        in String[] pool_names,
        in IPPortDefinition[][] members
    );
    void LocalLB::Pool::remove_member(
        in String[] pool_names,
        in IPPortDefinition[][] members
    );

    If you have access to the BIG-IP's GUI, then our interfaces will make much more sense as they are modeled somewhat on the management user interface. If you want a feature of BIG-IP, most likely you will find it in the LocalLB Module. The contained interfaces are fairly self describing.

    I would suggest you load up the SDK (in case you haven't already) and look at some of the sample applications. Most of the apps are passive in nature (meaning, they just query information) so you may not find everything you need but working with Visual Studio makes using our interfaces fairly painless. The biggest hurdle is understanding what the product does and how it functions. Once you have this, the interfaces should slip right into place.

    Feel free to post any questions that come up and we'll do our best to help you out.

    -Joe