常见负载均衡器禁(启)用成员汇总(3)
日期:2011-10-27
点击:195
来源: 刘天斯
分享至:
try:
self.b.LocalLB.PoolMember.set_session_enabled_state(pool_names =
[self.POOL], session_states = [self.sstate_seq])
except Exception, e:
print e
def enable_member(self):
for x in self.sstate_seq.item:
x.session_state = 'STATE_ENABLED'
try:
self.b.LocalLB.PoolMember.set_session_enabled_state(pool_names = [self.POOL],
session_states = [self.sstate_seq])
except Exception, e:
print e
if __name__ == "__main__":
if len(sys.argv) < 4:
print "Usage %s POOL MEMBER:port[,member1:80,member2:80,member3:80] enable|disable" % sys.argv[0]
print "Examples: python LB_member.py app.domain.com 192.168.0.10:80,192.168.0.11:80,192.168.0.12:80 disable"
sys.exit()
hostname="192.168.100.2"
username="adminuser"
password="adminpass"
App=F5_LB_menber(hostname,username,password)
CommandParameters = sys.argv[1:]
pool=CommandParameters[0]
members=string.split(CommandParameters[1],',')
App.set_pool_member(pool,members)
if CommandParameters[2]=="enable":
App.enable_member()
elif CommandParameters[2]=="disable":
App.disable_member()
else:
print "opt parameters error!"
sys.exit()
3、源码分析:
3.1、创建一个池成员对象,将用户传入的成员列表转成规范的pool成员,见member_factory()方法;
3.2、创建一个会话状态对象,追加成员对象到会话状态当中,见session_state_factory()方法;
3.3、创建一个队列,将会话状态对象添加到队列子项中,同时修改所处状态,见__init__()、set_pool_member()、disable_member()/enable_member()方法。
4、禁用成员
#python LB_member.py test.tianya.cn 192.168.100.42:80,192.168.100.43:80,192.168.100.44:80 disable

5、启用成员
#python LB_member.py test.tianya.cn 192.168.100.42:80,192.168.100.43:80,192.168.100.44:80 enable

作者主页:blog.liuts.com