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 saat Anda berjalan di tingkat paket Standard, Premium, atau Isolated App Service. Slot penyebaran adalah aplikasi langsung dengan nama host mereka sendiri. Konten aplikasi dan elemen konfigurasi dapat ditukarkan antara dua slot penyebaran, termasuk slot produksi.

Menyebarkan aplikasi Anda ke slot nonproduksi memiliki manfaat berikut:

  • Anda dapat memvalidasi perubahan aplikasi di slot penyebaran penahapan sebelum menukarnya dengan slot produksi.
  • Menyebarkan aplikasi ke slot terlebih dahulu dan menukarnya ke produksi memastikan bahwa semua instans slot dihangatkan sebelum ditukarkan ke produksi. Ini menghilangkan waktu henti saat Anda menyebarkan aplikasi. Pengalihan lalu lintas bebas hambatan, dan 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 dengan aplikasi yang sebelumnya dipentaskan sekarang memiliki aplikasi produksi sebelumnya. Jika perubahan yang ditukar ke slot produksi tidak seperti yang diharapkan, Anda dapat segera melakukan penukaran yang sama untuk mendapatkan kembali "situs baik yang terakhir diketahui".

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

Untuk menskalakan aplikasi 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, karena tingkat Standar hanya mendukung lima slot penyebaran.

Video ini memperlihatkan kepada Anda cara menyiapkan lingkungan penahapan di Azure App Service.

Langkah-langkah dalam video juga dijelaskan di bagian berikut.

Prasyarat

Untuk informasi tentang izin yang Anda butuhkan untuk melakukan operasi slot yang Anda inginkan, lihat Operasi penyedia sumber daya (cari slot, misalnya).

Menambahkan slot

Aplikasi harus berjalan di tingkat Standar, Premium, atau Terisolasi agar Anda dapat mengaktifkan beberapa slot penyebaran.

  1. Di portal Azure, buka halaman pengelolaan aplikasi Anda.

  2. Di panel kiri, pilih Slot penyebaran>Tambahkan Slot.

    Catatan

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

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

    A screenshot that shows how to configure a new deployment slot called 'staging' in the portal.

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

    Catatan

    Saat ini, titik akhir privat tidak dikloning di seluruh slot.

  4. Setelah slot ditambahkan, pilih Tutup untuk menutup kotak dialog. Slot baru sekarang ditampilkan pada halaman Slot penyebaran. Secara default, Traffic % diatur ke 0 untuk slot baru, dengan semua lalu lintas pelanggan dialihkan ke slot produksi.

  5. Pilih slot penyebaran baru untuk membuka halaman sumber daya slot tersebut.

    A screenshot that shows how to open deployment slot's management page in the portal.

    Slot penahapan 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 ditampilkan sebagai <app-name>/<slot-name>, dan jenis aplikasinya adalah App Service (Slot). Anda juga dapat melihat slot sebagai aplikasi terpisah di grup sumber daya, dengan sebutan yang sama.

  6. Pilih URL aplikasi di halaman sumber daya slot. Slot penyebaran memiliki nama host sendiri dan juga merupakan aplikasi langsung. Untuk membatasi akses publik ke slot penyebaran, lihat Batasan IP Azure App Service.

Slot penyebaran baru tidak memiliki konten, bahkan jika Anda mengkloning pengaturan 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. Dapatkan profil penerbitan dari Azure App Service dapat memberikan informasi yang diperlukan untuk disebarkan ke slot. Profil dapat diimpor oleh Visual Studio untuk menyebarkan konten ke slot.

URL slot memiliki format http://sitename-slotname.azurewebsites.net. Untuk menjaga panjang URL dalam batas DNS yang diperlukan, nama situs akan dipotong pada 40 karakter, dan nama situs gabungan dan nama slot harus kurang dari 59 karakter.

Apa yang terjadi selama pertukaran

Langkah-langkah operasi pertukaran

Saat Anda menukar dua slot (biasanya dari slot penahapan sebagai sumber ke slot produksi sebagai target), App Service melakukan hal berikut untuk memastikan bahwa slot target tidak mengalami waktu henti:

  1. Terapkan pengaturan berikut dari slot target (misalnya, slot produksi) ke semua instans slot sumber:

    Setiap kasus ini memicu semua instans di slot sumber untuk menghidupkan ulang. Selama pertukaran dengan pratinjau, langkah ini menandai akhir fase pertama. Operasi pertukaran dijeda, dan Anda dapat memvalidasi bahwa slot sumber bekerja dengan benar dengan pengaturan slot target.

  2. Tunggu setiap contoh di slot sumber untuk menyelesaikan restart-nya. 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 root aplikasi ("/") pada setiap contoh 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 Inisiasi Aplikasi dengan membuat permintaan HTTP ke root aplikasi ("/") pada setiap instans slot sumber.

    Jika applicationInitialization tidak ditentukan, picu permintaan HTTP ke akar aplikasi slot sumber pada setiap instans.

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

  5. Jika semua instans pada slot sumber berhasil disiapkan, tukarkan dua slot dengan mengalihkan aturan perutean untuk dua slot. Setelah langkah ini, slot target (misalnya, slot produksi) memiliki aplikasi yang sebelumnya dihangatkan di slot sumber.

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

Pada setiap titik operasi pertukaran, semua pekerjaan yang menginisialisasi aplikasi yang ditukarkan terjadi pada slot sumber. Slot target tetap online sementara slot sumber sedang disiapkan dan dilatih, terlepas dari tempat 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

Instans dalam contoh produksi Anda sebelumnya (yang akan ditukar dengan penahapan setelah operasi penukaran ini) akan didaur ulang dengan cepat pada tahap terakhir dari proses penukaran. Jika Anda memiliki operasi yang berjalan lama dalam aplikasi Anda, aplikasi tersebut akan ditinggalkan, ketika pekerja mendaur ulang. Ini juga berlaku untuk aplikasi fungsi. Oleh karena itu, kode aplikasi Anda harus ditulis dengan cara yang toleran terhadap kesalahan.

Pengaturan apa yang ditukar?

Saat Anda mengkloning konfigurasi dari slot penyebaran lain, konfigurasi yang dikloning dapat diedit. Beberapa elemen konfigurasi mengikuti konten di seluruh swap (tidak spesifik slot), sedangkan elemen konfigurasi lainnya tetap berada di slot yang sama setelah pertukaran (khusus slot). Daftar berikut menunjukkan pengaturan yang berubah saat Anda menukar slot.

Pengaturan yang ditukar:

  • Pengaturan umum, seperti versi kerangka kerja, 32/64-bit, soket web
  • Pengaturan aplikasi (dapat dikonfigurasi untuk melekat pada slot)
  • String koneksi (dapat dikonfigurasi untuk melekat pada slot)
  • Pemetaan handler
  • Sertifikat publik
  • Konten WebJobs
  • Hybrid Connections *
  • Titik akhir layanan *
  • Azure Content Delivery Network *
  • Pemetaan jalur

Fitur yang ditandai dengan tanda bintang (*) direncanakan untuk tidak ditukarkan.

Pengaturan yang tidak ditukar:

  • Titik akhir penerbitan
  • Nama domain kustom
  • Sertifikat non-publik dan pengaturan TLS/SSL
  • Pengaturan skala
  • Penjadwal WebJobs
  • Batasan IP
  • Grup Ketersediaan AlwaysOn
  • 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 oleh Koneksi or layanan

Catatan

Agar pengaturan ini dapat ditukar, tambahkan pengaturan aplikasi WEBSITE_OVERRIDE_PRESERVE_DEFAULT_STICKY_SLOT_SETTINGS di setiap slot aplikasi dan atur nilainya ke 0 atau false. Pengaturan ini semuanya dapat ditukar atau tidak sama sekali. Anda tidak dapat membuat hanya beberapa pengaturan yang dapat ditukar dan bukan yang lain. Identitas terkelola tidak pernah ditukar dan tidak terpengaruh oleh pengaturan aplikasi yang menimpa ini.

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, meskipun pengaturan itu tidak muncul sebagai pengaturan slot.

Untuk mengonfigurasi pengaturan aplikasi atau string koneksi agar tetap menempel pada slot tertentu (tidak ditukar), buka halaman Konfigurasi untuk slot tersebut. Tambahkan atau edit pengaturan, lalu pilih pengaturan slot penyebaran. Memilih kotak centang ini memberi tahu App Service bahwa pengaturan tidak dapat ditukar.

A screenshot that shows how to configure an app setting as a slot setting in the Azure portal.

Penukaran dua slot

Anda dapat menukar slot penyebaran di halaman Slot penyebaran dan halaman Ringkasan aplikasi Anda. Untuk detail teknis tentang pertukaran slot, lihat Apa yang terjadi selama pertukaran.

Penting

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

Menukar slot penyebaran:

  1. Buka halaman Slot Penyebaran aplikasi Anda dan pilih Penukaran.

    A screenshot that shows how to initiate a swap operation in the portal.

    Kotak dialog Penukaran memperlihatkan pengaturan di slot sumber dan target yang dipilih yang akan diubah.

  2. Pilih slot Sumber dan Target yang diinginkan. Biasanya, targetnya adalah slot produksi. Selain itu, pilih tab Perubahan Sumber dan Perubahan Target dan verifikasi bahwa perubahan konfigurasi diharapkan. Setelah selesai, Anda dapat segera menukar slot dengan memilih Tukar.

    A screenshot that shows how to configure and complete a swap in the portal.

    Untuk melihat bagaimana slot target Anda akan berjalan dengan pengaturan baru sebelum pertukaran benar-benar terjadi, jangan pilih Tukar, tetapi ikuti petunjuk di Melakukan pertukaran dengan pratinjau.

  3. Bila sudah selesai, tutup kotak dialog dengan memilih Tutup.

Jika Anda memiliki masalah, lihat Memecahkan masalah pertukaran.

Melakukan pertukaran dengan pratinjau (pertukaran multi-fase)

Sebelum menukarkan ke produksi sebagai slot target, validasi bahwa aplikasi berjalan dengan pengaturan yang ditukar. Slot sumber juga disiapkan 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 penahapan sebelum menyelesaikan pertukaran.

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

Catatan

Pertukaran dengan pratinjau tidak dapat digunakan saat salah satu slot mengaktifkan autentikasi situs.

Untuk melakukan pertukaran dengan pratinjau:

  1. Ikuti langkah-langkah dalam Menukarkan slot penyebaran, tetapi pilih Lakukan pertukaran dengan pratinjau.

    A screenshot that shows how to configure a swap with preview in the portal.

    Kotak dialog memperlihatkan kepada Anda bagaimana konfigurasi di slot sumber berubah pada fase 1, dan bagaimana slot sumber dan target berubah pada fase 2.

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

    Saat fase 1 selesai, Anda akan diberi tahu dalam kotak dialog. Pratinjau pertukaran di slot sumber dengan membuka https://<app_name>-<source-slot-name>.azurewebsites.net.

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

    Untuk membatalkan pertukaran yang tertunda, pilih Batalkan Pertukaran , lalu pilih Batalkan Pertukaran di bagian bawah.

  4. Bila sudah selesai, tutup kotak dialog dengan memilih Tutup.

Jika Anda memiliki masalah, lihat Memecahkan masalah pertukaran.

Gulung balik 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

Catatan

Penukaran otomatis tidak didukung dalam aplikasi web di Linux dan Aplikasi Web for Kontainer.

Pertukaran otomatis menyederhanakan skenario Azure DevOps tempat Anda ingin menyebarkan aplikasi Anda terus menerus dengan nol awal dingin dan nol waktu henti untuk pelanggan aplikasi. Ketika pertukaran otomatis diaktifkan dari slot ke produksi, setiap kali Anda mendorong perubahan kode Anda ke slot itu, App Service secara otomatis menukar aplikasi ke produksi setelah disiapkan di slot sumber.

Catatan

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

Mengonfigurasi pertukaran otomatis:

  1. Buka halaman sumber daya aplikasi Anda. Pilih Slot penyebaran><slot sumber yang diinginkan>>Konfigurasi>Pengaturan umum.

  2. Untuk Pertukaran otomatis yang diaktifkan, pilih Aktif. Kemudian, pilih slot target yang diinginkan untuk Slot penyebaran pertukaran otomatis, dan pilih Simpan pada bilah perintah.

    A screenshot that shows how to configure auto swap into the production slot in the portal.

  3. Jalankan dorongan kode ke slot sumber. Pertukaran otomatis terjadi setelah beberapa saat, dan pembaruan tercermin pada URL slot target Anda.

Jika Anda memiliki masalah, lihat Memecahkan masalah pertukaran.

Tentukan pemanasan kustom

Beberapa aplikasi mungkin memerlukan tindakan pemanasan khusus sebelum pertukaran. Elemen konfigurasi applicationInitialization dalam web.config Anda menentukan tindakan inisialisasi kustom. Operasi pertukaran menunggu persiapan khusus ini selesai sebelum melakukan pertukaran dengan slot target. Berikut adalah sampel web.config fragmen.

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

Untuk informasi selengkapnya tentang menyesuaikan elemen applicationInitialization, lihat Kegagalan pertukaran slot penyebaran yang paling umum dan cara memperbaikinya.

Anda juga dapat menyesuaikan perilaku pemanasan dengan salah satu atau kedua 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 adalah 200,202. Jika kode status yang dikembalikan tidak ada dalam daftar, operasi penyiapan 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, /.

Catatan

Elemen konfigurasi <applicationInitialization> adalah bagian dari setiap start-up aplikasi, sedangkan dua pengaturan aplikasi perilaku penyiapan hanya berlaku untuk pertukaran slot.

Jika Anda memiliki masalah, lihat Memecahkan masalah pertukaran.

Memantau pertukaran

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

Di halaman sumber daya aplikasi Anda di portal, di panel kiri, pilih Log aktivitas.

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

Merutekan lalu lintas produksi secara otomatis

Secara default, semua permintaan klien ke URL produksi aplikasi (http://<app_name>.azurewebsites.net) 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.

Merutekan lalu lintas produksi secara otomatis:

  1. Buka halaman sumber daya aplikasi Anda dan pilih Slot penyebaran.

  2. Di kolom Lalu Lintas % dari slot yang ingin Anda tuju, tentukan persentase (antara 0 dan 100) untuk menunjukkan jumlah total lalu lintas yang ingin Anda rutekan. Pilih Simpan.

    A screenshot that shows how to route a percentage of request traffic to a deployment slot, in the portal.

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

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

Merutekan lalu lintas produksi secara manual

Selain perutean lalu lintas otomatis, App Service dapat merutekan permintaan ke slot tertentu. Ini berguna saat Anda ingin pengguna dapat ikut serta atau memilih keluar dari 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, itu dialihkan ke slot produksi. Setiap permintaan berikutnya memiliki cookie x-ms-routing-name=self yang menyematkan 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 default, slot baru diberikan aturan perutean 0%, ditunjukkan dalam 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. Tetapi mereka tidak akan diarahkan ke slot secara otomatis karena persentase perutean diatur ke 0. Ini adalah skenario lanjutan di mana Anda dapat "menyembunyikan" slot penahapan Anda dari publik sambil memungkinkan tim internal untuk menguji perubahan pada slot.

Menghapus slot

Cari dan pilih aplikasi Anda. Pilih Slot penyebaran><slot yang akan dihapus>>Gambaran umum. Jenis aplikasi ditampilkan sebagai App Service (Slot) untuk mengingatkan Anda bahwa Anda melihat slot penyebaran. Sebelum menghapus slot, pastikan untuk menghentikan slot dan mengatur lalu lintas di slot ke nol. Pilih Hapus pada bilah perintah.

A screenshot that shows how to delete a deployment slot in the portal.

Mengotomatiskan dengan templat Resource Manager

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

  • buildVersion: ini adalah properti string yang mewakili versi aplikasi saat ini yang disebarkan di slot. Misalnya: "v1", "1.0.0.1", atau "2019-09-20T11:53:25.2887393-07:00".
  • targetBuildVersion: ini adalah properti string yang menentukan apa buildVersion yang harus memiliki slot. targetBuildVersion Jika tidak sama dengan saat ini buildVersion, itu memicu operasi pertukaran dengan menemukan slot dengan yang ditentukan buildVersion.

Contoh templat Resource Manager

Templat Resource Manager berikut menukar dua slot dengan memperbarui buildVersionstaging slot dan mengatur targetBuildVersion pada slot produksi. Ini mengasumsikan Anda telah membuat 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 tidak bedemoten, yang berarti dapat dieksekusi berulang kali dan menghasilkan keadaan 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 ada kesalahan yang terjadi selama pertukaran slot, kesalahan tersebut akan masuk ke D:\home\LogFiles\eventlog.xml. Ini juga masuk ke log kesalahan khusus aplikasi.

Berikut adalah beberapa kesalahan pertukaran yang umum:

  • Permintaan HTTP ke akar aplikasi sudah 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.

  • Selama pemanasan kustom, 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 slot ditukar, aplikasi mungkin akan dihidupkan ulang dengan tidak terduga. Hal ini terjadi karena setelah pertukaran, konfigurasi pengikatan nama host tidak sinkron, yang dengan sendirinya tidak menyebabkan aplikasi dihidupkan ulang. Namun, peristiwa penyimpanan tertentu yang mendasarinya (seperti kegagalan volume penyimpanan) dapat mendeteksi perbedaan ini dan memaksa semua proses pekerja untuk memulai ulang. 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 berikutnya

Memblokir akses ke slot nonproduksi