使用iControl获取F5负载均衡配置信息(一)
(2011-10-17 09:28:55)
标签:
icontrol负载均衡配置杂谈 |
关于F5 iControl API的中文参考资料较少, 只好自己看着API手册研究.
看了一下iControl的API, 发现通过API获取某些信息都要依靠VirtualServer(同HAProxy的Frontend).
于是, 第一版的获取配置信息的方法就”诞生”了.
流程如下:
1. 获取当前F5的VirtualServer列表, 循环遍历取出每一个VirtualServer.
2. 通过VirtualServer获取到对应的VirtualAddress(IP+PORT形式, 同HAProxy中的Vip, 在F5中Frontend和Vip是一对一关系).
2. 通过VirtualServer获取对应的DefaultPool(在F5中, VirtualServer和Pool也是一对一关系), 有一些VirtualServer做的七层负载均衡, 是没有DefaultPool的, 所以要根据Rule来判断VirtualServer是四层还是七层.
3. 通过VirtualServer获取到对应的Rule(在F5中, VirtualServer和Rule也是一对一的关系), 判断RuleName是否为空, 若为空, 则是四层, 若不为空, 则是七层. 知道了VirtualServer是几层了, 就可以获取Pool了.
4. 四层的Pool 只有一个, 就是VirtualServer对应的DefaultPool. 七层的Pool 需要先通过VirtualServer的RuleName获取到对应的RuleDestination, 从RuleDestination中解析出所有Pool和规则信息.
5. 通过Pool获取对应的PoolMember(同HAProxy的RealServer), 再获取Pool的状态(GREEN/RED).
6. 通过VirtualServer获取VirtualServer的状态(GREEN/RED).
7. 保存本次循环的查询结果, 进入下一次循环.
8. 等待循环结束后, 将每次的查询结果存放到对应的数据类型内并返回结果.
经过测试发现, 按照以上方法获取配置信息, SOAP请求次数过多, 导致获取配置信息的耗时较长, 获取一台有400组配置信息的设备耗时在5分钟左右.
经过深入研究以后, 开发了第二版的获取配置信息的方法, 获取一台设备配置信息的时间可以控制在20秒内.
欲知详情, 请见下回分解...