Co je model cloudové služby (Classic) a jak ho zabalím?

Důležité

Cloud Services (classic) je teď pro nové zákazníky zastaralé a 31. srpna 2024 bude vyřazeno pro všechny zákazníky. Nová nasazení by měla používat nový model nasazení založený na Azure Resource Manager Azure Cloud Services (rozšířená podpora).

Cloudová služba se vytvoří ze tří komponent: definice služby (.csdef), konfigurace služby (.cscfg) a balíčku služby (.cspkg). Soubory ServiceDefinition.csdef a ServiceConfig.cscfg jsou založené na jazyce XML a popisují strukturu cloudové služby a způsob její konfigurace. souhrnně označovaný jako model. ServicePackage.cspkg je soubor zip, který je generován z ServiceDefinition.csdef a mimo jiné obsahuje všechny požadované binární závislosti. Azure vytvoří cloudovou službu z souboru ServicePackage.cspkg i ServiceConfig.cscfg.

Jakmile je cloudová služba spuštěná v Azure, můžete ji znovu nakonfigurovat prostřednictvím souboru ServiceConfig.cscfg , ale nemůžete změnit definici.

O čem byste se chtěli dozvědět víc?

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 povolený formát pro soubor definice služby. Následující příklad ukazuje nastavení, která je možné definovat pro role Web a Pracovní proces:

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="MyServiceName" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
  <WebRole name="WebRole1" vmsize="Medium">
    <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 schématu XML použitému tady, můžete se podívat na schéma definice služby . Tady je ale rychlé vysvětlení některých prvků:

Lokality
Obsahuje definice webů nebo webových aplikací hostovaných ve službě IIS7.

Vstupní koncové body
Obsahuje definice koncových bodů, které se používají ke kontaktování cloudové služby.

Interní koncové body
Obsahuje definice koncových bodů, které instance rolí používají ke vzájemné komunikaci.

ConfigurationSettings
Obsahuje definice nastavení pro funkce konkrétní role.

Certifikáty
Obsahuje definice pro certifikáty, které jsou potřeba pro roli. Předchozí příklad kódu ukazuje certifikát, který se používá ke konfiguraci Služby Azure Connect.

Místní zdroje
Obsahuje definice prostředků místního úložiště. Prostředek místního úložiště je vyhrazený adresář v systému souborů virtuálního počítače, na kterém běží instance role.

Dovoz
Obsahuje definice importovaných modulů. Předchozí příklad kódu ukazuje moduly pro Připojení ke vzdálené ploše a Azure Connect.

Spuštění
Obsahuje úlohy, které se spouštějí při spuštění role. Úlohy jsou definovány v souboru .cmd nebo spustitelném souboru.

ServiceConfiguration.cscfg

Konfigurace nastavení cloudové služby je určena hodnotami v souboru ServiceConfiguration.cscfg . Určíte počet instancí, které chcete nasadit pro každou roli v tomto souboru. Hodnoty nastavení konfigurace, které jste definovali v souboru definice služby, se přidají do konfiguračního souboru služby. Do souboru se přidají také kryptografické otisky všech certifikátů pro správu, které jsou přidružené ke cloudové službě. Schéma konfigurace služby Azure (soubor .cscfg) poskytuje povolený formát konfiguračního souboru služby.

Konfigurační soubor služby není zabalený s aplikací, 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é je možné definovat pro role Web a Pracovní proces:

<?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 použitému tady, můžete se podívat na schéma konfigurace služby . Tady je ale stručné vysvětlení těchto prvků:

Instance
Konfiguruje počet spuštěných instancí pro roli. Pokud chcete zabránit potenciální nedostupnosti cloudové služby během upgradů, doporučujeme nasadit více než jednu instanci webových rolí. Nasazením více než jedné instance dodržujete pokyny ve smlouvě o úrovni služeb Azure Compute (SLA), která zaručuje 99,95 % externího připojení pro internetové role, když jsou pro službu nasazeny dvě nebo více instancí rolí.

ConfigurationSettings
Nakonfiguruje nastavení spuštěných instancí pro roli. Název elementů <Setting> se musí shodovat s definicemi nastavení v definičním 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 nastavena na kryptografický otisk certifikátu, který se má použít.

Poznámka

Kryptografický otisk certifikátu lze přidat do konfiguračního souboru pomocí textového editoru. Nebo můžete hodnotu přidat na kartě Certifikáty na stránce Vlastnosti role v sadě Visual Studio.

Definování portů pro instance rolí

Azure umožňuje k webové roli jenom jeden vstupní bod. To znamená, že veškerý provoz probíhá přes jednu IP adresu. Weby můžete nakonfigurovat tak, aby sdílely port, a to tak, že nakonfigurujete hlavičku hostitele tak, aby směroval požadavek do správného umístění. Můžete také nakonfigurovat aplikace tak, aby naslouchaly dobře známým portům na IP adrese.

Následující ukázka ukazuje konfiguraci webové role s webem a webovou aplikací. Web je nakonfigurován jako výchozí umístění položky na portu 80 a webové aplikace jsou nakonfigurovány tak, aby přijímaly požadavky z alternativní hlavičky hostitele, která se nazývá "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ž je spuštěná v Azure, aniž byste ji museli offline. Pokud chcete změnit informace o konfiguraci, můžete buď nahrát nový konfigurační soubor, nebo ho upravit a použít ho ve spuštěné službě. 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 použít změnu, když je instance online, nebo ji řádně recyklovat a použít změnu, 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 odebírá. Všechny zbývající instance obecně nemusí být recyklovány; V reakci na změnu topologie však můžete zvolit recyklaci instancí rolí.
  • Změna kryptografického otisku certifikátu
    Certifikát můžete aktualizovat jenom 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 ji řádně přenese do režimu offline, aby aktualizovala certifikát a po dokončení změny ho znovu převela do režimu online.

Zpracování změn konfigurace pomocí událostí modulu runtime služby

Knihovna Azure Runtime Library 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 a po změně konfigurace:

  • Změna události
    K tomu dochází před tím, než se změna konfigurace použije u zadané instance role a v případě potřeby budete mít možnost instance rolí vyřídit.
  • Změněná událost
    Nastane po použití změny konfigurace na zadanou instanci role.

Poznámka

Vzhledem k tomu, že změny certifikátu vždy převezmou instance role do offline režimu, nevyvolají události RoleEnvironment.Changing nebo RoleEnvironment.Changed.

ServicePackage.cspkg

Poznámka

Maximální velikost balíčku, který je možné nasadit, je 600 MB.

Pokud chcete nasadit aplikaci jako cloudovou službu v Azure, musíte ji nejprve zabalit v příslušném formátu. K vytvoření souboru balíčku jako alternativy k sadě Visual Studio můžete použít nástroj příkazového řádku CSPack (nainstalovaný se sadou Azure SDK).

CSPack používá obsah definičního 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 [ServiceDefinitionFileName].cspkg, ale pomocí možnosti CSPack můžete zadat jiný název/out.

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 řádku Microsoft Azure , který je nainstalovaný se sadou SDK.

Spusťte CSPack.exe program sám a podívejte se do dokumentace o všech možných přepínačích a příkazech.

Tip

Spusťte cloudovou službu místně v emulátoru Microsoft Azure Compute a použijte možnost /copyonly . Tato možnost zkopíruje binární soubory aplikace do rozložení adresáře, ze kterého se dají 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ář, ve kterém 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.
[ServiceDefinition] Název definičního souboru služby. Ve výchozím nastavení má tento soubor název ServiceDefinition.csdef.
[OutputFileName] Název vygenerovaného souboru balíčku. Obvykle se nastaví na název aplikace. Pokud není zadán žádný název souboru, vytvoří se balíček aplikace jako [ApplicationName].cspkg.
[RoleName] Název role, jak je definován v definičním 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

Vytvářím balíček cloudové služby a chci...

Používám Visual Studio a chci...