2013-08-26 7 views
8

Il push del progetto di servizio cloud completo sul cloud richiede molto tempo, quindi se presenta alcune modifiche minori e voglio che riflettano immediatamente, quindi eseguo i RDP nel ruolo Web, apporto tali modifiche e riavvii IIS. Può qualcosa del genere essere fatto anche per il ruolo di lavoratore? Posso RDP e sostituire i file dll, ma non so come ricominciare il ruolo di lavoratore in quanto non esegue su IIS. Non sono sicuro su quale sia il ruolo del lavoratore? So che questa non è una buona pratica, ma dato che sono ancora in fase di sviluppo, questo accelererà enormemente il mio processo di test.Come modificare manualmente i file dei ruoli di lavoro su cloud eseguendo RDP?

Qualsiasi modo semplice per aggiornare il ruolo di lavoro su cloud anziché eseguire una push completa?

risposta

12

Brent è corretto al 100% e ho svalutato la sua risposta. È necessario fare attenzione a non apportare modifiche tramite RDP a un servizio di produzione. Detto questo, hai detto che questo era solo a scopo di test durante la tua fase di sviluppo, e c'è molto valore nell'essere in grado di aggiornare un singolo file DLL e testare senza dover ridistribuire l'intero servizio cloud. Lo faccio sempre durante la risoluzione dei problemi su una macchina virtuale di Azure.

Controllare http://blogs.msdn.com/b/kwill/archive/2011/05/05/windows-azure-role-architecture.aspx per l'architettura dei processi sulla VM. In particolare, si noti che WaHostBootstrapper è il processo padre sia per i ruoli utente che per quelli Web. Per sostituire una DLL in ruoli Web o di lavoro, il metodo migliore è:

  1. Terminare WaHostBootstrapper. Puoi farlo tramite Task Manager.
  2. Sostituire la DLL. Si noti che è necessario essere rapidi quando si esegue questa operazione poiché Azure riavvierà automaticamente tutto poco dopo aver ucciso WaHostBootstrapper *.
  3. Attendere il riavvio automatico di WaHostBootstrapper, che riavvierà automaticamente WaWorkerHost/WaIISHost.

* Se è necessario più tempo per apportare le modifiche, è possibile collegare un debugger come WinDBG a WindowsAzureGuestAgent e lasciarlo interrotto nel processo. Ciò impedirà a Azure di riavviare automaticamente il processo di avvio automatico dell'host. Dopo aver apportato le modifiche, puoi staccare il debugger e lasciare che WindowsAzureGuestAgent continui a funzionare. Si noti che se si lascia WindowsAzureGuestAgent nello stato di arresto per più di 10 minuti, l'agente host rileverà che la VM non risponde e riavvia la VM.

* Modifica: istruzioni più dettagliate sono disponibili a http://blogs.msdn.com/b/kwill/archive/2013/09/05/how-to-modify-a-running-azure-service.aspx.

+0

Grazie mille, questo è esattamente quello che volevo !! Ma non sono in grado di trovare WaHostBootstrapper nei processi del task manager. Esiste comunque un processo WindowsAzureGuestAgent, inizia il ruolo di lavoratore? – Bitsian

+0

Se vedi WindowsAzureGuestAgent, ma non WaHostBootstrapper, è probabile che il tuo ruolo venga riciclato. Controlla il flusso di lavoro per la risoluzione dei problemi all'indirizzo http://blogs.msdn.com/b/kwill/archive/2013/08/20/troubleshooting-scenario-1-role-recycling.aspx. – kwill

+0

Se è necessario fermarlo un po 'più di qualche secondo, si arresta WindowsAzureGuestAgentService e quindi si chiude l'attività WaHostBootstrapper. Quindi hai 10 minuti fino al riavvio del VM. – Archlight

6

In poche parole, non è così. Ciò avviene in conflitto diretto con la natura "stateless" dei servizi cloud di Windows Azure PaaS. Se un'istanza di un ruolo deve essere spostata, verrà sempre ripristinata lo stato originariamente implementato, annullando tutte le modifiche apportate. E le istanze di ruolo possono essere spostate in qualsiasi momento. Quindi qualsiasi tentativo di entrare in RDP e apportare modifiche causerà il tuo dolore significativo.

Se è davvero necessario questo tipo di distribuzione dinamica, è possibile creare uno script di avvio che estrae i file di contenuto da un archivio esterno (ad esempio Archiviazione BLOB di Windows Azure) e li trascini nell'istanza del ruolo prima dell'avvio.

L'operatore stesso è solo un programma di console con esecuzione prolungata con un processo iniziale avviato da una chiamata dal processo di Windows Azure Agent nella VM guest al metodo "OnStart" di un'istanza di ruolo.

+1

Solo per aggiungere a questo, la stessa apolidia di cui parla Brent vale anche per i ruoli Web. Quello che stai facendo per aggiornare i ruoli web potrebbe funzionare per il tuo sviluppo o test, ma non dovresti mai farlo per i sistemi di produzione. Le modifiche non verranno mantenute tra aggiornamenti di ruolo, patch del sistema operativo, ecc. Tutto ciò che Brent ha indicato. – MikeWo

+0

Grazie per l'avviso, ma non eseguirò tali modifiche sul server di produzione. Dato che sono ancora in fase di sviluppo, è piuttosto dispiaciuto ri-distribuire tutto solo per vedere alcuni piccoli cambiamenti, quindi era alla ricerca di un po 'di lavoro. Spero che la risposta di Kwill faccia il trucco. – Bitsian

+0

è necessario che l'emulatore locale non sia soddisfacente? – BrentDaCodeMonkey

Problemi correlati