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ációját. Ezeket a fájlokat együttesen modellnek nevezzük. 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?
- Szeretnék többet megtudni a ServiceDefinition.csdef és a ServiceConfig.cscfg fájlokról.
- Már tudom, hogy, adjon nekem néhány példát , hogy mit tudok konfigurálni.
- Létre szeretném hozni a ServicePackage.cspkg-t.
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 megismeréséhez tekintse meg a szolgáltatásdefiníciós sémát, de az alábbiakban néhány elem rövid ismertetését találja:
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.
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, az Azure Connect 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 kapcsolat és az Azure Connect moduljai láthatók.
Startup
A szerepkör indításakor futtatott feladatokat tartalmazza. A feladatok egy .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 nincs csomagolva az alkalmazással. Külön fájlként tölt fel 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ö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á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.
Feljegyzé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.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>
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 szerepkörpéldány online állapotában tanúsítványt adnak hozzá, törölnek vagy módosítanak, az Azure kecsesen offline állapotba helyezi a példányt a tanúsítvány frissítéséhez. Az Azure a módosítás befejeződé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.
Feljegyzé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
Feljegyzé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 /out
megadhat egy másik nevet.
A CSPack a
C:\Program Files\Microsoft SDKs\Azure\.NET SDK\[sdk-version]\bin\
Feljegyzés
CSPack.exe (Windows rendszeren) az SDK-val telepített Microsoft Azure parancssori parancsikon futtatásával érhető el.
Futtassa a CSPack.exe programot, és tekintse meg az összes lehetséges kapcsoló és parancs dokumentációját.
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 a változó á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
- Tekintse át a Cloud Services üzembehelyezési előfeltételeit (kiterjesztett támogatás).
- Felhőszolgáltatás (kiterjesztett támogatás) üzembe helyezése az Azure Portal, a PowerShell, a Sablon vagy a Visual Studio használatával.
- Tekintse át a Cloud Servicesre (kiterjesztett támogatás) vonatkozó gyakori kérdéseket .