2015-08-12 1 views
2

J'ai utilisé le script python tordu suivant pour écouter les requêtes sur le port 8080 et transmettre la requête à une adresse IP spécifique.Comment Loadbalance demandes en utilisant Twisted Framework?

Voici le script:

class ServerProtocol(protocol.Protocol): 
    def __init__(self): 
     self.buffer = None 
     self.client = None 

    def connectionMade(self): 
     factory = protocol.ClientFactory() 
     factory.protocol = ClientProtocol 
     factory.server = self 

     reactor.connectTCP('x.x.x.x', 80, factory) 

    def dataReceived(self, data): 
     if (self.client != None): 
      self.client.write(data) 
     else: 
      self.buffer = data 

    def write(self, data): 
     self.transport.write(data) 
     print 'Server: ' + data.encode('hex') 

class ClientProtocol(protocol.Protocol): 
    def connectionMade(self): 
     self.factory.server.client = self 
     self.write(self.factory.server.buffer) 
     self.factory.server.buffer = '' 

    def dataReceived(self, data): 
     self.factory.server.write(data) 

    def write(self, data): 
     self.transport.write(data) 
     print 'Client: ' + data.encode('hex') 

def main(): 

    factory = protocol.ServerFactory() 
    factory.protocol = ServerProtocol 

    reactor.listenTCP(8080, factory) 
    reactor.run() 

if __name__ == '__main__': 
    main() 

En classe ServerProtocol, Une fois la connexion (demande) est fait, je transmets la demande à xxxx IP à distance sur le port 80. Maintenant, je veux LoadBalance l'entrée demandes à plusieurs adresses IP distantes (xxxx, yyyy, zzzz) sur le port 80. J'ai regardé txLoadBalancer, mais je n'ai trouvé aucun exemple pour y entrer.

Y at-il un autre moyen de faire cela en utilisant un cadre torsadé?

(Note: - Je veux LoadBalance les demandes par programme, s'il vous plaît ne me suggérer de ne pas utiliser un tiers équilibreurs de charge)

Répondre

0

donc je pense que vous avez besoin de partager votre architecture avec deux scripts. Le premier sera load balancer et les autres seront des travailleurs simples.

Ou vous pouvez utiliser n'importe quel autre équilibreur de charge par exemple haproxy