Forum Discussion
Alex_Sinclair_1
Nimbostratus
Jun 15, 2005Accessing pool members by IP/PORT in v9x?
I have an ASP.NET application I wrote with Big-IP/iControl 4.5/4.6 that makes a lot of use of the old ITCMLocalLB.Node.get_state, ITCMLocalLB.Node.set_state, ITCMLocalLB.Monitor2.get_instance_state and ITCMLocalLB.Monitor2.set_instance_state
It worked well before because I didn't have to know pool names and could deal with pool member status directly. Since I don't manage the Big-IPs, but instead, am an application support person, I have little control over pool configurations, or access any configuration information on the load balancers, for that matter.
Our network guys just upgraded the Big-IPs to 6800s running 9.1 and now I can't seem to find equivalent methods to make my app work with the new version of iControl. Anyone see something I don't? Is my only option to switch to using names to access pool members? Oh yeah, I have 2 days to get the app back up and functioning as before. 'Lil help?
2 Replies
- The underlying architecture in 9.x changed to not include Node Servers (addr:port) as independent objects. They now only exist within the context of the pool that they are defined. So, now if you disable a node server it can still be enabled in another pool.
We now have only Node Addresses (addr) (accessible via the LocalLB::NodeAddress interface) at the top level. So, you can enable/disable an entire address at a global level, just not a address:port combination.
With that being said, there are several things you can do. You can query all the pools with LocalLB::Pool::get_list() and pass that into LocalLB::Pool::get_member() to return you all the members defined on the system. Then you can use the LocalLB::PoolMember interface to query or set the status of the members.
In 9.x the methods for controlling the state have changed a bit as well. They are:SessionStatus[] get/set_session_status( in String[] node_addresses ); and MonitorStatus[] get/set_monitor_status( in String[] node_addresses );
get/set_session_status() will query or set whether or not new sessions are allowed on the address. get/set_monitor_state() will query or set whether or not any traffic is allowed on the address.
Alternately, maybe just the address is all you care about as you are only running a single service on each backend node or you care if any of the running services is down. If that is the case, then you can use the LocalLB::NodeAddress to do what you were doing before.
Hopefully this helps. If not, post your application logic and I'll see what I can do to help out further.
-Joe - Alex_Sinclair_1
Nimbostratus
Joe,
Thanks for the info. I was afraid you'd say something like that. For the time being, I have thrown together a really quick and dirty app to allow my team to work with the node addresses until I can re-architect the bigger prettier one.
Thanks for the prompt response!
Help guide the future of your DevCentral Community!
What tools do you use to collaborate? (1min - anonymous)Recent Discussions
Related Content
DevCentral Quicklinks
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com
Discover DevCentral Connects