UPDATE 2009-05-21Architettura raccomandazione per carico bilanciato sito ASP.NET
Ho testato il metodo # 2 di utilizzare un unico condivisione di rete. Esso si traduce in alcuni problemi con Windows Server 2003 sotto carico:
http://support.microsoft.com/kb/810886
aggiornamento fine
ho ricevuto una proposta per un sito ASP.NET che funziona nel modo seguente:
Hardware load balancer -> 4 server Web IIS6 -> SQL Server DB con cluster di failover
Ecco il problema ...
Stiamo scegliendo dove archiviare i file Web (aspx, html, css, immagini). Sono state proposte due opzioni:
1) Creare copie identiche dei file Web su ciascuno dei 4 server IIS.
2) Inserire una singola copia dei file Web in una condivisione di rete accessibile dai 4 server Web. I web-root sui 4 server IIS verranno mappati sulla singola condivisione di rete.
Qual è la soluzione migliore? L'opzione 2 è ovviamente più semplice per le distribuzioni poiché richiede la copia dei file solo in una singola posizione. Tuttavia, mi chiedo se ci saranno problemi di scalabilità poiché quattro server web stanno tutti accedendo a un singolo set di file. IIS memorizzerà questi file in locale? Colpirebbe la condivisione di rete su ogni richiesta del cliente? Inoltre, l'accesso a una condivisione di rete sarà sempre più lento di ottenere un file su un disco rigido locale? Il carico sulla condivisione di rete peggiora notevolmente se vengono aggiunti altri server IIS?
Per dare una prospettiva, questo è per un sito web che attualmente riceve ~ 20 milioni di visite al mese. Al picco recente, stava ricevendo circa 200 colpi al secondo.
Per favore fatemi sapere se avete una particolare esperienza con tale configurazione. Grazie per l'input.
UPDATE 2009-03-05
Per chiarire la mia situazione - gli "schieramenti" in questo sistema sono molto più frequenti di quanto una tipica applicazione web. Il sito Web è il front-end per un CMS di back office. Ogni volta che il contenuto viene pubblicato nel CMS, le nuove pagine (aspx, html, ecc.) Vengono automaticamente trasferite al sito live. Le implementazioni sono fondamentalmente "su richiesta". Teoricamente, questa spinta potrebbe accadere più volte in un minuto o più. Quindi non sono sicuro che sarebbe pratico implementare un server web alla volta. Pensieri?
+1 facciamo la stessa cosa: prendiamo un server "fuori rotazione", distribuiamo, scaldiamo, torniamo alla rotazione. –
+1 l'unico modo per farlo. L'abbiamo chiamato "in the mix" e "out of the mix" però. – DancesWithBamboo
+1 questa è una procedura provata nel tempo. Aggiunta una risposta su come gestire l'alto tasso di aggiornamento. – eglasius