Forum Discussion

Tiaan_92076's avatar
Tiaan_92076
Icon for Nimbostratus rankNimbostratus
May 15, 2008

Corba Load Balancing

Hallo,

 

 

My question is probably more related to Corba that an iRule, but any help would be appreciated.

 

 

I need to load balance requests to a group of servers without persisting the connection to spread the load evenly. Meaning "state" or any other connection information will not be available on all the servers being load balanced.

 

 

I've written a simple server application returning the name of the server it's running on. The application is running on two nodes at the moment, using round robin, with the client application running on a 3rd system.

 

 

Using Ethereal I see the 1st request being made is a "Request : _is_a", thereafter "Request : ".

 

 

When a request is sent to a different server than the original an exception "omg.org.CORBA.BAD_PARAM" is thrown.

 

 

What needs to happen before I can send a request to a different server from the original?

 

Is it as easy as sending all the "_is_a" request to both nodes in the configuration?

 

 

My iRule:

 

 

when CLIENT_DATA {

 

log local0.info "Client Data"

 

 

set payload [TCP::payload]

 

 

binary scan $payload H* giop

 

 

set giop_id [substr $giop 24 8]

 

set service_context [substr $giop 88 8]

 

 

set sessionID ""

 

set sessionID [IP::client_addr]:[TCP::client_port]:$giop_id

 

 

set CurPersist [session lookup uie sesID]

 

 

log local0.info "CurPersist: $CurPersist sessionID: $sessionID"

 

 

if {$CurPersist eq ""} {

 

log local0.info "No session"

 

session add uie sesID $sessionID 5

 

} elseif {$CurPersist eq $sessionID} {

 

log local0.info "Current Corba request"

 

session add uie sesID $sessionID 5

 

} else {

 

log local0.info "New Corba request"

 

session add uie sesID $sessionID 5

 

LB::detach

 

}

 

 

TCP::release

 

TCP::collect

 

}

 

 

Thanks

 

Tiaan
No RepliesBe the first to reply