1

我在我的应用程序中使用了 txloadbalancer twisted API,它运行良好。我有一个问题,我想不出一种将主机添加到正在运行的实例的方法。

我现在使用这个功能:

#pm is a ProxyManager
def addServiceToPM(pm, service):
    if isinstance(service, model.HostMapper):
        [service] = model.convertMapperToModel([service])
    for groupName, group in pm.getGroups(service.name):
        proxiedHost = service.getGroup(groupName).getHosts()[0][1]
        pm.getGroup(service.name, groupName).addHost(proxiedHost)
        tracker = HostTracking(group)
        scheduler = schedulers.schedulerFactory(group.lbType, tracker)
        pm.addTracker(service.name, groupName, tracker)

并使用新主机运行它

addServiceToPM(pm, HostMapper(proxy='127.0.0.1:8080', lbType=roundr,
               host='host2', address='127.0.0.1:10002'))

这会将主机正确添加到跟踪器,但不会添加到代理服务,因此不会在负载平衡中使用。有谁知道如何做到这一点?

4

1 回答 1

0

所以,我最终盯着源代码,直到答案出现。

如果您像我一样想要将新主机添加到您使用的现有代理和组中

def addHostToLB(pm, proxy, group, newHost, newHostName):
    tracker = pm.getTracker(proxy, group)
    tracker.newHost(newHost, newHostName)
于 2013-11-05T21:35:02.520 回答