Apa itu model Cloud Service (klasik) dan bagaimana cara mengemasnya?

Penting

Cloud Services (klasik) sekarang tidak lagi digunakan untuk pelanggan baru dan akan dihentikan untuk semua pelanggan pada 31 Agustus 2024. Penyebaran baru sebaiknya menggunakan Azure Resource Manager yang baru berdasarkan model penyebaran Azure Cloud Services (dukungan tambahan) .

Cloud Ssrvice dibuat dari tiga komponen, definisi layanan (.csdef) , konfigurasi layanan (.cscfg) , dan paket layanan (.cspkg) . Baik file ServiceDefinition.csdef dan ServiceConfig.cscfg berbasis XML dan menggambarkan struktur cloud service dan cara konfigurasinya; secara kolektif disebut model. ServicePackage.cspkg adalah file zip yang dihasilkan dari ServiceDefinition.csdef dan antara lain, berisi semua dependensi berbasis biner yang diperlukan. Azure membuat cloud service dari ServicePackage.cspkg dan ServiceConfig.cscfg.

Setelah cloud service berjalan di Azure, Anda dapat mengonfigurasi ulang melalui file ServiceConfig.cscfg, tetapi Anda tidak dapat mengubah definisi.

Apa yang ingin Anda ketahui lebih lanjut?

ServiceDefinition.csdef

File ServiceDefinition.csdef menentukan pengaturan yang digunakan oleh Azure untuk mengonfigurasi layanan awan. Azure Service Definition Schema (File.csdef) menyediakan format yang diperbolehkan untuk file definisi layanan. Contoh berikut ini memperlihatkan pengaturan yang bisa ditentukan untuk peran Web dan Pekerja:

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

Anda dapat merujuk ke Skema Definisi Layanan untuk pemahaman yang lebih baik tentang skema XML yang digunakan di sini, namun, berikut adalah penjelasan cepat dari beberapa elemen:

Situs
Berisi definisi untuk situs web atau aplikasi web yang dihosting di IIS7.

InputEndpoints
Berisi definisi untuk titik akhir yang digunakan untuk menghubungi cloud service.

InternalEndpoints
Berisi definisi untuk titik akhir yang digunakan oleh instans peran untuk berkomunikasi satu sama lain.

ConfigurationSettings
Berisi definisi pengaturan untuk fitur peran tertentu.

Sertifikat
Berisi definisi untuk sertifikat yang diperlukan untuk sebuah peran. Contoh kode sebelumnya memperlihatkan sertifikat yang digunakan untuk konfigurasi Azure Connect.

LocalResources
Berisi definisi untuk sumber daya penyimpanan lokal. Sumber daya penyimpanan lokal adalah direktori yang dipesan pada sistem file komputer virtual tempat instans peran dijalankan.

Impor
Berisi definisi untuk modul yang diimpor. Contoh kode sebelumnya memperlihatkan modul untuk Koneksi Desktop Jarak Jauh dan Azure Connect.

Startup
Berisi tugas yang dijalankan saat peran dimulai. Tugas didefinisikan dalam file .cmd atau bisa dijalankan.

ServiceConfiguration.cscfg

Konfigurasi pengaturan untuk cloud service Anda ditentukan oleh nilai dalam file ServiceConfiguration.cscfg. Anda menentukan jumlah instans yang ingin Anda terapkan untuk setiap peran dalam file ini. Nilai untuk pengaturan konfigurasi yang Anda tentukan dalam file definisi layanan ditambahkan ke file konfigurasi layanan. Sidik jari untuk setiap sertifikat manajemen yang terkait dengan layanan cloud juga ditambahkan ke file. Azure Service Configuration Schema (File.cscfg) menyediakan format yang diperbolehkan untuk file konfigurasi layanan.

File konfigurasi layanan tidak dikemas dengan aplikasi, tetapi diunggah ke Azure sebagai file terpisah dan digunakan untuk mengonfigurasi cloud service. Anda dapat mengunggah file konfigurasi layanan baru tanpa melakukan penerapan ulang cloud service Anda. Nilai konfigurasi untuk cloud service dapat diubah saat cloud service berjalan. Contoh berikut menunjukkan pengaturan konfigurasi yang dapat ditentukan untuk peran Web dan Pekerja:

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

Anda dapat merujuk ke Skema Konfigurasi Layanan untuk lebih memahami skema XML yang digunakan di sini, namun, berikut adalah penjelasan singkat tentang elemen:

Instans
Mengonfigurasi jumlah instans yang berjalan untuk peran tersebut. Untuk mencegah cloud service Anda berpotensi menjadi tidak tersedia selama peningkatan, disarankan agar Anda menerapkan lebih dari satu instans peran Anda yang menghadap web. Dengan menerapkan lebih dari satu instans, Anda mematuhi pedoman dalam Azure Compute Service Level Agreement (SLA), yang menjamin konektivitas eksternal 99,95% untuk peran yang menghadap internet ketika dua atau lebih instans peran digunakan untuk layanan.

ConfigurationSettings
Mengonfigurasi pengaturan untuk instans yang sedang berjalan untuk sebuah peran. Nama <Setting> elemen harus cocok dengan definisi pengaturan dalam file definisi layanan.

Sertifikat
Mengonfigurasi sertifikat yang digunakan oleh layanan. Contoh kode sebelumnya menunjukkan cara menentukan sertifikat untuk modul RemoteAccess. Nilai atribut cap jempol harus diatur ke cap jempol sertifikat yang akan digunakan.

Catatan

Cap jempol untuk sertifikat dapat ditambahkan ke file konfigurasi dengan menggunakan editor teks. Atau, nilai dapat ditambahkan pada tab Sertifikat di halaman Properti peran di Visual Studio.

Mendefinisikan port untuk instans peran

Azure hanya mengizinkan satu titik masuk ke peran web. Artinya semua lalu lintas terjadi melalui satu alamat IP. Anda dapat mengonfigurasi situs web Anda untuk berbagi port dengan mengonfigurasi header host untuk mengarahkan permintaan ke lokasi yang benar. Anda juga dapat mengonfigurasi aplikasi untuk mendengarkan port terkenal di alamat IP.

Contoh berikut menunjukkan konfigurasi untuk peran web dengan situs web dan aplikasi web. Situs web dikonfigurasi sebagai lokasi entri default pada port 80, dan aplikasi web dikonfigurasi untuk menerima permintaan dari header host alternatif yang disebut "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>

Mengubah konfigurasi peran

Anda dapat memperbarui konfigurasi cloud service saat berjalan di Azure, tanpa membuat layanan offline. Untuk mengubah informasi konfigurasi, Anda dapat mengunggah file konfigurasi baru, atau mengedit file konfigurasi dan menerapkannya ke layanan yang sedang berjalan. Perubahan berikut dapat dilakukan pada konfigurasi layanan:

  • Mengubah nilai pengaturan konfigurasi
    Saat pengaturan konfigurasi berubah, instans peran dapat memilih untuk menerapkan perubahan saat instans online, atau untuk mendaur ulang instans dengan anggun dan menerapkan perubahan saat instans offline.
  • Mengubah topologi layanan instans peran
    Perubahan topologi tidak memengaruhi instans yang berjalan, kecuali jika instans sedang dihapus. Semua instans yang tersisa umumnya tidak perlu didaur ulang; Namun, Anda dapat memilih untuk mendaur ulang instans peran sebagai respons terhadap perubahan topologi.
  • Mengubah sidik jari sertifikat
    Anda hanya dapat memperbarui sertifikat saat instans peran offline. Jika sertifikat ditambahkan, dihapus, atau diubah saat instans peran online, Azure dengan anggun mengambil instans offline untuk memperbarui sertifikat dan membawanya kembali online setelah perubahan selesai.

Menangani perubahan konfigurasi dengan Peristiwa Runtime Layanan

Azure Runtime Library menyertakan namespace Microsoft.WindowsAzure.ServiceRuntime, yang menyediakan kelas untuk berinteraksi dengan lingkungan Azure dari peran. Kelas RoleEnvironment menentukan peristiwa berikut yang diangkat sebelum dan sesudah perubahan konfigurasi:

  • Mengubah peristiwa
    Ini terjadi sebelum perubahan konfigurasi diterapkan ke instans peran tertentu yang memberi Anda kesempatan untuk mencatat instans peran jika perlu.
  • Peristiwa yang diubah
    Terjadi setelah perubahan konfigurasi diterapkan ke instans peran tertentu.

Catatan

Karena perubahan sertifikat selalu mengambil instans peran offline, mereka tidak menaikkan peristiwa RoleEnvironment.Changing atau RoleEnvironment.Changed.

ServicePackage.cspkg

Catatan

Ukuran paket maksimum yang dapat digunakan adalah 600MB

Untuk menerapkan aplikasi sebagai layanan awan di Azure, Anda harus terlebih dahulu mengemas aplikasi dalam format yang sesuai. Anda dapat menggunakan alat baris perintah CSPack (diinstal dengan Azure SDK)untuk membuat file paket sebagai alternatif untuk Visual Studio.

CSPack menggunakan konten file definisi layanan dan file konfigurasi layanan untuk menentukan konten paket. CSPack menghasilkan file paket aplikasi (.cspkg) yang dapat Anda unggah ke Azure dengan menggunakan portal Microsoft Azure. Secara default, paket diberi nama [ServiceDefinitionFileName].cspkg, tetapi Anda dapat menentukan nama yang berbeda dengan menggunakan /out opsi dari CSPack.

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

Catatan

CSPack.exe (di jendela) tersedia dengan menjalankan pintasan Microsoft Azure Command Prompt yang diinstal dengan SDK.

Jalankan program CSPack.exe sendiri untuk melihat dokumentasi tentang semua sakelar dan perintah yang mungkin.

Tip

Jalankan cloud service Anda secara lokal di Microsoft Azure Compute Emulator, gunakan opsi /copyonly. Opsi ini menyalin file biner untuk aplikasi ke tata letak direktori tempat file tersebut dapat dijalankan di emulator komputasi.

Contoh perintah untuk mengemas layanan awan

Contoh berikut membuat paket aplikasi yang berisi informasi untuk peran web. Perintah menentukan file definisi layanan yang akan digunakan, direktori di mana file biner dapat ditemukan, dan nama file paket.

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

Jika aplikasi berisi peran web dan peran pekerja, perintah berikut ini digunakan:

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

Di mana variabel didefinisikan sebagai berikut:

Variabel Nilai
[DirectoryName] Subdirektori di bawah direktori root project yang berisi file .csdef dari proyek Azure.
[ServiceDefinition] Nama file definisi layanan. Secara default, file ini bernama ServiceDefinition.csdef.
[OutputFileName] Nama untuk file paket yang dihasilkan. Biasanya, ini diatur ke nama aplikasi. Jika tidak ada nama file yang ditentukan, paket aplikasi dibuat sebagai [ApplicationName].cspkg.
[RoleName] Nama peran seperti yang didefinisikan dalam file definisi layanan.
[RoleBinariesDirectory] Lokasi file biner untuk peran tersebut.
[VirtualPath] Direktori fisik untuk setiap jalur virtual yang didefinisikan di bagian Situs dari definisi layanan.
[PhysicalPath] Direktori fisik konten untuk setiap jalur virtual yang ditentukan dalam simpul situs definisi layanan.
[RoleAssemblyName] Nama file biner untuk peran tersebut.

Langkah berikutnya

Saya membuat paket layanan awan dan saya ingin...

Saya menggunakan Visual Studio dan saya ingin...