Mi a cloud service (klasszikus) modell, és hogyan csomagolhatom be?

Fontos

Cloud Services (klasszikus) mostantól elavult az új ügyfelek számára, és 2024. augusztus 31-én minden ügyfél számára megszűnik. Az új üzemelő példányoknak az új Azure Resource Manager-alapú Azure Cloud Services (kiterjesztett támogatás) üzembehelyezési modellt kell használniuk.

A felhőszolgáltatás három összetevőből, a szolgáltatásdefinícióból (.csdef), a szolgáltatáskonfigurálásból (.cscfg) és egy szolgáltatáscsomagból (.cspkg) jön létre. Mind a ServiceDefinition.csdef , mind a ServiceConfig.cscfg fájlok XML-alapúak, és ismertetik a felhőszolgáltatás struktúráját és konfigurálásának módját; együttesen nevezik a modellt. A ServicePackage.cspkg egy zip-fájl, amely a ServiceDefinition.csdef fájlból jön létre, és többek között tartalmazza az összes szükséges bináris alapú függőséget. Az Azure a ServicePackage.cspkg és a ServiceConfig.cscfg szolgáltatásból is létrehoz egy felhőszolgáltatást.

Miután a felhőszolgáltatás fut az Azure-ban, újrakonfigurálhatja a ServiceConfig.cscfg fájlon keresztül, de nem módosíthatja a definíciót.

Miről szeretne többet tudni?

ServiceDefinition.csdef

A ServiceDefinition.csdef fájl megadja azOkat a beállításokat, amelyeket az Azure használ a felhőszolgáltatás konfigurálásához. Az Azure Szolgáltatásdefiníciós séma (.csdef fájl) egy szolgáltatásdefiníciós fájl engedélyezett formátumát biztosítja. Az alábbi példa a webes és a feldolgozói szerepkörökhöz definiálható beállításokat mutatja be:

<?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>

Az itt használt XML-séma jobb megértéséhez tekintse meg a szolgáltatásdefiníciós sémát , de az alábbiakban néhány elem rövid leírását találja:

Webhelyek
Az IIS7-ben üzemeltetett webhelyek vagy webalkalmazások definícióit tartalmazza.

InputEndpoints
A felhőszolgáltatással való kapcsolatfelvételhez használt végpontok definícióit tartalmazza.

InternalEndpoints
A szerepkörpéldányok által az egymással való kommunikációhoz használt végpontok definícióit tartalmazza.

ConfigurationSettings
Egy adott szerepkör funkcióinak beállításdefinícióit tartalmazza.

Tanúsítványok
A szerepkörhöz szükséges tanúsítványok definícióit tartalmazza. Az előző példakód egy tanúsítványt mutat be, amelyet az Azure Connect konfigurálásához használnak.

LocalResources
A helyi tárolási erőforrások definícióit tartalmazza. A helyi tárolási erőforrás a virtuális gép fájlrendszerének fenntartott könyvtára, amelyben egy szerepkörpéldány fut.

Behozatal
Az importált modulok definícióit tartalmazza. Az előző kódpéldában a Távoli asztali kapcsolat és az Azure Connect moduljai láthatók.

Indítás
A szerepkör indításakor futtatott feladatokat tartalmazza. A feladatok .cmd vagy végrehajtható fájlban vannak definiálva.

ServiceConfiguration.cscfg

A felhőszolgáltatás beállításainak konfigurációját a ServiceConfiguration.cscfg fájl értékei határozzák meg. Itt adhatja meg, hogy hány példányt szeretne üzembe helyezni az egyes szerepkörökhöz ebben a fájlban. A szolgáltatásdefiníciós fájlban megadott konfigurációs beállítások értékei hozzá lesznek adva a szolgáltatáskonfigurációs fájlhoz. A felhőszolgáltatáshoz társított felügyeleti tanúsítványok ujjlenyomatai is hozzá lesznek adva a fájlhoz. Az Azure Szolgáltatáskonfigurációs séma (.cscfg fájl) egy szolgáltatáskonfigurációs fájl engedélyezett formátumát biztosítja.

A szolgáltatáskonfigurációs fájl nem az alkalmazással van csomagolva, hanem külön fájlként van feltöltve az Azure-ba, és a felhőszolgáltatás konfigurálására szolgál. Feltölthet egy új szolgáltatáskonfigurációs fájlt a felhőszolgáltatás újbóli üzembe helyezése nélkül. A felhőszolgáltatás konfigurációs értékei módosíthatók a felhőszolgáltatás futása közben. Az alábbi példa a web- és feldolgozói szerepkörökhöz definiálható konfigurációs beállításokat mutatja be:

<?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>

Az itt használt XML-séma jobb megértéséhez tekintse meg a szolgáltatáskonfigurációs sémát , azonban az alábbiakban röviden bemutatjuk az elemeket:

példányszám
Konfigurálja a szerepkörhöz tartozó futó példányok számát. Annak érdekében, hogy a felhőszolgáltatás esetleg elérhetetlenné váljon a frissítések során, javasoljuk, hogy a webes szerepkörök egynél több példányát telepítse. Egynél több példány üzembe helyezésével betartja az Azure Compute Service Level Agreement (SLA) irányelveit, amely 99,95%-os külső kapcsolatot garantál az internetkapcsolattal rendelkező szerepkörökhöz, ha két vagy több szerepkörpéldányt helyez üzembe egy szolgáltatáshoz.

ConfigurationSettings
Konfigurálja a szerepkör futó példányainak beállításait. Az elemek nevének meg kell egyeznie <Setting> a szolgáltatásdefiníciós fájl beállításdefinícióival.

Tanúsítványok
Konfigurálja a szolgáltatás által használt tanúsítványokat. Az előző példakód bemutatja, hogyan definiálható a RemoteAccess modul tanúsítványa. Az ujjlenyomat attribútum értékét a használni kívánt tanúsítvány ujjlenyomatára kell állítani.

Megjegyzés

A tanúsítvány ujjlenyomata szövegszerkesztővel vehető fel a konfigurációs fájlba. Az értéket a Visual Studióban a szerepkör Tulajdonságok lapjának Tanúsítványok lapján is hozzáadhatja.

Portok definiálása szerepkörpéldányokhoz

Az Azure csak egy belépési pontot engedélyez egy webes szerepkörhöz. Ez azt jelenti, hogy az összes forgalom egy IP-címen keresztül történik. A webhelyeket úgy konfigurálhatja, hogy megossza a portokat a gazdagép fejlécének konfigurálásával, hogy a kérést a megfelelő helyre irányítsa. Az alkalmazásokat úgy is konfigurálhatja, hogy az IP-címen jól ismert portokat hallgassanak.

Az alábbi minta egy webszerepkonfigurációt mutat be egy webhelypel és webalkalmazással. A webhely az alapértelmezett belépési helyként van konfigurálva a 80-as porton, és a webalkalmazások úgy vannak konfigurálva, hogy kéréseket fogadjanak egy "mail.mysite.cloudapp.net" nevű másik gazdagépfejlécről.

<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>

Szerepkör konfigurációjának módosítása

A felhőszolgáltatás konfigurációját frissítheti az Azure-ban való futtatás közben anélkül, hogy a szolgáltatást offline állapotba helyezheti. A konfigurációs adatok módosításához feltölthet egy új konfigurációs fájlt, vagy szerkesztheti a konfigurációs fájlt a helyén, és alkalmazhatja azt a futó szolgáltatásra. A szolgáltatás konfigurációjában a következő módosítások végezhetők el:

  • A konfigurációs beállítások értékeinek módosítása
    Amikor egy konfigurációs beállítás megváltozik, a szerepkörpéldány dönthet úgy, hogy alkalmazza a módosítást, amíg a példány online állapotban van, vagy a példányt zökkenőmentesen újrahasznosítja, és alkalmazza a módosítást, amíg a példány offline állapotban van.
  • Szerepkörpéldányok szolgáltatástopológiájának módosítása
    A topológia módosításai nem befolyásolják a futó példányokat, kivéve, ha egy példányt eltávolítanak. A fennmaradó példányokat általában nem kell újrafeldolgozni; A szerepkörpéldányok azonban a topológia változásaira reagálva újrafeldolgozhatók.
  • A tanúsítvány ujjlenyomatának módosítása
    Csak akkor frissíthet tanúsítványt, ha egy szerepkörpéldány offline állapotban van. Ha egy tanúsítványt hozzáadnak, törölnek vagy módosítanak, miközben egy szerepkörpéldány online állapotban van, az Azure elegánsan offline állapotba helyezi a példányt, hogy frissítse a tanúsítványt, és a módosítás befejezése után újra online állapotba hozza.

Konfigurációváltozások kezelése a szolgáltatás futtatókörnyezeti eseményeivel

Az Azure Runtime Library tartalmazza a Microsoft.WindowsAzure.ServiceRuntime névteret, amely osztályokat biztosít az Azure-környezet szerepkörből való használatához. A RoleEnvironment osztály a konfiguráció módosítása előtt és után a következő eseményeket határozza meg:

  • Esemény módosítása
    Ez még azelőtt történik, hogy a konfigurációmódosítás egy szerepkör egy adott példányára alkalmazva lehetővé teszi a szerepkörpéldányok szükség szerinti levételét.
  • Módosult esemény
    A konfigurációmódosítás egy szerepkör adott példányára való alkalmazása után következik be.

Megjegyzés

Mivel a tanúsítványmódosítások mindig offline állapotba helyezik egy szerepkör példányait, nem emelik ki a RoleEnvironment.Change vagy RoleEnvironment.Change eseményeket.

ServicePackage.cspkg

Megjegyzés

A maximálisan üzembe helyezhető csomagméret 600 MB

Ha egy alkalmazást felhőszolgáltatásként szeretne üzembe helyezni az Azure-ban, először a megfelelő formátumban kell csomagolnia az alkalmazást. A csomagfájlt a Visual Studio alternatívájaként a CSPack parancssori eszközzel (az Azure SDK-val együtt telepítve) hozhatja létre.

A CSPack a szolgáltatásdefiníciós fájl és a szolgáltatáskonfigurációs fájl tartalmát használja a csomag tartalmának meghatározásához. A CSPack létrehoz egy alkalmazáscsomagfájlt (.cspkg), amelyet a Azure Portal használatával tölthet fel az Azure-ba. Alapértelmezés szerint a csomag neve [ServiceDefinitionFileName].cspkg, de a CSPack lehetőséggel /out megadhat egy másik nevet.

A CSPack helye:
C:\Program Files\Microsoft SDKs\Azure\.NET SDK\[sdk-version]\bin\

Megjegyzés

CSPack.exe (Windows rendszeren) az SDK-val telepített Microsoft Azure parancssori parancsikon futtatásával érhető el.

Futtassa a CSPack.exe programot önmagában az összes lehetséges kapcsoló és parancs dokumentációjának megtekintéséhez.

Tipp

Futtassa a felhőszolgáltatást helyileg a Microsoft Azure Compute Emulatorban, és használja a /copyonly lehetőséget. Ez a beállítás az alkalmazás bináris fájljait egy könyvtárelrendezésbe másolja, amelyből futtathatók a számítási emulátorban.

Példaparancs egy felhőszolgáltatás csomagolásához

Az alábbi példa egy alkalmazáscsomagot hoz létre, amely egy webes szerepkör adatait tartalmazza. A parancs megadja a használni kívánt szolgáltatásdefiníciós fájlt, a bináris fájlokat tartalmazó könyvtárat és a csomagfájl nevét.

cspack [DirectoryName]\[ServiceDefinition]
       /role:[RoleName];[RoleBinariesDirectory]
       /sites:[RoleName];[VirtualPath];[PhysicalPath]
       /out:[OutputFileName]

Ha az alkalmazás webes és feldolgozói szerepkört is tartalmaz, a rendszer a következő parancsot használja:

cspack [DirectoryName]\[ServiceDefinition]
       /out:[OutputFileName]
       /role:[RoleName];[RoleBinariesDirectory]
       /sites:[RoleName];[VirtualPath];[PhysicalPath]
       /role:[RoleName];[RoleBinariesDirectory];[RoleAssemblyName]

Ahol a változók a következőképpen vannak definiálva:

Változó Érték
[DirectoryName] A gyökérprojekt könyvtárában található alkönyvtár, amely az Azure-projekt .csdef fájlját tartalmazza.
[ServiceDefinition] A szolgáltatásdefiníciós fájl neve. Alapértelmezés szerint a fájl neve ServiceDefinition.csdef.
[OutputFileName] A létrehozott csomagfájl neve. Ez általában az alkalmazás nevére van beállítva. Ha nincs megadva fájlnév, az alkalmazáscsomag [ApplicationName].cspkg néven jön létre.
[RoleName] A szolgáltatásdefiníciós fájlban meghatározott szerepkör neve.
[RoleBinariesDirectory] A szerepkör bináris fájljainak helye.
[VirtualPath] A szolgáltatásdefiníció Helyek szakaszában meghatározott virtuális elérési utak fizikai könyvtárai.
[PhysicalPath] A szolgáltatásdefiníció helycsomópontjában meghatározott virtuális elérési utak tartalmának fizikai könyvtárai.
[RoleAssemblyName] A szerepkör bináris fájljának neve.

Következő lépések

Létrehozok egy felhőszolgáltatás-csomagot, és szeretném...

A Visual Studiót használom, és szeretném...