2013-08-26 29 views
8

Pchanie projektu usługi w chmurze do chmury jest bardzo czasochłonne, więc jeśli wprowadzimy kilka drobnych zmian i chcę, aby od razu się odzwierciedlały, to przejmuję RDP do roli internetowej i wprowadzam te zmiany i ponownie uruchamiam usługi IIS. Czy coś takiego można zrobić również dla roli pracownika? Mogę RDP i zastąpić pliki dll, ale nie wiem, jak ponownie uruchomić rolę robota, ponieważ nie działa na IIS. Nie jestem pewien, na czym polega rola pracownika? Wiem, że to nie jest dobra praktyka, ale ponieważ wciąż jestem w fazie rozwoju, znacznie przyspieszy to proces testowania.Jak ręcznie zmienić pliki ról roboczych w chmurze, wykonując RDP?

Czy można w łatwy sposób zaktualizować rolę pracownika w chmurze zamiast wykonywać pełne polecenie?

Odpowiedz

12

Brent ma 100% poprawności i przegłosowałem jego odpowiedź. Należy zachować ostrożność, aby nie wprowadzać żadnych zmian za pośrednictwem RDP do usługi produkcyjnej. Powiedziawszy to, wspomniałeś, że było to tylko do celów testowych podczas twojej fazy rozwoju, i jest wiele wartości w możliwości aktualizacji pojedynczego pliku DLL i testowania bez konieczności ponownego wdrażania całej usługi w chmurze. Robię to cały czas podczas rozwiązywania problemów na maszynie wirtualnej Azure.

Sprawdź architekturę procesów na maszynie wirtualnej pod numerem http://blogs.msdn.com/b/kwill/archive/2011/05/05/windows-azure-role-architecture.aspx. W szczególności zauważ, że WaHostBootstrapper jest procesem nadrzędnym zarówno dla ról pracownika, jak i sieci. Aby zastąpić bibliotekę DLL rolami WWW lub robocizny, najlepszą metodą jest:

  1. Kończenie WaHostBootstrapper. Możesz to zrobić za pomocą Menedżera zadań.
  2. Wymień bibliotekę DLL. Zwróć uwagę, że musisz zrobić to szybko, ponieważ Azure automatycznie uruchomi ponownie wszystko wkrótce po zabiciu WaHostBootstrapper *.
  3. Zaczekaj, aż WaHostBootstrapper uruchomi się automatycznie, co spowoduje automatyczne ponowne uruchomienie WaWorkerHost/WaIISHost.

* Jeśli potrzebujesz więcej czasu, aby dokonać zmian następnie można dołączyć debugera takich jak WinDBG do WindowsAzureGuestAgent i pozostawić go podzielić na procesie. Zapobiegnie to automatycznemu ponownemu uruchomieniu procesu startowego hosta przez Azure. Po wprowadzeniu zmian można odłączyć debugger i pozwolić systemowi WindowsAzureGuestAgent kontynuować działanie. Zauważ, że jeśli pozostawisz WindowsAzureGuestAgent w stanie zatrzymanym na dłużej niż 10 minut, agent hosta wykryje, że maszyna wirtualna przestała reagować i zrestartuje maszynę wirtualną.

* Edycja: Bardziej szczegółowe instrukcje są dostępne pod adresem http://blogs.msdn.com/b/kwill/archive/2013/09/05/how-to-modify-a-running-azure-service.aspx.

+0

Wielkie dzięki, właśnie to chciałem !! Ale nie jestem w stanie znaleźć WaHostBootstrapper w procesach menedżera zadań. Istnieje jednak proces WindowsAzureGuestAgent, czy to uruchamia rolę pracownika? – Bitsian

+0

Jeśli zobaczysz WindowsAzureGuestAgent, ale nie WaHostBootstrapper, prawdopodobnie Twoja rola to recykling. Sprawdź procedurę rozwiązywania problemów pod adresem http://blogs.msdn.com/b/kwill/archive/2013/08/20/troubleshooting-scenario-1-role-recycling.aspx. – kwill

+0

Jeśli chcesz zatrzymać go nieco dłużej niż kilka sekund, zatrzymaj usługę WindowsAzureGuestAgentService, a następnie zabij zadanie WaHostBootstrapper. Następnie masz 10 minut do ponownego uruchomienia vm. – Archlight

6

Po prostu nie, nie. Takie działanie jest bezpośrednio sprzeczne z "bezpaństwowością" usług chmury w usłudze Windows Azure PaaS. Jeśli instancja roli musi zostać przeniesiona, zawsze powróci ona do pierwotnie wdrożonego stanu, unieważniając wszelkie wprowadzone zmiany. Instancje ról mogą zostać przeniesione w dowolnym momencie. Tak więc każda próba wprowadzenia PROW i wprowadzania zmian spowoduje duży ból.

Jeśli naprawdę potrzebujesz tego typu dynamicznego wdrożenia, możesz utworzyć skrypt uruchamiający, który ściąga pliki zawartości z zewnętrznego magazynu (takiego jak Windows Azure Blob Storage) i przenosi je do instancji roli przed uruchomieniem.

Sam pracownik jest po prostu długim programem konsolowym z początkowym procesem rozpoczętym przez wywołanie z procesu agenta Windows Azure w maszynie wirtualnej gościa do metody "OnStart" instancji roli.

+1

Trzeba dodać, że ten sam status bezpaństwowości, o którym mówi Brent, dotyczy także ról sieciowych. To, co robisz, aby zaktualizować role sieciowe, może zadziałać podczas tworzenia lub testowania, ale nigdy nie powinieneś tego robić dla systemów produkcyjnych. Zmiany nie zostaną zachowane w aktualizacjach ról, poprawkach systemu operacyjnego itp. Wszystko, co wskazał Brent. – MikeWo

+0

Dzięki za heads up, Ale nie będę robić żadnych takich zmian na serwerze produkcyjnym. Odkąd jestem jeszcze w fazie rozwoju, jest to dość trudne, aby ponownie rozmieścić wszystko po to, aby zobaczyć drobne zmiany, dlatego szukałem trochę pracy dookoła. Mam nadzieję, że odpowiedź Kwill rozwiąże ten problem. – Bitsian

+0

czy jest tutaj trochę potrzeby, aby emulator lokalny nie spełniał? – BrentDaCodeMonkey