Bulut Hizmeti (klasik) modeli nedir ve nasıl paket yapabilirim?
Önemli
Cloud Services (klasik) artık yeni müşteriler için kullanım dışıdır ve tüm müşteriler Için 31 Ağustos 2024 tarihinde kullanımdan kaldırılacaktır. Yeni dağıtımlar, yeni Azure Resource Manager tabanlı dağıtım modeli Azure Cloud Services (genişletilmiş destek) kullanmalıdır.
Bir bulut hizmeti üç bileşenden oluşturulur: hizmet tanımı (.csdef), hizmet yapılandırması (.cscfg) ve bir hizmet paketi (.cspkg). Hem ServiceDefinition.csdef hem de ServiceConfig.cscfg dosyaları XML tabanlıdır ve bulut hizmetinin yapısını ve nasıl yapılandırıldıklarını açıklar; topluca model olarak adlandırılan. ServicePackage.cspkg, ServiceDefinition.csdef dosyasından oluşturulan ve diğer şeylerin dışında gerekli olan tüm ikili tabanlı bağımlılıkları içeren bir zip dosyasıdır. Azure hem ServicePackage.cspkg hem de ServiceConfig.cscfg'den bir bulut hizmeti oluşturur.
Bulut hizmeti Azure'da çalıştırılana kadar ServiceConfig.cscfg dosyası aracılığıyla yeniden yapılandırabilirsiniz ancak tanımı değiştirilemez.
Ne hakkında daha fazla bilgi için?
- ServiceDefinition.csdef ve ServiceConfig.cscfg dosyaları hakkında daha fazla bilgi almak istiyorum.
- Bu konuda zaten bilgim var, neleri yapılandır ihtiyacım olduğu konusunda bazı örnekler verilmiştir.
- ServicePackage.cspkg oluşturmak istiyorum.
- I am using Visual Studio and I want to...
ServiceDefinition.csdef
ServiceDefinition.csdef dosyası, Bir bulut hizmetini yapılandırmak için Azure tarafından kullanılan ayarları belirtir. Azure Hizmet Tanımı Şeması (.csdef Dosyası), hizmet tanımı dosyası için izin verilebilir biçimi sağlar. Aşağıdaki örnekte, Web ve Çalışan rolleri için tanımlanabilirsiniz ayarları gösterir:
<?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>
Burada kullanılan XML şemasını daha iyi anlamak için Hizmet Tanımı Şemasına bakabilirsiniz, ancak bazı öğelerin hızlı bir açıklaması şu şekildedir:
Siteler
IIS7'de barındırılan web sitelerinin veya web uygulamalarının tanımlarını içerir.
InputEndpoints
Bulut hizmetiyle iletişim kurmak için kullanılan uç noktaların tanımlarını içerir.
InternalEndpoints
Rol örnekleri tarafından birbirleriyle iletişim kurmak için kullanılan uç noktaların tanımlarını içerir.
Configurationsettings
Belirli bir rolün özellikleri için ayar tanımlarını içerir.
Sertifikalar
Bir rol için gereken sertifikaların tanımlarını içerir. Önceki kod örneği, Azure sanal ağ yapılandırması için kullanılan bir sertifikayı Bağlan.
LocalResources
Yerel depolama kaynaklarının tanımlarını içerir. Yerel depolama kaynağı, bir rolün örneğinin çalıştır olduğu sanal makinenin dosya sistemi üzerinde ayrılmış bir dizindir.
Ithalat
İçe aktarılan modüllerin tanımlarını içerir. Önceki kod örneğinde, Uzak Masaüstü Bağlantısı ve Azure Bağlan.
Başlangıç
Rol başladığında çalıştıracak görevleri içerir. Görevler bir .cmd veya yürütülebilir dosyada tanımlanır.
ServiceConfiguration.cscfg
Bulut hizmetinizin ayarlarının yapılandırması ServiceConfiguration.cscfg dosyasındaki değerler tarafından belirlenir. Bu dosyada her rol için dağıtmak istediğiniz örnek sayısını belirtirsiniz. Hizmet tanımı dosyasında tanımlandığı yapılandırma ayarlarının değerleri hizmet yapılandırma dosyasına eklenir. Bulut hizmetiyle ilişkili tüm yönetim sertifikalarının parmak izleri de dosyaya eklenir. Azure Hizmet Yapılandırma Şeması (.cscfg Dosyası), hizmet yapılandırma dosyası için izin verilebilir biçimi sağlar.
Hizmet yapılandırma dosyası uygulamayla birlikte paketli değildir, ancak ayrı bir dosya olarak Azure'a yüklenen ve bulut hizmetini yapılandırmak için kullanılır. Bulut hizmetinizi yeniden vermeden yeni bir hizmet yapılandırma dosyasını karşıya yükleyebilirsiniz. Bulut hizmeti çalışırken bulut hizmetinin yapılandırma değerleri değiştirilebilir. Aşağıdaki örnek, Web ve Çalışan rolleri için tanımlan bir yapılandırma ayarlarını gösterir:
<?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>
Burada kullanılan XML şemasını daha iyi anlamak için Hizmet Yapılandırma Şemasına bakabilirsiniz, ancak öğelerin hızlı bir açıklaması şu şekildedir:
Örnekler
Rol için çalışan örnek sayısını yapılandıran. Yükseltmeler sırasında bulut hizmetinizin kullanılamaz duruma gelebilecek bir durumla karşı karşıya olma ihtimalini önlemek için web'e yönelik rollerinin birden fazla örneğini dağıtmanız önerilir. Birden fazla örnek dağıtarak, bir hizmet için iki veya daha fazla rol örneği dağıtıldığında İnternet'e yönelik roller için %99,95 dış bağlantı garantisi olan Azure İşlem Hizmet Düzeyi Sözleşmesi (SLA)yönergelerine bağlı kalıyorsanız.
Configurationsettings
Bir rol için çalışan örneklerin ayarlarını yapılandırıyor. Öğelerin <Setting> adı, hizmet tanımı dosyasındaki ayar tanımları ile eşleşmeli.
Sertifikalar
Hizmet tarafından kullanılan sertifikaları yapılandırıyor. Önceki kod örneğinde, RemoteAccess modülü için sertifikanın nasıl tanımladığınız açıktır. Parmak izi özniteliğinin değeri, kullanmak üzere sertifikanın parmak izi olarak ayarlanamaz.
Not
Sertifikanın parmak izi, bir metin düzenleyicisi kullanılarak yapılandırma dosyasına eklenebilir. Veya değeri, rolün Özellikler sayfasının Sertifikalar sekmesine Visual Studio.
Rol örnekleri için bağlantı noktalarını tanımlama
Azure, bir web rolüne yalnızca bir giriş noktasına izin verir. Tüm trafiğin tek bir IP adresi üzerinden oluştuğu anlamına gelir. Ana bilgisayar üst bilgilerini isteği doğru konuma yönlendirecek şekilde yapılandırarak web sitelerinizi bir bağlantı noktasını paylaştırarak yapılandırabilirsiniz. Uygulamalarınızı, IP adresi üzerinde iyi bilinen bağlantı noktalarını dinleyecek şekilde de yapılandırabilirsiniz.
Aşağıdaki örnek, bir web sitesi ve web uygulaması ile bir web rolünün yapılandırmasını gösterir. Web sitesi, bağlantı noktası 80'de varsayılan giriş konumu olarak yapılandırılır ve web uygulamaları "mail.mysite.cloudapp.net" adlı alternatif bir ana bilgisayar üst bilgilerinden istek alacak şekilde yapılandırılır.
<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>
Rolün yapılandırmasını değiştirme
Bulut hizmetinizin yapılandırmasını Azure'da çalışırken, hizmeti çevrimdışı duruma getirmeden güncelleştirebilirsiniz. Yapılandırma bilgilerini değiştirmek için yeni bir yapılandırma dosyasını karşıya yükleyebilir veya yapılandırma dosyasını yerinde düzenleyemez ve çalışan hizmetinize uygulayabilirsiniz. Bir hizmetin yapılandırmasında aşağıdaki değişiklikler yapabilirsiniz:
- Yapılandırma ayarlarının değerlerini değiştirme
Bir yapılandırma ayarı değişirse rol örneği, örnek çevrimiçiyken değişikliği uygulamayı veya örneği uygun bir şekilde geri dönüştürerek örnek çevrimdışıyken bu değişikliği uygulamayı seçebilir. - Rol örneklerinin hizmet topolojisini değiştirme
Topoloji değişiklikleri, örneğin kaldırıldığı yer dışında çalışan örnekleri etkilemez. Kalan tüm örneklerin genel olarak geri dönüştürül ihtiyacı olmaz; ancak, bir topoloji değişikliğine yanıt olarak rol örneklerini geri dönüştürmeyi seçebilirsiniz. - Sertifika parmak izini değiştirme
Bir sertifikayı yalnızca bir rol örneği çevrimdışı olduğunda güncelleştirebilirsiniz. Rol örneği çevrimiçiyken bir sertifika eklenir, silinir veya değiştirilirse, Azure sertifikayı güncelleştirmek ve değişiklik tamamlandıktan sonra yeniden çevrimiçi duruma getirmek için örneği çevrimdışına alır.
Hizmet Çalışma Zamanı Olayları ile yapılandırma değişikliklerini işleme
Azure Çalışma Zamanı Kitaplığı, bir rolden Azure ortamıyla etkileşime geçme sınıfları sağlayan Microsoft.WindowsAzure.ServiceRuntime ad alanını içerir. RoleEnvironment sınıfı, yapılandırma değişikliği öncesinde ve sonrasında aşağıdaki olayları tanımlar:
- Olayı değiştirme
Bu, yapılandırma değişikliği bir rolün belirtilen örneğine uygulanmadan önce gerçekleşir ve gerekirse rol örneklerinin indirilene bir fırsat sağlar. - Olay değiştirildi
Yapılandırma değişikliği bir rolün belirtilen örneğine uygulandıktan sonra gerçekleşir.
Not
Sertifika değişiklikleri her zaman bir rolün örneklerini çevrimdışına alır, roleEnvironment.Changing veya RoleEnvironment.Changed olaylarını yükseltmez.
ServicePackage.cspkg
Not
Dağıtılabilir maksimum paket boyutu 600 MB'dır
Bir uygulamayı Azure'da bulut hizmeti olarak dağıtmak için önce uygulamayı uygun biçimde paketleniz gerekir. CsPack komut satırı aracını (Azure SDKile birlikte yüklenir) kullanarak paket dosyasını uygulamanın alternatifi olarak Visual Studio.
CSPack, paket içeriğini tanımlamak için hizmet tanımı dosyasının ve hizmet yapılandırma dosyasının içeriğini kullanır. CSPack, uygulamasını kullanarak Azure'a yükleyebilirsiniz bir uygulama paketi dosyası (.cspkg) Azure portal. Varsayılan olarak paket olarak [ServiceDefinitionFileName].cspkg adlandırılmıştır ancak CSPack seçeneğini kullanarak farklı bir ad /out belirtebilirsiniz.
CSPack şurada bulunur:
C:\Program Files\Microsoft SDKs\Azure\.NET SDK\[sdk-version]\bin\
Not
CSPack.exe (windows üzerinde), SDK ile birlikte yüklenen Microsoft Azure komut istemi kısayolunu çalıştırılarak kullanılabilir.
Tüm olası anahtar ve komutlarla ilgili belgeleri görmek için CSPack.exe programını kendisiyle çalıştırın.
İpucu
bulut hizmetinizi Microsoft Azure işlem Emulator yerel olarak çalıştırın, /copyonly seçeneğini kullanın. Bu seçenek, uygulamanın ikili dosyalarını, işlem öykünücüsünde çalıştırılabilecekleri bir dizin düzenine kopyalar.
Bulut hizmetini paketlemek için örnek komut
Aşağıdaki örnek bir Web rolü için bilgi içeren bir uygulama paketi oluşturur. Komut kullanılacak hizmet tanımı dosyasını, ikili dosyaların bulunabileceği dizini ve paket dosyasının adını belirtir.
cspack [DirectoryName]\[ServiceDefinition]
/role:[RoleName];[RoleBinariesDirectory]
/sites:[RoleName];[VirtualPath];[PhysicalPath]
/out:[OutputFileName]
Uygulama hem bir Web rolü hem de bir çalışan rolü içeriyorsa, aşağıdaki komut kullanılır:
cspack [DirectoryName]\[ServiceDefinition]
/out:[OutputFileName]
/role:[RoleName];[RoleBinariesDirectory]
/sites:[RoleName];[VirtualPath];[PhysicalPath]
/role:[RoleName];[RoleBinariesDirectory];[RoleAssemblyName]
Değişkenlerin şu şekilde tanımlandığı yer:
| Değişken | Değer |
|---|---|
| [DirectoryName] | Azure projesinin. csdef dosyasını içeren kök proje dizini altındaki alt dizin. |
| [ServiceDefinition] | Hizmet tanım dosyasının adı. Varsayılan olarak, bu dosya ServiceDefinition. csdef olarak adlandırılır. |
| [OutputFilename & lt] | Oluşturulan paket dosyasının adı. Genellikle bu, uygulamanın adına ayarlanır. Dosya adı belirtilmemişse, uygulama paketi [ ApplicationName ] . cspkg olarak oluşturulur. |
| [RoleName] | Rolün hizmet tanım dosyasında tanımlanan adı. |
| [RoleBinariesDirectory] | Rolün ikili dosyalarının konumu. |
| [VirtualPath] | Hizmet tanımının siteler bölümünde tanımlanan her bir sanal yol için fiziksel dizinler. |
| [PhysicalPath] | Hizmet tanımının site düğümünde tanımlanan her bir sanal yol için içeriğin fiziksel dizinleri. |
| [RoleAssemblyName] | Rol için ikili dosyanın adı. |
Sonraki adımlar
Bir bulut hizmeti paketi oluşturuyor ve şunu yapmak istiyorum...
Visual Studio kullanıyorum ve şunu yapmak istiyorum...