While using DNS may well be a naive, I think it is more naive to
think that user space code running on a general purpose computer is
a good solution if you are concerned about load and/or failover.

If you really want performance and reliability, then firmware is the
solution for you and the 25K will do a little to help my Cisco shares :-)

However, I do think we need a reasonable solution that works as a
reasonable introduction to loadbalancing and failover.

If my understanding of the clustering / session manager is correct, it does
not really matter if sessions are not 100% sticky.  The clustering stuff will
cope, but it is just more efficient if it does not need to move everything to
a new node.

So this is the approach that I would like to take for this:

  + Write it in java, because we want to be 100% pure.   If that is not
    fast enough - buy Cisco ( I will declare an interest here as Cisco are the
    prime sponsor of Jetty development !-)

  + Use java.nio as:
      * if you care about performance you should be using jdk1.4 anyway
      * if you want one machine to handle more connections than the sum of
        all your servers, then java.net.ServerSocket aint going to do the job!
      * I want to play with nio before I write the NioListener for Jetty!

  * Allow sticky sessions, sticky IP and sticky host options.

  * If sticky sessions are used, or all new connections look for
    "jsessionid=" in the first packet of the request and the response.   If
    found, associate the ID with the current connecton allocation.

  * If sticky IP is set, use a hashmap of the source InetAddress to determine
    the connection association.

  * If sticky host option is set, use hashmap on InetAddress.getCanonicalHostName()
    to determine the connection association.

  * If multiple options are set, they are tried in the order they we defined
    until an association is found.

  * Stickyness applies to a listener, so you can have different settings for http and
    https ports.

  * If you have a new connection, an association to a server will be made via a
    pluggable balance policy.   The default will be round robin or least connections.

  * If a connections are only re-associated as they break or fail to connect to
    a server.

  + A failing server will continue to be tried for new connections according to the
    balancing policy - so that it can come back into the fold.
    A fancy balancing policy may wish to exclude a failed server for a period of
    time, or until further notice.

  + At this stage, there will be no re-balancing of existing associations if the
    load becomes asymmetric due to random chance (or any other reason).


How does that sound?   It should at least be a start for load balancing and failover.

I should have something working like this within a day or a month (Now there
is a broad estimate for you).   I'm happy to do this myself, but would also
appreciate a keen buddy on this once the skeleton is in place.


cheers


Bill Burke wrote:
> I was looking at the way Apache+Tomcat works.  They use a protocol between
> themselves.  Apache decrypts the SSL message and extracts "sticky" session
> information as well as SSL information and passes this over a load-balanced
> socket over a proprietary protocol to the Tomcat instance.  The message
> contains the HTTP request as well as all the SSL information.  Tomcat
> unpacks the message, creates an HttpRequest, and sends the request on their
> local "bus".  I guess they call this a Tomcat Connector.
> 
> ---
> 
> Marc, I see no reason why you have to be separate from Apache.  The issues
> here aren't trivial and they've already done all the work and they're
> open-source.  Actually their license is much more liberal than LGPL.  Plus
> for this kind of stuff you probably want something written in C for speed as
> Greg suggested.  Jetty already leverages Jasper, why not mod_jk?
> 
> ---
> 
> As far as load-balancing based on client IP and AOL, it is even worse than
> you think.  Supposedly, a client's IP can change in the middle of the
> session.(I said supposedly remember ;) You acutally have to stick on a mask
> of the IP.  Sure, client IP isn't the best way, but it was the only thing us
> ignorant bloaks knew at the time :)
> 
> 
>>-----Original Message-----
>>From: Greg Wilkins [mailto:[EMAIL PROTECTED]]
>>Sent: Thursday, March 07, 2002 6:05 AM
>>To: [EMAIL PROTECTED]
>>Subject: Re: [jetty-discuss] HTTP loadbalancing
>>
>>
>>
>>Chris,
>>
>>Your comments are correct (and user are the only ones who should post
>>to jetty-discuss!-)
>>
>>There are two common solutions:
>>
>>As the load balancer is in your organization then you can give it
>>the server certificate and it can terminate the SSL connection.
>>The forwarded connection is then done using standard HTTP or some
>>other protocol.  It is not over the internet, so it is moderately
>>secure (depending on the organizations network setup).
>>
>>The main problem with this setup, is that the server knows nothing
>>about the SSL side of things.  Thus the container rewrites URLs as
>>http: rather than https:
>>
>>The other solution is to have the balancer work at the TCP/IP level,
>>so that it does not decrypt the packet.   As it cannot crack open
>>the packets, it must use some other way of making sessions sticky.
>>The common way to do this is a hash on the client IP address, so
>>all connections from the same IP go to the same server.
>>
>>The problem with this one is that all AOL users may share the same
>>HTTP proxy - thus the same source IP address.
>>
>>But then there is no such thing as a silver bullet!
>>
>>I'm about halfway through implementing the first solution - but it
>>is complex and will take time.
>>
>>The second solution is easier and I'll try to find the day or two
>>that will be needed to implement it.   I already have most of the
>>required infrastructure in the JettyExtra InetGateway class.
>>
>>cheers
>>
>>
>>
>>
>>Chris Haynes wrote:
>>
>>>"Bill Burke" <[EMAIL PROTECTED]> wrote:
>>>...
>>>
>>>
>>>>Especially for HTTPs, since you have to decrypt the message to get
>>>>
>>>>
>>>the
>>>
>>>
>>>>session cookie.
>>>>
>>>>
>>>
>>>Forgive a mere user for intruding on jetty-discuss, but isn't there
>>>something architecturally awry here.
>>>
>>>As I understand HTTPS, there can only be one server-end to the
>>>SSL/TLS.
>>>
>>>Either the server-end is at the 'proxy' (with it holding the host
>>>keystore etc.), or the proxy can't decrypt.
>>>
>>>If the proxy acts as the server-end, then how is the Servlet system at
>>>the 'actual' server to supply the 'isSecure()' value to the Servlet?
>>>
>>>
>>>Chris Haynes
>>>
>>>
>>>
>>>For the latest information about Jetty, please see
>>>
> http://jetty.mortbay.org
> 
>>To alter your subscription to this list goto
>>
> http://groups.yahoo.com/group/jetty-discuss
> 
>>Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
>>
>>
>>
> 
> 
> 
> --
> Greg Wilkins<[EMAIL PROTECTED]>          GB  Phone: +44-(0)7092063462
> Mort Bay Consulting Australia and UK.    Mbl Phone: +61-(0)4 17786631
> http://www.mortbay.com                   AU  Phone: +61-(0)2 98107029
> 
> 
> 
> For the latest information about Jetty, please see http://jetty.mortbay.org
> 
> To alter your subscription to this list goto
> http://groups.yahoo.com/group/jetty-discuss
> 
> Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
> 
> 
> ------------------------ Yahoo! Groups Sponsor ---------------------~-->
> Access Your PC from Anywhere
> Full setup in 2 minutes! - Free Download
> http://us.click.yahoo.com/Y8IZpD/2XkDAA/yigFAA/CefplB/TM
> ---------------------------------------------------------------------~->
> 
> For the latest information about Jetty, please see http://jetty.mortbay.org
> 
> To alter your subscription to this list goto 
>http://groups.yahoo.com/group/jetty-discuss 
> 
> Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/ 
> 
> 



-- 
Greg Wilkins<[EMAIL PROTECTED]>          GB  Phone: +44-(0)7092063462
Mort Bay Consulting Australia and UK.    Mbl Phone: +61-(0)4 17786631
http://www.mortbay.com                   AU  Phone: +61-(0)2 98107029


_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to