Re: Load balanced web farm using SSL

From: srock (noone_at_localhost)
Date: 07/07/04


Date: Tue, 6 Jul 2004 20:09:57 -0400

Hi,

There are two [main] ways to handle load balancing with SSL.

1. Method 1: Have the IIS server handle the SSL connections.

In this case, you will need to buy a certificate for each server that will
handle SSL traffic. Note that the certificate will be the same across the
servers that have it installed.

The problem with this method is that you're limited in that the only
semi-reliable method to stick (by using a hardware-based load balancer)
users to the server that they started on is to stick them based on their IP
address coupled with a netmask that you define. So for example, say you
stick on a /24 netmask - a user with the IP of 192.168.100.5 gets load
balanced to server 1. When a second user with an IP of 192.168.100.90 visits
your SSL site, they too, will go to server 1. This method can become a
problem when dealing with the AOL's of the world because of their rotating
proxy servers that don't all use /24 netmasks. While you can change the
netmask on your end to anything you want that's valid, you need to consider
that you may be overloading some servers.

This method is good if your applications do not rely on in-process session
state because you can get away with a longer prefix (i.e. /22. /24) because
the worse thing that will happen is some of your clients may need to
renegotiate the SSL connection with another server, Also, like you asked
about, you can have 1 lucky server handle all the SSL connections provided
you're not using in-process session state. It's not the most ideal solution,
but it works.

This method is especially bad if you load balance based on information in
the request because the load balancer will not be able to read the request
(because it's encrypted)

2. Method 2: Have you load balancers or SSL decryption devices decrypt
SSL

You have lots of flexibility using this method. The most notable advantage
with this method is since the load balancer decrypts the traffic, it can
load balance based on any method that your LB's support when using standard
http. Once the SSL traffic is decrypted and a load balancing decision has
been made, you have the option of sending the traffic back to your IIS
servers in clear text or you can re-encrypt it using the SSL certificates
that are on your web servers. A nice feature of the F5 product line (and I'm
sure others too) is that you can use self-signed SSL certificates on the IIS
servers if you want to re-encrypt traffic from the load balancers to the IIS
servers. You still must have a trusted certificate on each of the load
balancers, but this way, you don't have to buy certificates for each of the
servers if you need to re-encrypt traffic.

 There are other methods too. For example, you have a unique SSL certificate
for each server and have your application redirect the user to the SSL site
for a particular server. For example, say you have server1 and server2. If a
user goes to server1 using standard http then they go to check out using SSL
(as is the case for a typical ecommerce site,) your app can direct them to
https://server1.domain.tld whereas a user that started on server2 will be
redirected to https://server2.domain.tld

Let me know if you have any more questions.

Regards,

smk

"Griff" <Howling@The.Moon> wrote in message
news:%23ioQZJ1YEHA.716@TK2MSFTNGP11.phx.gbl...
> One method to improve scalability is to implement a web farm where several
> "identical" web servers sit behind a load balancer.
>
> However, if these web servers support SSL then they're not "identical" as
> they will have their own unique certificates.
>
> The SSL hand-shake presumably can't survive if the load balancer keeps
> swapping servers, so....how does this work?
>
> Two scenarios that I can think of:
>
> 1 - all servers handle SSL (with their unique certificates) and the Load
> Balancer only load balances http requests; all https requests remain
> "sticky" to always call the same web server. Is this possible?
>
> 2 - one of the web servers in the farm is chosen to be the "lucky" one and
> handle all SSL connections. The load balancer is made aware of this and
> load balances http requests, but sends SSL ones through to only server A.
> Is this possible?
>
> If both 1 & 2 are possible, which is preferred? (Guess it's a case of 2
> being cheaper since it involves purchasing one verified certificate and
> therefore being the preferred option providing that it can cope with the
> load...).
>
> Thanks
>
> Griff
>
>



Relevant Pages

  • Re: Load balanced web farm using SSL
    ... your SSL site, they too, will go to server 1. ... proxy servers that don't all use /24 netmasks. ... the request because the load balancer will not be able to read the request ... sure others too) is that you can use self-signed SSL certificates on the IIS ...
    (microsoft.public.inetserver.iis)
  • Re: Load balanced web farm using SSL
    ... your SSL site, they too, will go to server 1. ... proxy servers that don't all use /24 netmasks. ... the request because the load balancer will not be able to read the request ... sure others too) is that you can use self-signed SSL certificates on the IIS ...
    (microsoft.public.inetserver.iis.security)
  • Re: OMA not implemented issue
    ... changed the SSL settings to secure only the ... Why did you create another 'Web site identifier'? ... necessary when using front-end servers. ... invokeAttr, Binder binder, Objectparameters, CultureInfo culture, ...
    (microsoft.public.exchange.setup)
  • Re: OMA not implemented issue
    ... Both are secured with SSL. ... /Exchange virtual directory and I can log in to the OMA now. ... Why did you create another 'Web site identifier'? ... necessary when using front-end servers. ...
    (microsoft.public.exchange.setup)
  • ASPNET To Web Service using SSL w/Client Certs
    ... This way you want get bored reading! ... what is the best/recommended way for ASPNET apps to call web services that REQUIRE Client Certificates via SSL? ... all servers must REQUIRE SSL and Server/client certificates. ...
    (microsoft.public.dotnet.framework.aspnet)

Loading