Wie können Sie die Worker-Rollendateien in der Cloud manuell ändern, indem Sie RDP ausführen?

8

Es ist sehr zeitaufwändig, das gesamte Cloud-Service-Projekt in die Cloud zu verschieben. Wenn es einige kleinere Änderungen gibt und ich möchte, dass sie sofort widerspiegelt, dann rufe ich RDP in die Web-Rolle auf und führe diese Änderungen durch und starte den IIS neu. Kann so etwas auch für die Arbeiterrolle getan werden? Ich kann RDP und die DLL-Dateien ersetzen, aber ich weiß nicht, wie Sie die Worker-Rolle neu starten, da es nicht auf IIS ausgeführt wird. Ich bin mir nicht sicher, was die Worker-Rolle ausführt. Ich weiß, dass dies keine gute Übung ist, aber da ich noch in der Entwicklungsphase bin, wird dies meinen Testprozess enorm beschleunigen.

Gibt es einfache Möglichkeiten, die Rolle des Mitarbeiters in der Cloud zu aktualisieren, anstatt einen vollständigen Push durchzuführen?

    
Bitsian 26.08.2013, 14:45
quelle

2 Antworten

12

Brent ist zu 100% korrekt und ich habe seine Antwort aktualisiert. Sie sollten darauf achten, dass Sie keine Änderungen über RDP an einen Produktionsdienst vornehmen. Allerdings haben Sie erwähnt, dass dies nur für Testzwecke während Ihrer Entwicklungsphase gedacht war, und es ist von großem Wert, eine einzelne DLL-Datei zu aktualisieren und testen zu können, ohne den gesamten Cloud-Service neu bereitstellen zu müssen. Ich mache dies die ganze Zeit bei der Fehlerbehebung auf einer Azure-VM.

Überprüfen Sie Ссылка auf die Architektur der Prozesse auf der VM. Beachten Sie insbesondere, dass WaHostBootstrapper der übergeordnete Prozess für beide Rollen ist. Um eine DLL in Web- oder Worker-Rollen zu ersetzen, ist die beste Methode:

  1. Beenden Sie WaHostBootstrapper. Sie können dies über den Task-Manager tun.
  2. Ersetzen Sie die DLL. Beachten Sie, dass Sie dabei schnell vorgehen müssen, da Azure automatisch kurz nach dem Beenden von WaHostBootstrapper * alles neu startet.
  3. Warten Sie, bis der WaHostBootstrapper automatisch neu gestartet wird, wodurch WaWorkerHost / WaIISHost automatisch neu gestartet wird.

* Wenn Sie länger brauchen, um Ihre Änderung vorzunehmen, können Sie einen Debugger wie WinDBG an WindowsAzureGuestAgent anhängen und den Prozess unterbrechen. Dies verhindert, dass Azure den Host-Bootstrapper-Prozess automatisch neu startet. Nachdem Sie Ihre Änderungen vorgenommen haben, können Sie den Debugger trennen und WindowsAzureGuestAgent weiter ausführen lassen. Hinweis: Wenn Sie WindowsAzureGuestAgent für mehr als 10 Minuten im angehaltenen Zustand belassen, erkennt der Host-Agent, dass die VM nicht mehr reagiert, und startet die VM neu.

* Bearbeiten: Weitere detaillierte Anweisungen finden Sie unter Ссылка .

    
kwill 26.08.2013, 16:08
quelle
6

Einfach gesagt, Sie nicht. Dies steht in direktem Konflikt mit der "Staatenlosigkeit" der Windows Azure PaaS Cloud Services. Wenn eine Instanz einer Rolle verschoben werden muss, wird sie immer in den ursprünglichen Bereitstellungszustand zurückgesetzt, wodurch alle von Ihnen vorgenommenen Änderungen aufgehoben werden. Und Rolleninstanzen können jederzeit verschoben werden. Jeder Versuch, sich einzuloggen und Änderungen vorzunehmen, führt zu erheblichen Schmerzen.

Wenn Sie diese Art der dynamischen Bereitstellung wirklich benötigen, können Sie ein Start-Skript erstellen, das Inhaltsdateien aus einem externen Speicher (wie z. B. Windows Azure Blob Storage) abruft und sie vor dem Start in die Rolleninstanz einliest.

Der Worker selbst ist lediglich ein lang laufendes Konsolenprogramm mit einem anfänglichen Prozess, der durch einen Aufruf vom Windows Azure Agent-Prozess in Ihrer Gast-VM an die "OnStart" -Methode einer Rolleninstanz gestartet wird.

    
BrentDaCodeMonkey 26.08.2013 15:14
quelle