Mi az Azure Cloud Service-modell, és hogyan csomagolható be?

A felhőszolgáltatás három összetevőből, a szolgáltatásdefinícióból (.csdef), a szolgáltatáskonfigurációbó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 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 a definíciót nem módosíthatja.

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) lehetővé teszi a szolgáltatásdefiníciós fájlok formátumát. Az alábbi példa a webes és 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="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>

Az itt használt XML-séma jobb megértéséhez tekintse meg a szolgáltatásdefiníciós sémát, azonban az alábbiakban röviden bemutatunk néhány elemet:

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

Konfiguráció Gépház
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, az Azure Csatlakozás konfigurálásához használt tanúsítványt mutat be.

LocalResources
A helyi tárolási erőforrások definícióit tartalmazza. A helyi tároló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 Csatlakozás ion és az Azure Csatlakozás moduljai láthatók.

Startup
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 a fájl egyes szerepköreihez. A szolgáltatásdefiníciós fájlban definiált 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) a szolgáltatáskonfigurációs fájlok 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 futtatása közben. Az alábbi példa a webes é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 , de az alábbiakban röviden bemutatjuk az elemeket:

Példányok
Konfigurálja a szerepkör futó példányainak 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 biztosít az internetkapcsolattal rendelkező szerepkörök számára, ha egy szolgáltatáshoz két vagy több szerepkörpéldány van üzembe helyezve.

Konfiguráció Gépház
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álhatja a RemoteAccess modul tanúsítványát. 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 adható hozzá a konfigurációs fájlhoz. Az érték a Visual Studióban a szerepkör Tulajdonságok lapjának Tanúsítványok lapján is hozzáadható.

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 minden forgalom egy IP-címen keresztül történik. A webhelyeket úgy konfigurálhatja, hogy portot osszanak meg a gazdagép fejlécének konfigurálásával, hogy a kérést a megfelelő helyre irányíthassa. Az alkalmazásokat úgy is konfigurálhatja, hogy az IP-címen jól ismert portokat hallgassanak.

Az alábbi minta egy webszerepkör webhelypel és webalkalmazással való konfigurációját mutatja be. A webhely 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 másik gazdagépfejlécről, amelyet "mail.mysite.cloudapp.net" néven hívnak.

<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 az Azure-ban való futtatás közben is frissítheti anélkül, hogy offline állapotba szeretné helyezni a szolgáltatást. 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ója a következő módosításokat hajthatja végre:

  • 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 kecsesen ú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 változá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; azonban a topológiaváltozásra válaszul újra felhasználhatja a szerepkörpéldányokat.
  • A tanúsítvány ujjlenyomatának módosítása
    A tanúsítvány csak akkor frissíthető, ha egy szerepkörpéldány offline állapotban van. Ha egy tanúsítványt hozzáadnak, törölnek vagy módosítanak egy szerepkörpéldány online állapotában, az Azure kecsesen 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 következő eseményeket határozza meg, amelyek a konfiguráció módosítása előtt és után következnek be:

  • Esemény módosítása
    Ez akkor fordul elő, ha a konfigurációs módosítást egy szerepkör egy adott példányára alkalmazza a rendszer, így szükség esetén lehetősége lesz a szerepkörpéldányok levételére.
  • Módosult esemény
    A konfigurációmódosítás egy szerepkör egy 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 viszik egy szerepkör példányait, nem emelik ki a RoleEnvironment.Change vagy RoleEnvironment.Change eseményeket.

ServicePackage.cspkg

Megjegyzés:

Az üzembe helyezhető csomag maximális mérete 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 CSPack parancssori eszközzel (az Azure SDK-val telepítve) létrehozhatja a csomagfájlt a Visual Studio alternatívájaként.

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 az Azure Portal használatával tölthet fel az Azure-ba. Alapértelmezés szerint a csomag neve el van nevezve[ServiceDefinitionFileName].cspkg, de a CSPack lehetőséggel /outmegadhat egy másik nevet.

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

Megjegyzés:

A 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, 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 webes szerepkör adatait tartalmazó alkalmazáscsomagot hoz létre. 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] Az Azure-projekt .csdef fájlját tartalmazó gyökérprojekt könyvtár alatti alkönyvtár.
[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 á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 definiált szerepkör neve.
[RoleBinariesDirectory] A szerepkör bináris fájljainak helye.
[VirtualPath] A szolgáltatásdefiníció Helyek szakaszában definiált egyes virtuális útvonalak fizikai könyvtárai.
[PhysicalPath] A szolgáltatásdefiníció helycsomópontjában definiált összes virtuális útvonal tartalmának fizikai könyvtárai.
[RoleAssemblyName] A szerepkör bináris fájljának neve.

Következő lépések