Co to jest model usługi w chmurze platformy Azure i jak można go spakować?
Usługa w chmurze jest tworzona na podstawie trzech składników, definicji usługi (csdef),konfiguracji usługi (.cscfg)i pakietu usługi (.cspkg). Pliki ServiceDefinition.csdef i ServiceConfig.cscfg są oparte na formacie XML i opisują strukturę usługi w chmurze i jej konfigurację. Zbiorczo nazywamy te pliki modelem. ServicePackage.cspkg to plik zip generowany na podstawie pliku ServiceDefinition.csdef i między innymi zawiera wszystkie wymagane zależności oparte na plikach binarnych. Platforma Azure tworzy usługę w chmurze zarówno na podstawie pakietu ServicePackage.cspkg , jak i pliku ServiceConfig.cscfg.
Po uruchomieniu usługi w chmurze na platformie Azure można ją ponownie skonfigurować za pomocą pliku ServiceConfig.cscfg , ale nie można zmienić definicji.
O czym chcesz dowiedzieć się więcej?
- Chcę dowiedzieć się więcej o plikach ServiceDefinition.csdef i ServiceConfig.cscfg .
- Wiem już o tym, daj mi kilka przykładów na temat tego, co mogę skonfigurować.
- Chcę utworzyć plik ServicePackage.cspkg.
ServiceDefinition.csdef
Plik ServiceDefinition.csdef określa ustawienia używane przez platformę Azure do konfigurowania usługi w chmurze. Schemat definicji usługi platformy Azure (plik csdef) udostępnia dozwolony format pliku definicji usługi. W poniższym przykładzie przedstawiono ustawienia, które można zdefiniować dla ról Sieci Web i Procesu roboczego:
<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="MyServiceName" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
<WebRole name="WebRole1" vmsize="Standard_D1_v2">
<Sites>
<Site name="Web">
<Bindings>
<Binding name="HttpIn" endpointName="HttpIn" />
</Bindings>
</Site>
</Sites>
<Endpoints>
<InputEndpoint name="HttpIn" protocol="http" port="80" />
<InternalEndpoint name="InternalHttpIn" protocol="http" />
</Endpoints>
<Certificates>
<Certificate name="Certificate1" storeLocation="LocalMachine" storeName="My" />
</Certificates>
<Imports>
<Import moduleName="Connect" />
<Import moduleName="Diagnostics" />
<Import moduleName="RemoteAccess" />
<Import moduleName="RemoteForwarder" />
</Imports>
<LocalResources>
<LocalStorage name="localStoreOne" sizeInMB="10" />
<LocalStorage name="localStoreTwo" sizeInMB="10" cleanOnRoleRecycle="false" />
</LocalResources>
<Startup>
<Task commandLine="Startup.cmd" executionContext="limited" taskType="simple" />
</Startup>
</WebRole>
<WorkerRole name="WorkerRole1">
<ConfigurationSettings>
<Setting name="DiagnosticsConnectionString" />
</ConfigurationSettings>
<Imports>
<Import moduleName="RemoteAccess" />
<Import moduleName="RemoteForwarder" />
</Imports>
<Endpoints>
<InputEndpoint name="Endpoint1" protocol="tcp" port="10000" />
<InternalEndpoint name="Endpoint2" protocol="tcp" />
</Endpoints>
</WorkerRole>
</ServiceDefinition>
Aby lepiej zrozumieć schemat XML używany w tym miejscu, możesz zapoznać się z schematem definicji usługi, jednak poniżej przedstawiono krótkie wyjaśnienie niektórych elementów:
Witryn
Zawiera definicje witryn internetowych lub aplikacji internetowych hostowanych w usługach IIS7.
InputEndpoints
Zawiera definicje punktów końcowych używanych do kontaktowania się z usługą w chmurze.
Wewnętrzne punkty końcowe
Zawiera definicje punktów końcowych, które są używane przez wystąpienia ról do komunikowania się ze sobą.
ConfigurationSettings
Zawiera definicje ustawień funkcji określonej roli.
Certyfikaty
Zawiera definicje certyfikatów, które są wymagane dla roli. W poprzednim przykładzie kodu przedstawiono certyfikat używany do konfiguracji programu Azure Connect.
LocalResources
Zawiera definicje zasobów magazynu lokalnego. Zasób magazynu lokalnego jest katalogiem zarezerwowanym w systemie plików maszyny wirtualnej, w której jest uruchomione wystąpienie roli.
Przywozu
Zawiera definicje importowanych modułów. W poprzednim przykładzie kodu przedstawiono moduły podłączania pulpitu zdalnego i programu Azure Connect.
Startup
Zawiera zadania uruchamiane po uruchomieniu roli. Zadania są definiowane w pliku .cmd lub pliku wykonywalnym.
ServiceConfiguration.cscfg
Konfiguracja ustawień usługi w chmurze jest określana przez wartości w pliku ServiceConfiguration.cscfg . Należy określić liczbę wystąpień, które mają zostać wdrożone dla każdej roli w tym pliku. Wartości ustawień konfiguracji zdefiniowanych w pliku definicji usługi są dodawane do pliku konfiguracji usługi. Odciski palca dla wszystkich certyfikatów zarządzania skojarzonych z usługą w chmurze są również dodawane do pliku. Schemat konfiguracji usługi platformy Azure (plik cscfg) udostępnia dozwolony format pliku konfiguracji usługi.
Plik konfiguracji usługi nie jest spakowany z aplikacją. Przekazuje ona na platformę Azure jako oddzielny plik i służy do konfigurowania usługi w chmurze. Możesz przekazać nowy plik konfiguracji usługi bez ponownego wdrażania usługi w chmurze. Wartości konfiguracji usługi w chmurze można zmienić, gdy usługa w chmurze jest uruchomiona. W poniższym przykładzie przedstawiono ustawienia konfiguracji, które można zdefiniować dla ról sieci Web i procesu roboczego:
<?xml version="1.0"?>
<ServiceConfiguration serviceName="MyServiceName" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration">
<Role name="WebRole1">
<Instances count="2" />
<ConfigurationSettings>
<Setting name="SettingName" value="SettingValue" />
</ConfigurationSettings>
<Certificates>
<Certificate name="CertificateName" thumbprint="CertThumbprint" thumbprintAlgorithm="sha1" />
<Certificate name="Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption"
thumbprint="CertThumbprint" thumbprintAlgorithm="sha1" />
</Certificates>
</Role>
</ServiceConfiguration>
Możesz zapoznać się ze schematem konfiguracji usługi, aby lepiej zrozumieć schemat XML używany w tym miejscu, jednak poniżej przedstawiono krótkie wyjaśnienie elementów:
Wystąpienia
Konfiguruje liczbę uruchomionych wystąpień dla roli. Aby zapobiec potencjalnie niedostępności usługi w chmurze podczas uaktualniania, zalecamy wdrożenie więcej niż jednego wystąpienia ról dostępnych w Internecie. Wdrażając więcej niż jedno wystąpienie, należy przestrzegać wytycznych w umowie dotyczącej poziomu usług obliczeniowych platformy Azure (SLA), która gwarantuje łączność zewnętrzną na poziomie 99,95% dla ról dostępnych z Internetu, gdy co najmniej dwa wystąpienia roli są wdrażane dla usługi.
ConfigurationSettings
Konfiguruje ustawienia dla uruchomionych wystąpień roli. Nazwa <Setting>
elementów musi być zgodna z definicjami ustawień w pliku definicji usługi.
Certyfikaty
Konfiguruje certyfikaty używane przez usługę. W poprzednim przykładzie kodu pokazano, jak zdefiniować certyfikat dla modułu RemoteAccess. Wartość atrybutu odcisku palca musi być ustawiona na odcisk palca certyfikatu do użycia.
Uwaga
Odcisk palca certyfikatu można dodać do pliku konfiguracji przy użyciu edytora tekstów. Można również dodać wartość na karcie Certyfikaty na stronie Właściwości roli w programie Visual Studio.
Definiowanie portów dla wystąpień roli
Platforma Azure zezwala tylko na jeden punkt wejścia do roli internetowej. Oznacza to, że cały ruch występuje za pośrednictwem jednego adresu IP. Witryny sieci Web można skonfigurować tak, aby współużytkować port, konfigurując nagłówek hosta w celu przekierowania żądania do właściwej lokalizacji. Aplikacje można również skonfigurować tak, aby nasłuchiwać dobrze znanych portów na adresie IP.
Poniższy przykład przedstawia konfigurację roli sieci Web z witryną internetową i aplikacją internetową. Witryna internetowa jest skonfigurowana jako domyślna lokalizacja wpisu na porcie 80, a aplikacje internetowe są skonfigurowane do odbierania żądań z alternatywnego nagłówka hosta o nazwie mail.mysite.cloudapp.net
.
<WebRole>
<ConfigurationSettings>
<Setting name="DiagnosticsConnectionString" />
</ConfigurationSettings>
<Endpoints>
<InputEndpoint name="HttpIn" protocol="http" port="80" />
<InputEndpoint name="Https" protocol="https" port="443" certificate="SSL"/>
<InputEndpoint name="NetTcp" protocol="tcp" port="808" certificate="SSL"/>
</Endpoints>
<LocalResources>
<LocalStorage name="Sites" cleanOnRoleRecycle="true" sizeInMB="100" />
</LocalResources>
<Site name="Mysite" packageDir="Sites\Mysite">
<Bindings>
<Binding name="http" endpointName="HttpIn" />
<Binding name="https" endpointName="Https" />
<Binding name="tcp" endpointName="NetTcp" />
</Bindings>
</Site>
<Site name="MailSite" packageDir="MailSite">
<Bindings>
<Binding name="mail" endpointName="HttpIn" hostHeader="mail.mysite.cloudapp.net" />
</Bindings>
<VirtualDirectory name="artifacts" />
<VirtualApplication name="storageproxy">
<VirtualDirectory name="packages" packageDir="Sites\storageProxy\packages"/>
</VirtualApplication>
</Site>
</WebRole>
Zmienianie konfiguracji roli
Możesz zaktualizować konfigurację usługi w chmurze, gdy jest ona uruchomiona na platformie Azure, bez przełączenia usługi w tryb offline. Aby zmienić informacje o konfiguracji, możesz przekazać nowy plik konfiguracji lub edytować plik konfiguracji i zastosować go do uruchomionej usługi. W konfiguracji usługi można wprowadzić następujące zmiany:
- Zmienianie wartości ustawień konfiguracji
Gdy ustawienie konfiguracji ulegnie zmianie, wystąpienie roli może zdecydować się na zastosowanie zmiany, gdy wystąpienie jest w trybie online, lub aby bezpiecznie odzyskać wystąpienie i zastosować zmianę, gdy wystąpienie jest w trybie offline. - Zmienianie topologii usługi wystąpień ról
Zmiany topologii nie mają wpływu na uruchomione wystąpienia, z wyjątkiem sytuacji, w których wystąpienie jest usuwane. Wszystkie pozostałe wystąpienia zazwyczaj nie muszą być poddawane recyklingu; Można jednak zrezygnować z wystąpień ról w odpowiedzi na zmianę topologii. - Zmienianie odcisku palca certyfikatu
Certyfikat można zaktualizować tylko wtedy, gdy wystąpienie roli jest w trybie offline. Jeśli certyfikat jest dodawany, usuwany lub zmieniany, gdy wystąpienie roli jest w trybie online, platforma Azure bezpiecznie przełącza wystąpienie w tryb offline w celu zaktualizowania certyfikatu. Platforma Azure przywraca ją do trybu online po zakończeniu zmiany.
Obsługa zmian konfiguracji za pomocą zdarzeń środowiska uruchomieniowego usługi
Biblioteka środowiska uruchomieniowego platformy Azure zawiera przestrzeń nazw Microsoft.WindowsAzure.ServiceRuntime, która udostępnia klasy umożliwiające interakcję ze środowiskiem platformy Azure z roli. Klasa RoleEnvironment definiuje następujące zdarzenia, które są wywoływane przed i po zmianie konfiguracji:
- Zmienianie zdarzenia
Dzieje się tak przed zastosowaniem zmiany konfiguracji do określonego wystąpienia roli, co daje szansę na usunięcie wystąpień roli w razie potrzeby. - Zmienione zdarzenie
Występuje po zastosowaniu zmiany konfiguracji do określonego wystąpienia roli.
Uwaga
Ponieważ zmiany certyfikatu zawsze przyjmują wystąpienia roli w trybie offline, nie zgłaszają one zdarzeń RoleEnvironment.Changing lub RoleEnvironment.Changed.
ServicePackage.cspkg
Uwaga
Maksymalny rozmiar pakietu, który można wdrożyć, to 600 MB
Aby wdrożyć aplikację jako usługę w chmurze na platformie Azure, należy najpierw spakować aplikację w odpowiednim formacie. Możesz użyć narzędzia wiersza polecenia CSPack (zainstalowanego z zestawem Azure SDK), aby utworzyć plik pakietu jako alternatywę dla programu Visual Studio.
Pakiet CSPack używa zawartości pliku definicji usługi i pliku konfiguracji usługi w celu zdefiniowania zawartości pakietu. Pakiet CSPack generuje plik pakietu aplikacji (cspkg), który można przekazać na platformę Azure przy użyciu witryny Azure Portal. Domyślnie pakiet ma nazwę [ServiceDefinitionFileName].cspkg
, ale można określić inną nazwę przy użyciu /out
opcji CSPack.
Pakiet CSPack znajduje się w lokalizacji
C:\Program Files\Microsoft SDKs\Azure\.NET SDK\[sdk-version]\bin\
Uwaga
CSPack.exe (w systemie Windows) jest dostępny przez uruchomienie skrótu wiersza polecenia platformy Microsoft Azure zainstalowanego za pomocą zestawu SDK.
Uruchom program CSPack.exe sam w celu wyświetlenia dokumentacji wszystkich możliwych przełączników i poleceń.
Napiwek
Uruchom usługę w chmurze lokalnie w emulatorze obliczeń platformy Microsoft Azure, użyj opcji /copyonly. Ta opcja kopiuje pliki binarne aplikacji do układu katalogu, z którego mogą być uruchamiane w emulatorze obliczeniowym.
Przykładowe polecenie w celu spakowania usługi w chmurze
W poniższym przykładzie tworzony jest pakiet aplikacji zawierający informacje dotyczące roli sieci Web. Polecenie określa plik definicji usługi do użycia, katalog, w którym można znaleźć pliki binarne, oraz nazwę pliku pakietu.
cspack [DirectoryName]\[ServiceDefinition]
/role:[RoleName];[RoleBinariesDirectory]
/sites:[RoleName];[VirtualPath];[PhysicalPath]
/out:[OutputFileName]
Jeśli aplikacja zawiera zarówno rolę internetową, jak i rolę procesu roboczego, używane jest następujące polecenie:
cspack [DirectoryName]\[ServiceDefinition]
/out:[OutputFileName]
/role:[RoleName];[RoleBinariesDirectory]
/sites:[RoleName];[VirtualPath];[PhysicalPath]
/role:[RoleName];[RoleBinariesDirectory];[RoleAssemblyName]
Gdzie zmienne są zdefiniowane w następujący sposób:
Zmienna | Wartość |
---|---|
[DirectoryName] | Podkatalog w katalogu głównym projektu zawierający plik csdef projektu platformy Azure. |
[ServiceDefinition] | Nazwa pliku definicji usługi. Domyślnie ten plik ma nazwę ServiceDefinition.csdef. |
[OutputFileName] | Nazwa wygenerowanego pliku pakietu. Zazwyczaj ta zmienna jest ustawiana na nazwę aplikacji. Jeśli nie określono nazwy pliku, pakiet aplikacji zostanie utworzony jako [ApplicationName].cspkg. |
[RoleName] | Nazwa roli zdefiniowanej w pliku definicji usługi. |
[RoleBinariesDirectory] | Lokalizacja plików binarnych roli. |
[VirtualPath] | Katalogi fizyczne dla każdej ścieżki wirtualnej zdefiniowanej w sekcji Lokacje definicji usługi. |
[PhysicalPath] | Katalogi fizyczne zawartości każdej ścieżki wirtualnej zdefiniowanej w węźle lokacji definicji usługi. |
[RoleAssemblyName] | Nazwa pliku binarnego roli. |
Następne kroki
- Zapoznaj się z wymaganiami wstępnymi dotyczącymi wdrażania dla usług Cloud Services (rozszerzona obsługa).
- Wdróż usługę w chmurze (rozszerzoną pomoc techniczną) przy użyciu witryny Azure Portal, programu PowerShell, szablonu lub programu Visual Studio.
- Zapoznaj się z często zadawanymi pytaniami dotyczącymi usług Cloud Services (rozszerzona pomoc techniczna).