Jaký je model cloudové služby Azure a jak ho zabalit?
Cloudová služba se vytváří ze tří komponent, definice služby (.csdef), konfigurace služby (.cscfg) a balíčku služby (.cspkg). Soubory ServiceDefinition.csdef i ServiceConfig.cscfg jsou založené na souborech XML a popisují strukturu cloudové služby a způsob konfigurace. souhrnně nazývaný model. ServicePackage.cspkg je soubor zip, který se generuje ze souboru ServiceDefinition.csdef a mimo jiné obsahuje všechny požadované binární závislosti. Azure vytvoří cloudovou službu z balíčku ServicePackage.cspkg a souboru ServiceConfig.cscfg.
Jakmile je cloudová služba spuštěná v Azure, můžete ji překonfigurovat prostřednictvím souboru ServiceConfig.cscfg, ale nemůžete změnit definici.
O čem byste se chtěli dozvědět více?
- Chci se dozvědět více o souborech ServiceDefinition.csdef a ServiceConfig.cscfg.
- Už o tom vím, dejte mi pár příkladů toho, co můžu nakonfigurovat.
- Chci vytvořit ServicePackage.cspkg.
- Používám Visual Studio a chci...
- [Vytvoření cloudové služby] [vs_create]
- [Změna konfigurace existující cloudové služby] [vs_reconfigure]
- [Nasazení projektu cloudové služby] [vs_deploy]
- [Vzdálená plocha v instanci cloudové služby] [remotedesktop]
ServiceDefinition.csdef
Soubor ServiceDefinition.csdef určuje nastavení, která Azure používá ke konfiguraci cloudové služby. Schéma definice služby Azure (soubor .csdef) poskytuje pro definiční soubor služby formát, který je možné povolit. Následující příklad ukazuje nastavení, která lze definovat pro webové role a role pracovního procesu:
<?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>
Pokud chcete lépe porozumět zde používanému schématu XML, můžete si prostudovat schéma definice služby , tady je ale rychlé vysvětlení některých prvků:
Lokality
Obsahuje definice pro weby nebo webové aplikace hostované ve službě IIS7.
InputEndpoints (Vstupní a výstupní body)
Obsahuje definice koncových bodů, které se používají ke kontaktování cloudové služby.
InternalEndpoints
Obsahuje definice koncových bodů, které instance rolí používají ke komunikaci mezi sebou.
Nastavení konfigurace
Obsahuje definice nastavení pro funkce konkrétní role.
Certifikáty
Obsahuje definice pro certifikáty potřebné pro roli. Předchozí příklad kódu ukazuje certifikát, který se používá pro konfiguraci azure Připojení.
Místní prostředky
Obsahuje definice pro prostředky místního úložiště. Prostředek místního úložiště je rezervovaný adresář v systému souborů virtuálního počítače, ve kterém je spuštěná instance role.
Dovoz
Obsahuje definice pro importované moduly. Předchozí příklad kódu ukazuje moduly pro Připojení ke vzdálené ploše a Azure Připojení.
Spuštění
Obsahuje úlohy, které jsou spuštěny při spuštění role. Úkoly jsou definovány v souboru .cmd nebo spustitelném souboru.
Soubor ServiceConfiguration.cscfg
Konfigurace nastavení pro cloudovou službu je určena hodnotami v souboru ServiceConfiguration.cscfg. Zadejte počet instancí, které chcete nasadit pro každou roli v tomto souboru. Hodnoty nastavení konfigurace, které jste definovali v definiční souboru služby, se přidávají do konfiguračního souboru služby. Do souboru se přidávají také kryptografický otisky všech certifikátů pro správu přidružených ke cloudové službě. Schéma konfigurace služby Azure (soubor .cscfg) poskytuje pro konfigurační soubor služby formát, který je možné povolit.
Konfigurační soubor služby není součástí aplikace, ale nahraje se do Azure jako samostatný soubor a slouží ke konfiguraci cloudové služby. Můžete nahrát nový konfigurační soubor služby bez opětovného nasazení cloudové služby. Hodnoty konfigurace pro cloudovou službu je možné změnit, když je cloudová služba spuštěná. Následující příklad ukazuje nastavení konfigurace, která lze definovat pro webové role a role pracovního procesu:
<?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>
Pokud chcete lépe porozumět schématu XML, který se tady používá, můžete použít schéma konfigurace služby. Tady je ale rychlé vysvětlení elementů:
Instance
Nakonfiguruje počet spuštěných instancí pro roli. Pokud chcete zabránit tomu, aby vaše cloudová služba mohla být během upgradů nedostupná, doporučuje se nasadit více než jednu instanci webových rolí. Nasazením více než jedné instance postupujete podle pokynů v tématu Azure Compute smlouva SLA (SLA),který zaručuje 99,95% externí připojení pro internetové role, pokud jsou pro službu nasazeny dvě nebo více instancí role.
Nastavení konfigurace
Nakonfiguruje nastavení pro spuštěné instance pro roli. Název elementů <Setting> musí odpovídat definicím nastavení v definiční souboru služby.
Certifikáty
Konfiguruje certifikáty používané službou. Předchozí příklad kódu ukazuje, jak definovat certifikát pro modul RemoteAccess. Hodnota atributu kryptografického otisku musí být nastavená na kryptografický otisk certifikátu, který se má použít.
Poznámka
Kryptografický otisk certifikátu je možné přidat do konfiguračního souboru pomocí textového editoru. Hodnotu můžete také přidat na kartě Certifikáty na stránce Vlastnosti role v Visual Studio.
Definování portů pro instance rolí
Azure umožňuje pouze jeden vstupní bod do webové role. To znamená, že veškerý provoz probíhá prostřednictvím jedné IP adresy. Weby můžete nakonfigurovat tak, aby sdílely port tím, že nakonfigurujete hlavičku hostitele tak, aby směruje požadavek do správného umístění. Aplikace můžete také nakonfigurovat tak, aby naslouchala známým portům na IP adrese.
Následující příklad ukazuje konfiguraci webové role s webem a webovou aplikací. Web je nakonfigurovaný jako výchozí vstupní umístění na portu 80 a webové aplikace jsou nakonfigurované pro příjem požadavků z alternativní hlavičky hostitele s názvem "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>
Změna konfigurace role
Konfiguraci cloudové služby můžete aktualizovat, když běží v Azure, aniž byste ji vezměi do režimu offline. Pokud chcete změnit informace o konfiguraci, můžete buď nahrát nový konfigurační soubor, nebo upravit konfigurační soubor na místě a použít ho pro spuštěnou službu. V konfiguraci služby je možné provést následující změny:
- Změna hodnot nastavení konfigurace
Když se změní nastavení konfigurace, instance role se může rozhodnout tuto změnu použít, když je instance online, nebo ji řádně recyklovat a použít, když je instance offline. - Změna topologie služby instancí rolí
Změny topologie nemají vliv na spuštěné instance, s výjimkou případů, kdy se instance odebrala. Všechny zbývající instance obecně není nutné recyklovat. Můžete se však rozhodnout recyklovat instance rolí v reakci na změnu topologie. - Změna kryptografického otisku certifikátu
Certifikát můžete aktualizovat pouze v případě, že je instance role offline. Pokud je certifikát přidaný, odstraněný nebo změněný, když je instance role online, Azure řádně přenese instanci do režimu offline a aktualizuje certifikát a po dokončení změny ho přenese zpět do režimu online.
Zpracování změn konfigurace s událostmi modulu runtime služby
Knihovna azure runtime zahrnuje obor názvů Microsoft.WindowsAzure.ServiceRuntime, který poskytuje třídy pro interakci s prostředím Azure z role. Třída RoleEnvironment definuje následující události, které jsou vyvolány před změnou konfigurace a po této změně:
- Změna události
K tomu dojde před použitím změny konfigurace na zadanou instanci role, což vám umožní v případě potřeby instance rolí vypnout. - Změna události
Nastane po použití změny konfigurace na zadanou instanci role.
Poznámka
Vzhledem k tomu, že změny certifikátu vždy přecházení instancí role do režimu offline, nevytácely události RoleEnvironment.Changing nebo RoleEnvironment.Changed.
ServicePackage.cspkg
Poznámka
Maximální velikost balíčku, kterou je možné nasadit, je 600 MB.
Pokud chcete nasadit aplikaci jako cloudovou službu v Azure, musíte ji nejprve zabalí do příslušného formátu. Soubor balíčku můžete vytvořit jako alternativu k souboru balíčku pomocí nástroje příkazového řádku CSPack (nainstalovaného se sadou Azure SDK)Visual Studio.
CSPack používá obsah definiční souboru služby a konfiguračního souboru služby k definování obsahu balíčku. CSPack vygeneruje soubor balíčku aplikace (.cspkg), který můžete nahrát do Azure pomocí Azure Portal. Ve výchozím nastavení má balíček název , ale pomocí možnosti CSPack můžete zadat [ServiceDefinitionFileName].cspkg /out jiný název.
CSPack se nachází na adrese .
C:\Program Files\Microsoft SDKs\Azure\.NET SDK\[sdk-version]\bin\
Poznámka
CSPack.exe (ve Windows) je k dispozici spuštěním zástupce příkazového Microsoft Azure, který je nainstalovaný se sadou SDK.
Spusťte program CSPack.exe a prohlédněte si dokumentaci ke všem možným přepínačům a příkazům.
Tip
Spusťte cloudovou službu místně v Microsoft Azure Compute Emulator a použijte možnost /copyonly. Tato možnost zkopíruje binární soubory aplikace do rozložení adresáře, ze kterého je možné je spustit v emulátoru výpočetních prostředků.
Příklad příkazu pro zabalení cloudové služby
Následující příklad vytvoří balíček aplikace, který obsahuje informace pro webovou roli. Příkaz určuje definiční soubor služby, který se má použít, adresář, kde lze najít binární soubory, a název souboru balíčku.
cspack [DirectoryName]\[ServiceDefinition]
/role:[RoleName];[RoleBinariesDirectory]
/sites:[RoleName];[VirtualPath];[PhysicalPath]
/out:[OutputFileName]
Pokud aplikace obsahuje webovou roli i roli pracovního procesu, použije se následující příkaz:
cspack [DirectoryName]\[ServiceDefinition]
/out:[OutputFileName]
/role:[RoleName];[RoleBinariesDirectory]
/sites:[RoleName];[VirtualPath];[PhysicalPath]
/role:[RoleName];[RoleBinariesDirectory];[RoleAssemblyName]
Kde jsou proměnné definovány takto:
| Proměnná | Hodnota |
|---|---|
| [Název_adresáře] | Podadresář v kořenovém adresáři projektu, který obsahuje soubor .csdef projektu Azure. |
| [Definice služby] | Název definiční souboru služby. Ve výchozím nastavení má tento soubor název ServiceDefinition.csdef. |
| [Název výstupního souboru] | Název vygenerovaný soubor balíčku. Obvykle se nastaví na název aplikace. Pokud není zadaný žádný název souboru, vytvoří se balíček aplikace jako [ ApplicationName ] .cspkg. |
| [RoleName (Název role)] | Název role, jak je definován v definiční souboru služby. |
| [RoleBinariesDirectory] | Umístění binárních souborů pro roli. |
| [Virtualpath] | Fyzické adresáře pro každou virtuální cestu definovanou v části Lokality definice služby. |
| [PhysicalPath] | Fyzické adresáře obsahu pro každou virtuální cestu definovanou v uzlu lokality definice služby. |
| [RoleAssemblyName] | Název binárního souboru pro roli. |
Další kroky
- Zkontrolujte požadavky nasazení pro Cloud Services (s rozšířenou podporou).
- Nasaďte cloudovou službu (s rozšířenou podporou) pomocí Azure Portal, PowerShellu, šablony nebo Visual Studio.
- Nejčastější dotazy k Cloud Services (s rozšířenou podporou).