Azure Bulut Hizmeti modeli nedir ve nasıl paket yapabilirim?
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; toplu olarak 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...
- [Bulut hizmeti oluşturma] [vs_create]
- [Mevcut bir bulut hizmetini yeniden yapılandırma] [vs_reconfigure]
- [Bulut Hizmeti projesi dağıtma] [vs_deploy]
- [Uzak masaüstü hizmeti örneğine geri alın] [remotedesktop]
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="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>
Burada kullanılan XML şemasını daha iyianlamak 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ğinde, Azure veritabanı yapılandırması için kullanılan bir sertifika 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ığı, 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, paketin 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 şu konumdadır:
C:\Program Files\Microsoft SDKs\Azure\.NET SDK\[sdk-version]\bin\
Not
CSPack.exe (windows üzerinde), SDK ile birlikte Microsoft Azure Komut İstemi kısayolunu çalıştırarak kullanılabilir.
Olası tüm CSPack.exe ve komutlarla ilgili belgeleri görmek için CSPack.exe programını tek başına çalıştırın.
İpucu
Bulut hizmetinizi İşlem Microsoft Azure'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ünü çalıştıracakları bir dizin düzenine kopyalar.
Bulut hizmetini pakete alan örnek komut
Aşağıdaki örnek, bir web rolüne ilişkin bilgileri içeren bir uygulama paketi oluşturur. komutu, kullanmak üzere hizmet tanımı dosyasını, ikili dosyaların buluna dizin ve paket dosyasının adını belirtir.
cspack [DirectoryName]\[ServiceDefinition]
/role:[RoleName];[RoleBinariesDirectory]
/sites:[RoleName];[VirtualPath];[PhysicalPath]
/out:[OutputFileName]
Uygulama hem web rolü hem de ç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 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ılmıştır. |
| [OutputFileName] | Oluşturulan paket dosyasının adı. Genellikle bu, uygulamanın adına ayarlanır. Hiçbir dosya adı belirtilmezse, uygulama paketi [ ApplicationName ] .cspkg olarak oluşturulur. |
| [RoleName] | Hizmet tanımı dosyasında tanımlandığı şekilde rolün adı. |
| [RoleBinariesDirectory] | Rolün ikili dosyalarının konumu. |
| [Virtualpath] | Hizmet tanımının Siteler bölümünde tanımlanan her sanal yolun fiziksel dizinleri. |
| [PhysicalPath] | Hizmet tanımının site düğümünde tanımlanan her sanal yolun içeriğinin fiziksel dizinleri. |
| [RoleAssemblyName] | Rolün ikili dosyasının adı. |
Sonraki adımlar
- Dağıtım önkoşullarını gözden Cloud Services (genişletilmiş destek).
- , PowerShell,Şablon veya Azure portal kullanarak bir BulutHizmeti (genişletilmiş destek) Visual Studio.
- Daha fazla destek (genişletilmiş destek) Cloud Services sık sorulan soruları gözden geçirme.