Forum Discussion

Hongwen_Zhang_3's avatar
Hongwen_Zhang_3
Icon for Nimbostratus rankNimbostratus
Oct 18, 2006

supporting "ratio weight" in third party appliances

Hi, I recently joined this forum.

 

 

We are looking at to have iControl to load balance our appliances. I understand that we need to implement a "ratio weight" interface in our appliance in order to be load balanced by BigIP. Our appliance has J2EE servlet in it.

 

 

I have the following questions for the experts here:

 

1. What particular iControl interface that we absolutely have to implement to support this "ratio weight" interface?

 

 

2. Can you provide some some pointers or examples of implementing this particular "ratio weight" interface?

 

 

3. Our appliances can operate in bridge mode. Can BigIP support

 

failover or LB for multiple bridges?

 

 

Thanks a lot.

 

 

Hongwen

 

  • I think you have a few things confused. iControl is our management API that is used to configure and pull statistics from our devices. Think of it as an alternative to using the admin GUI. Ratio load balancing is an attribute of the pool you are using with each pool member having a ratio attribute.

     

     

    Now, if you want to use iControl to set your BIG-IP's configuration, then you can use the LocalLB::Pool::set_lb_method() and LocalLB::PoolMember::set_ratio() methods to update these properties.

     

     

    Your questions seem to imply that you need to do something in your backend servers to have them work in ratio mode and that is not the case. In iControl, there are no interfaces you need to implement (outside of the event notification interface for system messages) on your backend servers so I think you are all set.

     

     

    As for the bridge mode question, BIG-IP just sees the backend connection as an ip address. Whether or not it's in bridge mode. If the address is up, traffic will be sent to it and if it's down traffic wont. So again, I don't see any issues.

     

     

    Hope this helps...

     

     

    -Joe
  • Thanks Joe for the response.

     

     

    >iControl is our management API that is used to configure and pull statistics from our devices

     

     

    Are you saying that iControl can not be used by 3rd party systems as an interface to F5 devices? I did recall reading a document on the iControl interface (SOAP based).

     

     

    >Now, if you want to use iControl to set your BIG-IP's configuration, then you can use the LocalLB::Pool::set_lb_method() and LocalLB::PoolMember::set_ratio() methods to update these properties.

     

     

    May I understand that our applications running on our device need to support these two methods? If that's the case, it is great!

     

     

    >Your questions seem to imply that you need to do something in your backend servers to have them work in ratio mode and that is not the case. In iControl, there are no interfaces you need to implement (outside of the event notification interface for system messages) on your backend servers so I think you are all set.

     

     

    I'm confused on this one. How does the Big-IP know the stress level of our servers? I understand that Big-IP does LB based on the stress level of the nodes.

     

     

    >As for the bridge mode question, BIG-IP just sees the backend connection as an ip address. Whether or not it's in bridge mode. If the address is up, traffic will be sent to it and if it's down traffic wont. So again, I don't see any issues.

     

     

    Since bridge mode node does not have IP addresses, so I guess bridge mode is not supported

     

     

    Regrads, Hongwen
  • >iControl is our management API that is used to configure and pull statistics from our devices

     

     

    Are you saying that iControl can not be used by 3rd party systems as an interface to F5 devices? I did recall reading a document on the iControl interface (SOAP based).

     

     

    No I am not saying that. iControl is a clientside management API that is most typically used from management systems, not from backend servers (aside from pushing health statistics back into the servers). You wording implied that you needed to "implement" these interfaces, not "use" them. There is a big difference. iControl interfaces are not something you have to implement the code for (ie BIG-IP talking to your server), but rather ones that you use on the client side (your server talking to the BIG-IP).

     

     

    >Now, if you want to use iControl to set your BIG-IP's configuration, then you can use the LocalLB::Pool::set_lb_method() and LocalLB::PoolMember::set_ratio() methods to update these properties.

     

     

    May I understand that our applications running on our device need to support these two methods? If that's the case, it is great!

     

     

    Your application only needs to access these methods on the BIG-IP if you need to dynamically update their containing pools load balancing algorithm or their individual load balancing ratios. Again, this typically isn't done in backend code, but rather from a configuration system.

     

     

    >Your questions seem to imply that you need to do something in your backend servers to have them work in ratio mode and that is not the case. In iControl, there are no interfaces you need to implement (outside of the event notification interface for system messages) on your backend servers so I think you are all set.

     

     

    I'm confused on this one. How does the Big-IP know the stress level of our servers? I understand that Big-IP does LB based on the stress level of the nodes.

     

     

    BIG-IP determines how to route traffic based on the load balancing algorithm it's using. Round Robin is a very simple one after the other approach, while ratio allows you to assign weights to each server and traffic will be distributed based on those ratios. There are also least connections, fastest response, and a few others. I'd recommend hitting the BIG-IP LTM manual for more details on load balancing algorithms.

     

     

    With that said, if you do want to make your system more dynamic in nature where the backend servers feed their "health" back into the network in real-time, then you would use the methods described above to dynamically change their "ratios" based on data you have on the backend server.

     

     

     

    >As for the bridge mode question, BIG-IP just sees the backend connection as an ip address. Whether or not it's in bridge mode. If the address is up, traffic will be sent to it and if it's down traffic wont. So again, I don't see any issues.

     

     

    Since bridge mode node does not have IP addresses, so I guess bridge mode is not supported

     

     

    I don't believe there is an issue as the traffic is IP as it's going through the BIG-IP regardless of whether a device downstream is in bridge mode or not.

     

     

    Hopefully this has cleared things up.

     

     

    -Joe
  • Joe,

     

    Thanks for the reply to my message. I have the following questions:

     

     

    >No I am not saying that. iControl is a clientside management API that is most typically used from management systems, not from backend servers (aside from pushing health statistics back into the servers). You wording implied that you needed to "implement" these interfaces, not "use" them. There is a big difference. iControl interfaces are not something you have to implement the code for (ie BIG-IP talking to your server), but rather ones that you use on the client side (your server talking to the BIG-IP).

     

     

    I understand that our server needs to talk with Big-IP via the iControl interface of Big-IP, i.e. "use" (not "implement") the iControl interface of Big-IP.

     

     

    >Your application only needs to access these methods on the BIG-IP if you need to dynamically update their containing pools load balancing algorithm or their individual load balancing ratios. Again, this typically isn't done in backend code, but rather from a configuration system.

     

     

    How frequent do we need to update the Big-IP? From the previous paragraph, it seems that we need to "use" the iControl interface to update the Big-IP. Your this paragraph seems to indicate we can rely on a "configuration system" to do this. Is this "configuration system" something that we need to implement? Where can I find some examples on how backend servers communicate with Big-IP with these two methods?

     

     

    >BIG-IP determines how to route traffic based on the load balancing algorithm it's using. Round Robin is a very simple one after the other approach, while ratio allows you to assign weights to each server and traffic will be distributed based on those ratios. There are also least connections, fastest response, and a few others. I'd recommend hitting the BIG-IP LTM manual for more details on load balancing algorithms.

     

     

    I did read the LTM manual and understand the LB algorithms. However, I need some help to understand HOW to instruct Big-IP to use these algorithms such as passing the "ratio weight" to Big-IP.

     

     

    >With that said, if you do want to make your system more dynamic in nature where the backend servers feed their "health" back into the network in real-time, then you would use the methods described above to dynamically change their "ratios" based on data you have on the backend server.

     

     

    That's exactly what we want to do. Any suggestions on where we can get some examples will be very helpful.

     

     

    >I don't believe there is an issue as the traffic is IP as it's going through the BIG-IP regardless of whether a device downstream is in bridge mode or not.

     

     

    Has Big-IP ever been used in LB of bridges?

     

     

    Thanks for the help.

     

    Hongwen
  • I understand that our server needs to talk with Big-IP via the iControl interface of Big-IP, i.e. "use" (not "implement") the iControl interface of Big-IP.

     

     

    Ok, good...

     

     

    How frequent do we need to update the Big-IP? From the previous paragraph, it seems that we need to "use" the iControl interface to update the Big-IP. Your this paragraph seems to indicate we can rely on a "configuration system" to do this. Is this "configuration system" something that we need to implement? Where can I find some examples on how backend servers communicate with Big-IP with these two methods?

     

     

    Once an initial configuration is made, you should only need to modify the BIG-IP settings when something changes on your backend servers that will require a change in the traffic distribution. This will depend on your applications usage so I can't really comment on the frequency. As for the configuration system, you will only need this if your system is dynamic in it's nature (meaning servers added/removed at regular intervals). In most cases, the initial configuration (virtuals, pools, and members) is made once and can be done with the product's administrative GUI. In cases of SOA or Grid networks, you may have to roll your own configuration system. Again, that will depend on your needs. As for examples, I've referenced the methods you'll need to use. I could supply a sample perl script that calls the set_lb_method() and set_ratio() but I don't think that would help much as the hard part is building the logic into your backend applications which I'm not really setup to help with here.

     

     

    did read the LTM manual and understand the LB algorithms. However, I need some help to understand HOW to instruct Big-IP to use these algorithms such as passing the "ratio weight" to Big-IP.

     

     

    Once your configuration is setup (virtual, pools, and members), you specify the lb method in the pool attributes. This can be done in the GUI or via the LocalLB::Pool::set_lb_method() command. The ratios can be set with the LocalLB::PoolMember::set_ratio() method (or via the admin GUI).

     

     

    Has Big-IP ever been used in LB of bridges?

     

     

    You are going to have to go through Product Support for questions like this. We are here to help with the actual building of iControl applications, not with general product support.

     

     

    Another resource you might want to consider is our consulting group that could possibly help you with your backend server development.

     

     

    -Joe
  • >I could supply a sample perl script that calls the set_lb_method() and set_ratio() but I don't think that would help much as the hard part is building the logic into your backend applications which I'm not really setup to help with here.

     

     

    It will be helpful if you can send me the perl examples. It will be even better if you have the Java exmaple that does the same thing.

     

     

    Thanks a lot.

     

    Hongwen