MattB l'ha colpito fuori dall'acqua. +1 risponderò con maggiori dettagli ma non sto cercando di prendere i suoi punti. Aggiungerò a quello che ha detto.
Ho una configurazione simile a quella che ha descritto e funziona benissimo. ARR è la strada da percorrere, anche su un singolo server.
Tuttavia, aggiungerei un paio di cose.
Crea i 2 siti, come raccomandato da Matt. Chiamali in qualche modo come yoursite.com01 e yoursite.com02.
Crea 2 regole di riscrittura URL. Uno per www.tuodominio.com e un altro staging.tuodominio.com. Per la produzione, utilizzare {HTTP_HOST} con un valore di (^ www.tuodominio.com $) | (il tuo IP). (o qualunque associazione preferiate) Per la stadiazione, utilizzare {HTTP_HOST} con un valore di (^ staging.tuodominio.com $). Chiama le regole yoursite.com e staging.yoursite.com.
Bind Rule = yoursite.com to site = yoursite.com01 e rule = staging.yoursite.com to site = yoursite.com02.
Installa FTP su staging.yoursite.com.
Il traffico di produzione ora sta andando a Rule = staging.yoursite.com e Site = yoursite.com01. Stagging al contrario.
Puoi eseguire la messa in scena in qualsiasi momento, test, pre-spinup, fare test ad altre persone, ecc. Durante il giorno, non importa. Distribuisci ogni volta sullo stesso account FTP. Funziona alla grande con i server di build.
Quindi, quando sei pronto per essere pubblicato, apporta solo 3 modifiche: - sposta l'associazione FTP da yoursite.com02 a yoursite.com01 - cambia URL Riscrivi regola yoursite.com per puntare a yoursite.com02 - cambia URL Riscrivi Staging regola. yoursite.com per puntare a yoursite.com01
Ora hai zero downtime, commutazione istantanea, con funzionalità di rollback immediato!
L'unico aspetto da considerare è lo stato della sessione fuori processo. Assicurarsi che il server di stato accetti entrambi gli ID sito in modo da non perdere lo stato della sessione durante lo scambio.
Si noti inoltre che questo è solo web e non database.
Per gli script, utilizzare l'editor di configurazione. Apporta le modifiche desiderate e fai clic su "Genera script". Ti fornirà il codice C #, appcmd o AHAdmin.
L'ho messo in atto per alcuni mesi con un front-end di una pagina Web per scambiare istanze e non mi guardo mai indietro. Rende le implementazioni così rinfrescanti rispetto alle implementazioni tradizionali.