Bagikan melalui


Menyiapkan lingkungan staging di Azure App Service

Saat Anda menyebarkan aplikasi web, aplikasi web di Linux, back end seluler, atau aplikasi API ke Azure App Service, Anda dapat menggunakan slot penyebaran terpisah alih-alih slot produksi default. Pendekatan ini tersedia jika Anda menjalankan di tingkat Standar, Premium, atau Terisolasi dari paket App Service. Slot penyebaran adalah aplikasi aktif dengan nama host mereka sendiri. Konten aplikasi dan elemen konfigurasi dapat ditukar antara dua slot penyebaran, termasuk slot produksi.

Menyebarkan aplikasi Anda ke slot nonproduksi memiliki manfaat berikut:

  • Anda dapat memvalidasi perubahan aplikasi sebelum menukar slot ke dalam produksi.

  • Anda dapat memastikan semua instans slot dihangatkan sebelum ditukar ke lingkungan produksi. Pendekatan ini menghilangkan waktu henti saat Anda menyebarkan aplikasi. Pengalihan lalu lintas mulus. Tidak ada permintaan yang dihilangkan karena operasi pertukaran.

    Anda dapat mengotomatiskan seluruh alur kerja ini dengan mengonfigurasi pertukaran otomatis saat validasi pra-pertukaran tidak diperlukan.

  • Setelah pertukaran, slot yang sebelumnya diisi dengan aplikasi bertahap kini berisi aplikasi produksi yang sebelumnya. Jika perubahan yang ditukar ke slot produksi tidak sesuai dengan harapan Anda, Anda dapat segera melakukan pertukaran yang sama untuk mendapatkan kembali situs baik terakhir yang diketahui.

Tidak ada biaya tambahan untuk menggunakan slot penyebaran. Setiap tingkat paket App Service mendukung sejumlah slot penyebaran yang berbeda. Untuk mengetahui jumlah slot yang didukung tingkat aplikasi Anda, lihat Batas App Service.

Untuk menskalakan aplikasi Anda ke tingkat yang berbeda, pastikan tingkat target mendukung jumlah slot yang sudah digunakan aplikasi Anda. Misalnya, jika aplikasi Anda memiliki lebih dari lima slot, Anda tidak dapat menurunkan skalanya ke tingkat Standar. Tingkat Standar hanya mendukung lima slot penyebaran.

Video berikut melengkapi langkah-langkah dalam artikel ini dengan mengilustrasikan cara menyiapkan lingkungan penahapan di Azure App Service.

Prasyarat

  • Izin untuk melakukan operasi slot yang ingin Anda lakukan. Untuk informasi tentang izin yang diperlukan, lihat Operasi penyedia sumber daya. Misalnya, cari slot.

Tambahkan slot

Agar Anda mengaktifkan beberapa slot penyebaran, aplikasi harus berjalan di tingkat Standar, Premium, atau Terisolasi.

  1. Di portal Microsoft Azure, buka halaman manajemen aplikasi Anda.

  2. Di menu sebelah kiri, pilih Deployment>Slot Penyebaran. Kemudian pilih Tambahkan.

    Catatan

    Jika aplikasi belum berada di tingkat Standar, Premium, atau Terisolasi, pilih Tingkatkan. Buka tab Skala aplikasi Anda sebelum melanjutkan.

  3. Dalam dialog Tambahkan Slot , beri nama slot, dan pilih apakah akan mengkloning konfigurasi aplikasi dari slot penyebaran lain. Pilih Tambahkan untuk melanjutkan.

    Cuplikan layar yang menunjukkan opsi pengaturan slot penyebaran baru bernama 'staging' di portal.

    Anda dapat menyalin konfigurasi dari slot yang sudah ada. Pengaturan yang dapat dikloning termasuk pengaturan aplikasi, string koneksi, versi kerangka kerja bahasa, soket web, versi HTTP, dan arsitektur platform.

    Catatan

    Saat ini, titik akhir privat tidak dikloning antar slot.

  4. Setelah Anda memasukkan pengaturan, pilih Tutup untuk menutup dialog. Slot baru sekarang muncul di halaman Slot deployment. Secara bawaan, Traffic % diatur ke 0 untuk slot baru, sehingga semua lalu lintas pelanggan dirutekan ke slot produksi.

  5. Pilih slot penyebaran baru untuk membuka halaman sumber dayanya.

    Cuplikan layar yang memperlihatkan cara membuka halaman manajemen slot penyebaran di portal.

    Slot staging memiliki halaman manajemen sama seperti aplikasi App Service lainnya. Anda dapat mengubah konfigurasi slot. Untuk mengingatkan Anda bahwa Anda sedang melihat slot penyebaran, nama aplikasi dan nama slot ditampilkan di URL. Jenis aplikasinya adalah App Service (Slot). Anda juga dapat melihat slot sebagai aplikasi terpisah di grup sumber daya, dengan sebutan yang sama.

  6. Pada halaman sumber daya slot, pilih URL aplikasi. Slot penyebaran memiliki nama host sendiri dan juga merupakan aplikasi yang aktif. Untuk membatasi akses publik ke slot penyebaran, lihat Menyiapkan pembatasan akses Azure App Service.

Slot penyebaran baru tidak memiliki konten, bahkan jika Anda mengkloning konfigurasi dari slot yang berbeda. Misalnya, Anda dapat menerbitkan ke slot ini dengan Git. Anda dapat menyebarkan ke slot dari cabang repositori yang berbeda atau repositori yang berbeda. Artikel Mendapatkan profil penerbitan dari Azure App Service dapat memberikan informasi yang diperlukan untuk diterapkan ke slot. Visual Studio dapat mengimpor profil untuk menyebarkan konten ke slot.

Format URL slot adalah http://sitename-slotname.azurewebsites.net. Untuk mempertahankan panjang URL dalam batas DNS yang diperlukan, nama situs dipotong pada 40 karakter. Nama situs gabungan dan nama slot harus kurang dari 59 karakter.

Memahami apa yang terjadi selama pertukaran

Langkah-langkah operasi pertukaran

Saat Anda menukar dua slot, App Service melakukan hal berikut untuk memastikan bahwa slot target tidak mengalami pemadaman:

  1. Lakukan penerapan pengaturan berikut dari slot sasaran (seperti slot produksi) ke semua instance slot sumber:

    Ketika salah satu pengaturan diterapkan ke slot sumber, perubahan memicu semua instans di slot sumber untuk memulai ulang. Selama pertukaran dengan pratinjau, tindakan ini menandai akhir fase pertama. Operasi pertukaran dijeda. Anda dapat memvalidasi bahwa slot sumber berfungsi dengan benar menggunakan pengaturan slot target.

  2. Tunggu setiap instans di slot sumber untuk menyelesaikan proses memulai ulang. Jika ada instans yang gagal memulai ulang, operasi pertukaran mengembalikan semua perubahan ke slot sumber dan menghentikan operasi.

  3. Jika cache lokal diaktifkan, picu inisialisasi cache lokal dengan membuat permintaan HTTP ke akar aplikasi (/) pada setiap instans slot sumber. Tunggu hingga setiap instans mengembalikan respons HTTP apa pun. Inisialisasi cache lokal menyebabkan restart lain pada setiap instans.

  4. Jika pertukaran otomatis diaktifkan dengan pemanasan kustom, picu inisialisasi aplikasi kustom pada setiap instans dari slot sumber.

    Jika applicationInitialization tidak ditentukan, ajukan permintaan HTTP ke direktori utama aplikasi slot sumber di setiap instans.

    Jika sebuah instans mengembalikan respons HTTP apa pun, instans tersebut dianggap sudah dihangatkan.

  5. Jika semua instans pada slot sumber berhasil dihangatkan dengan sukses, tukar kedua slot dengan menukar aturan perutean mereka. Setelah langkah ini, slot target (misalnya, slot produksi) memiliki aplikasi yang telah dihangatkan sebelumnya di slot sumber.

  6. Sekarang setelah slot sumber memiliki aplikasi pra-pertukaran yang sebelumnya berada di slot target, lakukan operasi yang sama dengan menerapkan semua pengaturan dan memulai ulang instans.

Kapan saja dalam operasi pertukaran, semua pekerjaan menginisialisasi aplikasi yang ditukar terjadi pada slot sumber. Slot target tetap aktif saat slot sumber sedang disiapkan dan dihangatkan, walaupun pertukaran berhasil atau gagal. Untuk menukar slot penahapan dengan slot produksi, pastikan slot produksi selalu menjadi slot target. Dengan cara ini, operasi pertukaran tidak memengaruhi aplikasi produksi Anda.

Catatan

Setelah operasi pertukaran ini, instans produksi sebelumnya Anda dipindahkan ke dalam penahapan. Instans tersebut didaur ulang pada langkah terakhir dari proses pertukaran. Jika Anda memiliki operasi jangka panjang dalam aplikasi Anda, operasi tersebut akan dihentikan saat pekerja aplikasi melakukan daur ulang. Fakta ini juga berlaku untuk aplikasi fungsi. Pastikan kode aplikasi Anda ditulis dengan cara yang toleran terhadap kesalahan.

Langkah-langkah untuk membuat slot tidak dapat ditukar

Saat Anda mengkloning konfigurasi dari slot penyebaran lain, konfigurasi yang dikloning dapat diedit. Beberapa elemen konfigurasi mengikuti konten selama pertukaran (elemen konfigurasi tidak spesifik slot). Elemen konfigurasi lainnya tetap berada di slot yang sama setelah pertukaran (mereka spesifik untuk slot).

Saat Anda menukar slot, pengaturan ini ditukar:

  • Susunan dan versi bahasa, 32 bit dan 64 bit
  • Pengaturan aplikasi (dapat dikonfigurasi untuk melekat pada slot)
  • Rantai koneksi (dapat dikonfigurasi untuk melekat pada slot)
  • Akun penyimpanan yang dipasang (dapat dikonfigurasi untuk menempel pada slot)
  • Pemetaan pengendali
  • Sertifikat publik
  • Konten WebJobs
  • Koneksi hibrid (saat ini)
  • Titik akhir layanan (saat ini)
  • Azure Content Delivery Network (saat ini)
  • Pemetaan jalur

Saat Anda menukar slot, pengaturan ini tidak ditukar:

  • Pengaturan umum tidak disebutkan dalam daftar sebelumnya
  • Titik akhir penerbitan
  • Nama domain khusus
  • Sertifikat nonpublik dan pengaturan TLS/SSL
  • Pengaturan Skala
  • Penjadwal WebJobs
  • Batasan IP
  • Selalu Aktif
  • Pengaturan diagnostik
  • Berbagi sumber daya lintas asal (CORS)
  • Integrasi jaringan virtual
  • Identitas terkelola dan pengaturan terkait
  • Pengaturan yang diakhiri dengan akhiran _EXTENSION_VERSION
  • Pengaturan yang dibuat Konektor Layanan

Catatan

Untuk membuat pengaturan aplikasi bisa diganti, tambahkan pengaturan aplikasi WEBSITE_OVERRIDE_PRESERVE_DEFAULT_STICKY_SLOT_SETTINGS pada setiap slot aplikasi. Atur nilainya ke 0 atau false. Pengaturan ini semuanya dapat ditukar atau semua tidak dapat ditukar. Anda tidak dapat membuat hanya beberapa pengaturan yang dapat ditukar dan bukan yang lain. Identitas terkelola tidak pernah ditukar. Pengaturan aplikasi penggantian ini tidak memengaruhinya.

Pengaturan aplikasi tertentu yang berlaku untuk pengaturan yang tidak ditukarkan juga tidak ditukar. Misalnya, karena pengaturan diagnostik tidak ditukar, pengaturan aplikasi terkait seperti WEBSITE_HTTPLOGGING_RETENTION_DAYS dan DIAGNOSTICS_AZUREBLOBRETENTIONDAYS juga tidak ditukar, bahkan jika tidak muncul sebagai pengaturan slot.

Untuk mengonfigurasi pengaturan aplikasi atau string koneksi agar menempel pada slot tertentu yang tidak ditukar:

  1. Pergi ke Pengaturan>Variabel Lingkungan untuk slot tersebut.

  2. Tambahkan atau edit setelan, lalu pilih Setelan slot penerapan. Memilih kotak centang ini memberi tahu App Service bahwa pengaturan tidak dapat ditukar.

  3. Pilih Terapkan.

Cuplikan layar yang memperlihatkan kotak centang untuk mengonfigurasi pengaturan aplikasi sebagai pengaturan slot di portal Microsoft Azure.

Menukar slot penyebaran

Anda dapat menukar slot penyebaran di halaman Slot penyebaran dan halaman Ringkasan aplikasi Anda.

Sebelum Anda memindahkan aplikasi dari slot penyebaran ke slot produksi, pastikan bahwa slot produksi adalah slot target Anda dan bahwa semua pengaturan di slot sumber dikonfigurasi persis seperti yang Anda inginkan di slot produksi.

  1. Pergi ke halaman Slot Penyebaran aplikasi Anda dan pilih Swap.

    Cuplikan layar yang memperlihatkan pilihan untuk memulai operasi pertukaran di portal.

    Dialog Pertukaran memperlihatkan pengaturan di slot sumber dan target yang dipilih yang akan diubah.

  2. Pilih slot Sumber dan Target yang diinginkan. Biasanya, yang menjadi sasaran adalah slot produksi. Selain itu, pilih tab Perubahan slot sumber dan Perubahan slot target dan verifikasi bahwa perubahan konfigurasi diharapkan. Setelah selesai, Anda dapat segera menukar slot dengan memilih Mulai Pertukaran.

    Cuplikan layar yang memperlihatkan pilihan untuk mengonfigurasi dan menyelesaikan pertukaran di portal.

    Untuk melihat bagaimana slot target Anda akan berjalan dengan pengaturan baru sebelum pertukaran terjadi, jangan pilih Mulai Pertukaran. Ikuti petunjuk di Tukar dengan pratinjau nanti di artikel ini.

  3. Pilih Tutup untuk menutup dialog.

Jika Anda memiliki masalah, lihat Memecahkan masalah pertukaran nanti di artikel ini.

Pertukaran melalui pratinjau (berfase ganda)

Sebelum menjadikan produksi sebagai slot target, pastikan bahwa aplikasi berjalan dengan pengaturan yang sudah ditukar. Slot asal juga dipanaskan sebelum pertukaran selesai, yang diinginkan untuk aplikasi misi kritis.

Saat Anda melakukan pertukaran dengan pratinjau, App Service melakukan operasi pertukaran yang sama tetapi berhenti sejenak setelah langkah pertama. Anda kemudian dapat memverifikasi hasilnya pada slot staging sebelum melakukan pertukaran.

Jika Anda membatalkan pertukaran, App Service akan menerapkan kembali elemen konfigurasi ke slot sumber.

Catatan

Anda tidak dapat menggunakan fitur swap dengan pratinjau ketika autentikasi situs diaktifkan di salah satu slot.

  1. Ikuti langkah-langkah di bagian Tukar slot penyebaran , tetapi pilih Lakukan pertukaran dengan pratinjau.

    Dialog menunjukkan kepada Anda bagaimana konfigurasi dalam slot sumber berubah pada fase pertama, dan bagaimana slot sumber dan target berubah pada fase kedua.

  2. Saat Anda siap untuk memulai pertukaran, pilih Mulai Penukaran.

    Ketika fase pertama selesai, dialog akan memberi tahu Anda.

  3. Saat Anda siap untuk menyelesaikan pertukaran yang tertunda, pilih Selesaikan Pertukaran dalam tindakan Pertukaran, lalu pilih tombol Selesaikan Pertukaran .

    Cuplikan layar yang memperlihatkan cara mengonfigurasi pertukaran dalam mode pratinjau di portal.

    Untuk membatalkan pertukaran yang tertunda, pilih Batalkan Pertukaran , lalu pilih tombol Batalkan Pertukaran .

  4. Setelah selesai, pilih Tutup untuk menutup dialog.

Jika Anda memiliki masalah, lihat Memecahkan masalah pertukaran nanti di artikel ini.

Batalkan pertukaran

Jika ada kesalahan yang terjadi di slot target (misalnya, slot produksi) setelah pertukaran slot, pulihkan slot ke status pra-pertukarannya dengan segera menukar dua slot yang sama.

Mengonfigurasi pertukaran otomatis

Pertukaran otomatis mempermudah skenario Azure DevOps di mana Anda ingin menyebarkan aplikasi Anda secara terus-menerus tanpa waktu pemanasan dan tanpa waktu henti untuk pelanggan aplikasi tersebut. Ketika penggantian otomatis diaktifkan dari slot ke produksi, setiap kali Anda mengirimkan perubahan kode ke slot tersebut, App Service secara otomatis menukar aplikasi ke produksi setelah dipanaskan di slot sumber.

Catatan

Pertukaran otomatis tidak didukung di aplikasi web di Linux dan di Aplikasi Web untuk Kontainer.

Sebelum Anda mengonfigurasi pertukaran otomatis untuk slot produksi, pertimbangkan untuk mengujinya pada slot target nonproduksi.

  1. Buka halaman sumber daya aplikasi Anda. Pilih Penyebaran>Slot Penyebaran, kemudian pilih slot sumber yang diinginkan.

  2. Di menu sebelah kiri, pilih Pengaturan>Konfigurasi>Pengaturan Umum.

  3. Untuk Pertukaran otomatis yang diaktifkan, pilih Aktif. Untuk penyebaran slot pertukaran otomatis, pilih slot target. Lalu pilih Simpan pada bilah perintah.

    Cuplikan layar yang memperlihatkan pilihan untuk mengonfigurasi pertukaran otomatis ke slot produksi di portal.

  4. Jalankan pendorongan kode ke slot sumber. Pertukaran otomatis terjadi setelah waktu yang singkat. Pembaruan tercermin pada URL slot target Anda.

Jika Anda memiliki masalah, lihat Memecahkan masalah pertukaran nanti di artikel ini.

Tentukan pemanasan kustom

Beberapa aplikasi mungkin memerlukan tindakan pemanasan khusus sebelum pertukaran. Anda dapat menentukan tindakan kustom ini dengan menggunakan applicationInitialization elemen konfigurasi di Web.config. Operasi pertukaran menunggu persiapan khusus ini selesai sebelum melakukan pertukaran dengan slot target. Berikut adalah fragmen sampel Web.config :

<system.webServer>
    <applicationInitialization>
        <add initializationPage="/" hostName="[app hostname]" />
        <add initializationPage="/Home/About" hostName="[app hostname]" />
    </applicationInitialization>
</system.webServer>

Untuk informasi selengkapnya tentang kustomisasi elemen applicationInitialization, baca postingan blog Kegagalan pertukaran slot penyebaran paling umum dan cara memperbaikinya.

Anda juga dapat menyesuaikan perilaku pemanasan dengan menggunakan pengaturan aplikasi berikut:

  • WEBSITE_SWAP_WARMUP_PING_PATH: Jalur untuk melakukan ping melalui HTTP untuk menyiapkan situs Anda. Tambahkan pengaturan aplikasi ini dengan menentukan jalur kustom yang dimulai dengan garis miring sebagai nilai. Contohnya /statuscheck. Nilai defaultnya adalah /.
  • WEBSITE_SWAP_WARMUP_PING_STATUSES: Kode respons HTTP yang valid untuk operasi pemanasan. Tambahkan pengaturan aplikasi ini dengan daftar kode HTTP yang dipisahkan koma. Contohnya 200,202. Jika kode status yang dikembalikan tidak terdapat dalam daftar, maka operasi pemanasan dan pertukaran akan dihentikan. Secara default, semua kode respons valid.
  • WEBSITE_WARMUP_PATH: Jalur relatif di situs yang harus di-ping setiap kali situs dimulai ulang (tidak hanya selama pertukaran slot). Contoh nilai termasuk /statuscheck atau jalur akar, /.

Elemen <applicationInitialization> konfigurasi merupakan bagian dari proses memulai setiap aplikasi, sedangkan pengaturan aplikasi untuk proses pemanasan hanya berlaku untuk pergantian slot.

Jika Anda memiliki masalah, lihat Memecahkan masalah pertukaran nanti di artikel ini.

Memantau pertukaran

Jika operasi pertukaran membutuhkan waktu lama untuk diselesaikan, Anda bisa mendapatkan informasi tentang operasi pertukaran di log aktivitas.

  1. Di halaman sumber daya aplikasi Anda di portal, di menu sebelah kiri, pilih Log aktivitas.

  2. Operasi pertukaran akan muncul di kueri log sebagai Swap Web App Slots. Untuk melihat detailnya, Anda dapat memperluasnya dan memilih salah satu suboperasi atau kesalahan.

Merutekan lalu lintas produksi secara otomatis

Secara default, semua permintaan klien ke URL produksi aplikasi dirutekan ke slot produksi. Anda dapat merutekan sebagian lalu lintas ke slot lain. Fitur ini berguna jika Anda memerlukan umpan balik pengguna untuk pembaruan baru tetapi Anda belum siap untuk merilisnya ke produksi.

  1. Buka halaman sumber daya aplikasi web Anda dan pilih Penyebaran>Slot Penyebaran.

  2. Di kolom Traffic % slot yang ingin Anda rutekan, tentukan persentase (antara 0 dan 100) untuk mewakili jumlah total lalu lintas yang ingin Anda rutekan. Kemudian pilih Simpan.

    Cuplikan layar yang memperlihatkan pilihan portal untuk merutekan persentase lalu lintas permintaan ke slot penyebaran.

Setelah Anda menyimpan pengaturan, persentase klien yang ditentukan dirutekan secara acak ke slot nonproduksi.

Setelah klien secara otomatis dirutekan ke slot tertentu, klien akan disematkan ke slot tersebut selama satu jam atau hingga cookie dihapus. Di browser pelanggan, Anda dapat melihat ke slot mana sesi Anda disematkan dengan melihat cookie x-ms-routing-name di header HTTP Anda. Permintaan yang dirutekan ke slot pengujian memiliki cookie x-ms-routing-name=staging. Permintaan yang dirutekan ke slot produksi memiliki cookie x-ms-routing-name=self.

Mengarahkan lalu lintas produksi secara manual

Selain pengaturan lalu lintas otomatis, App Service dapat merutekan permintaan ke slot tertentu. Opsi ini berguna saat Anda ingin pengguna Anda dapat ikut serta atau menolak aplikasi beta Anda. Untuk merutekan lalu lintas produksi secara manual, Anda menggunakan parameter kueri x-ms-routing-name.

Untuk mengizinkan pengguna menolak aplikasi beta Anda, misalnya, Anda dapat meletakkan tautan ini di halaman web Anda:

<a href="<webappname>.azurewebsites.net/?x-ms-routing-name=self">Go back to production app</a>

String x-ms-routing-name=self menentukan slot produksi. Setelah browser klien mengakses tautan, browser klien tersebut dialihkan ke slot produksi. Setiap permintaan berikutnya memiliki cookie x-ms-routing-name=self yang mengaitkan sesi ke slot produksi.

Untuk memungkinkan pengguna ikut serta dalam aplikasi beta Anda, atur parameter kueri yang sama ke nama slot nonproduksi. Berikut contohnya:

<webappname>.azurewebsites.net/?x-ms-routing-name=staging

Secara bawaan, slot baru memiliki aturan perutean 0% yang ditunjukkan dengan warna abu-abu. Saat Anda secara eksplisit mengatur nilai ini ke 0% (diperlihatkan dalam teks hitam), pengguna Anda dapat mengakses slot penahapan secara manual dengan menggunakan parameter kueri x-ms-routing-name. Mereka tidak akan dirutekan ke slot secara otomatis karena persentase perutean diatur ke 0. Konfigurasi ini adalah skenario lanjutan di mana Anda dapat menyembunyikan staging slot dari publik sambil mengizinkan tim internal menguji perubahan pada slot.

Menghapus slot

  1. Cari dan pilih aplikasi Anda.

  2. Pilih Penyebaran>Slot Penyebaran>slot untuk dihapus>Gambaran Umum. Jenis aplikasi muncul sebagai App Service (Slot) untuk mengingatkan Anda bahwa Anda melihat slot penyebaran.

  3. Hentikan slot dan setel lalu lintas dalam slot menjadi nol.

  4. Pada bilah perintah, pilih Hapus.

Cuplikan layar yang memperlihatkan pilihan untuk menghapus slot penyebaran di portal.

Mengotomatiskan dengan templat Resource Manager

Templat Azure Resource Manager adalah file JSON deklaratif untuk mengotomatiskan penyebaran dan konfigurasi sumber daya Azure. Untuk menukar slot dengan menggunakan templat Resource Manager, Anda mengatur dua properti pada Microsoft.Web/sites/slots sumber daya dan Microsoft.Web/sites :

  • buildVersion: Sebuah properti string yang menunjukkan versi saat ini dari aplikasi yang disebarkan di slot. Misalnya: v1, 1.0.0.1, atau 2019-09-20T11:53:25.2887393-07:00.
  • targetBuildVersion: Properti string yang menentukan nilai apa yang seharusnya dimiliki oleh slot. targetBuildVersion Jika nilai tidak sama dengan nilai saat inibuildVersion, nilai tersebut akan memicu operasi pertukaran dengan menemukan slot dengan nilai yang ditentukanbuildVersion.

Contoh templat Resource Manager

Templat Resource Manager berikut menukar dua slot dengan memperbarui nilai slot buildVersion dan mengatur nilai staging pada slot produksi. Anda harus memiliki slot yang disebut staging.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "my_site_name": {
            "defaultValue": "SwapAPIDemo",
            "type": "String"
        },
        "sites_buildVersion": {
            "defaultValue": "v1",
            "type": "String"
        }
    },
    "resources": [
        {
            "type": "Microsoft.Web/sites/slots",
            "apiVersion": "2018-02-01",
            "name": "[concat(parameters('my_site_name'), '/staging')]",
            "location": "East US",
            "kind": "app",
            "properties": {
                "buildVersion": "[parameters('sites_buildVersion')]"
            }
        },
        {
            "type": "Microsoft.Web/sites",
            "apiVersion": "2018-02-01",
            "name": "[parameters('my_site_name')]",
            "location": "East US",
            "kind": "app",
            "dependsOn": [
                "[resourceId('Microsoft.Web/sites/slots', parameters('my_site_name'), 'staging')]"
            ],
            "properties": {
                "targetBuildVersion": "[parameters('sites_buildVersion')]"
            }
        }        
    ]
}

Templat Resource Manager ini idempoten. Anda dapat menjalankannya berulang kali dan menghasilkan status slot yang sama. Tanpa perubahan apa pun pada templat, eksekusi berikutnya dari templat yang sama tidak memicu pertukaran slot apa pun karena slot sudah dalam keadaan yang diinginkan.

Memecahkan masalah pertukaran

Jika terjadi kesalahan selama pertukaran slot, kesalahan akan muncul di D:\home\LogFiles\eventlog.xml. Juga dicatat dalam log kesalahan khusus aplikasi.

Berikut adalah beberapa kesalahan pertukaran yang umum:

  • Permintaan HTTP ke dasar aplikasi diukur waktunya. Operasi pertukaran menunggu selama 90 detik untuk setiap permintaan HTTP, dan mencoba kembali hingga lima kali. Jika semua percobaan ulang habis, operasi pertukaran akan dihentikan.

  • Inisialisasi cache lokal mungkin gagal ketika konten aplikasi melebihi kuota disk lokal yang ditentukan untuk cache lokal. Untuk informasi selengkapnya, lihat Gambaran umum cache lokal Azure App Service.

  • Selama operasi pembaruan situs, kesalahan berikut dapat terjadi: "Slot tidak dapat diubah karena pengaturan konfigurasinya telah disiapkan untuk pertukaran." Kesalahan ini dapat terjadi jika fase pertama dalam pertukaran beberapa fase selesai tetapi fase kedua belum terjadi. Ini juga dapat terjadi jika pertukaran gagal. Ada dua cara untuk mengatasi masalah ini:

    • Batalkan operasi pertukaran, yang mengatur ulang situs kembali ke status lama.
    • Selesaikan operasi pertukaran, yang memperbarui situs ke status baru yang diinginkan.

    Untuk mempelajari cara membatalkan atau menyelesaikan operasi pertukaran, lihat Menukar dengan pratinjau (pertukaran beberapa fase) sebelumnya di artikel ini.

  • Selama pemanasan awal khusus, permintaan HTTP dibuat secara internal tanpa melalui URL eksternal. Mereka dapat gagal dengan aturan penulisan ulang URL tertentu di Web.config. Misalnya, aturan untuk mengalihkan nama domain atau memberlakukan HTTPS dapat mencegah permintaan pemanasan mencapai kode aplikasi. Untuk mengatasi masalah ini, ubah aturan penulisan ulang Anda dengan menambahkan dua kondisi berikut:

    <conditions>
      <add input="{WARMUP_REQUEST}" pattern="1" negate="true" />
      <add input="{REMOTE_ADDR}" pattern="^100?\." negate="true" />
      ...
    </conditions>
    
  • Tanpa pemanasan kustom, aturan penulisan ulang URL masih dapat memblokir permintaan HTTP. Untuk mengatasi masalah ini, ubah aturan penulisan ulang Anda dengan menambahkan kondisi berikut:

    <conditions>
      <add input="{REMOTE_ADDR}" pattern="^100?\." negate="true" />
      ...
    </conditions>
    
  • Setelah pertukaran slot, aplikasi mungkin menghadapi restart yang tidak terduga. Mulai ulang terjadi karena setelah pertukaran, konfigurasi pengikatan nama host tidak sinkron. Situasi ini dengan sendirinya tidak menyebabkan hidupkan ulang. Namun, peristiwa penyimpanan tertentu yang mendasar, seperti failover volume penyimpanan, dapat mendeteksi perbedaan ini dan memaksa ulang semua proses kerja.

    Untuk meminimalkan jenis restart ini, atur WEBSITE_ADD_SITENAME_BINDINGS_IN_APPHOST_CONFIG=1 pengaturan aplikasi di semua slot. Namun, pengaturan aplikasi ini tidak berfungsi dengan aplikasi Windows Communication Foundation (WCF).

Langkah selanjutnya