Peningkatan aplikasi Service Fabric
Aplikasi Azure Service Fabric adalah kumpulan layanan. Selama peningkatan, Service Fabric membandingkan manifes aplikasi baru dengan versi sebelumnya dan menentukan layanan mana dalam aplikasi yang memerlukan pembaruan. Service Fabric membandingkan versi dalam manifes layanan dengan versi di versi sebelumnya. Jika versi layanan tidak berubah, layanan tersebut tidak akan ditingkatkan.
Catatan
ApplicationParameters tidak dipertahankan di seluruh peningkatan aplikasi. Untuk mempertahankan parameter aplikasi saat ini, pengguna harus mendapatkan parameter terlebih dahulu dan meneruskannya ke panggilan API peningkatan seperti di bawah ini:
$myApplication = Get-ServiceFabricApplication -ApplicationName fabric:/myApplication
$appParamCollection = $myApplication.ApplicationParameters
$applicationParameterMap = @{}
foreach ($pair in $appParamCollection)
{
$applicationParameterMap.Add($pair.Name, $pair.Value);
}
Start-ServiceFabricApplicationUpgrade -ApplicationName fabric:/myApplication -ApplicationTypeVersion 2.0.0 -ApplicationParameter $applicationParameterMap -Monitored -FailureAction Rollback
Ringkasan peningkatan bergulir
Dalam peningkatan aplikasi bergulir, peningkatan dilakukan secara bertahap. Pada setiap tahap, peningkatan diterapkan ke subset node dalam kluster, yang disebut domain pembaruan. Akibatnya, aplikasi tetap tersedia di seluruh peningkatan. Selama peningkatan, kluster mungkin berisi campuran versi lama dan baru.
Karena itulah, kedua versi harus kompatibel maju dan mundur. Jika tidak kompatibel, administrator aplikasi bertanggung jawab untuk pentahapan peningkatan beberapa fase untuk menjaga ketersediaan. Dalam peningkatan beberapa fase, langkah pertama adalah meningkatkan ke versi menengah aplikasi yang kompatibel dengan versi sebelumnya. Langkah kedua adalah meningkatkan versi final yang memutus kompatibilitas dengan versi pra-pembaruan, tetapi kompatibel dengan versi menengah.
Domain pembaruan ditentukan dalam manifes kluster saat Anda mengonfigurasi kluster. Domain pembaruan tidak menerima pembaruan dalam urutan tertentu. Domain pembaruan adalah unit penyebaran logis untuk aplikasi. Domain pembaruan memungkinkan layanan tetap pada ketersediaan tinggi selama peningkatan.
Peningkatan non-bergulir bisa dilakukan jika peningkatan diterapkan ke semua node dalam kluster, yang merupakan kasus ketika aplikasi hanya memiliki satu domain pembaruan. Pendekatan ini tidak disarankan, karena layanan menjadi tidak berfungsi dan tidak tersedia pada saat peningkatan. Selain itu, Azure tidak memberikan jaminan apa pun saat kluster disiapkan hanya dengan satu domain pembaruan.
Setelah peningkatan selesai, semua layanan dan replika (instans) akan tetap dalam versi yang sama yaitu, jika peningkatan berhasil, layanan dan instans akan diperbarui ke versi baru; jika peningkatan gagal dan digulung balik, layanan dan instans akan digulung balik ke versi lama.
Pemeriksaan kondisi selama peningkatan
Untuk peningkatan, kebijakan kondisi harus ditetapkan (atau nilai default dapat digunakan). Peningkatan disebut berhasil ketika semua domain pembaruan ditingkatkan dalam waktu habis yang ditentukan, dan ketika semua domain pembaruan dianggap baik. Domain pembaruan kondisi baik berarti bahwa domain pembaruan melewati semua pemeriksaan kondisi yang ditentukan dalam kebijakan kondisi. Misalnya, kebijakan kondisi dapat mengamanatkan bahwa semua layanan dalam instans aplikasi harus baik, karena kondisi ditentukan oleh Service Fabric.
Kebijakan dan pemeriksaan kondisi selama peningkatan oleh Service Fabric adalah agnostik layanan dan aplikasi. Artinya, tidak ada tes khusus layanan yang dilakukan. Misalnya, layanan Anda mungkin memiliki persyaratan throughput, tetapi Service Fabric tidak memiliki informasi untuk memeriksa throughput. Lihat artikel kondisi untuk pemeriksaan yang dilakukan. Pemeriksaan yang terjadi selama peningkatan mencakup pengujian apakah paket aplikasi disalin dengan benar, apakah instans dimulai, dan sebagainya.
Kondisi aplikasi adalah agregasi entitas anak dari aplikasi. Singkatnya, Service Fabric mengevaluasi kondisi aplikasi melalui kondisi yang dilaporkan pada aplikasi. Ini juga mengevaluasi kondisi semua layanan untuk aplikasi dengan cara ini. Service Fabric selanjutnya mengevaluasi kondisi layanan aplikasi dengan menggabungkan kondisi elemen anaknya, seperti replika layanan. Setelah kebijakan kondisi aplikasi dipenuhi, peningkatan dapat dilanjutkan. Jika kebijakan kondisi dilanggar, peningkatan aplikasi gagal.
Mode peningkatan
Mode yang kami rekomendasikan untuk peningkatan aplikasi adalah mode yang dipantau, yang merupakan mode yang umum digunakan. Mode yang dipantau melakukan peningkatan pada satu domain pembaruan, dan jika semua pemeriksaan kondisi lulus (sesuai kebijakan yang ditentukan), beralih ke domain pembaruan berikutnya secara otomatis. Jika pemeriksaan kondisi gagal dan/atau waktu habis tercapai, peningkatan akan digulung balik untuk domain pembaruan, atau mode diubah ke manual yang tidak dipantau. Anda dapat mengonfigurasi peningkatan untuk memilih salah satu dari dua mode tersebut untuk peningkatan yang gagal.
Mode manual yang tidak dipantau memerlukan intervensi manual setelah setiap peningkatan pada domain pembaruan, untuk memulai peningkatan pada domain pembaruan berikutnya. Tidak ada pemeriksaan kondisi Service Fabric yang dilakukan. Administrator melakukan pemeriksaan kondisi atau status sebelum memulai peningkatan di domain pembaruan berikutnya.
Meningkatkan layanan default
Beberapa parameter layanan default yang ditentukan dalam manifes aplikasi juga dapat ditingkatkan sebagai bagian dari peningkatan aplikasi. Hanya parameter layanan yang mendukung perubahan melalui Update-ServiceFabricService yang dapat diubah sebagai bagian dari peningkatan. Perilaku mengubah layanan default selama peningkatan aplikasi adalah sebagai berikut:
- Layanan default dalam manifes aplikasi baru yang belum ada di kluster dibuat.
- Layanan default yang ada di manifes aplikasi sebelumnya dan baru diperbarui. Parameter layanan default dalam manifes aplikasi baru menimpa parameter layanan yang ada. Peningkatan aplikasi akan diputar kembali secara otomatis jika pembaruan layanan default gagal.
- Layanan default yang tidak ada di manifes aplikasi baru akan dihapus jika ada di kluster. Perhatikan bahwa menghapus layanan default akan mengakibatkan penghapusan semua status layanan tersebut dan tidak dapat dibatalkan.
Ketika peningkatan aplikasi digulung balik, parameter layanan default dikembalikan ke nilai lamanya sebelum peningkatan dimulai tetapi layanan yang dihapus tidak dapat dibuat ulang dengan keadaan lamanya.
Tip
Pengaturan konfigurasi kluster EnableDefaultServicesUpgrade harus benar untuk mengaktifkan aturan 2) dan 3) di atas (pembaruan dan penghapusan layanan default). Fitur ini didukung mulai dari Service Fabric versi 5.5.
Meningkatkan beberapa aplikasi dengan titik akhir HTTPS
Anda harus berhati-hati untuk tidak menggunakan port yang sama untuk berbagai instans aplikasi yang sama saat menggunakan HTTPS. Alasannya adalah bahwa Service Fabric tidak akan dapat meningkatkan sertifikasi untuk salah satu instans aplikasi. Misalnya, jika aplikasi 1 atau aplikasi 2 ingin meningkatkan sertifikat 1 ke sertifikat 2. Ketika peningkatan terjadi, Service Fabric mungkin telah menghapus pendaftaran sertifikat 1 dengan http.sys meskipun aplikasi lain masih menggunakannya. Untuk mencegah hal ini, Service Fabric mendeteksi bahwa sudah ada instans aplikasi lain yang terdaftar di port dengan sertifikat (karena http.sys) dan gagal operasi.
Oleh karena itu, Service Fabric tidak mendukung peningkatan dua layanan yang berbeda menggunakan port yang sama dalam instans aplikasi yang berbeda. Dengan kata lain, Anda tidak dapat menggunakan sertifikat yang sama pada layanan yang berbeda pada port yang sama. Jika Anda perlu memiliki sertifikat bersama pada port yang sama, Anda perlu memastikan bahwa layanan ditempatkan pada komputer yang berbeda dengan batasan penempatan. Atau pertimbangkan untuk menggunakan port dinamis Service Fabric jika memungkinkan untuk setiap layanan di setiap instans aplikasi.
Jika Anda melihat peningkatan gagal dengan https, peringatan kesalahan yang mengatakan "Windows HTTP Server API tidak mendukung beberapa sertifikat untuk aplikasi yang berbagi port.”
Diagram alur peningkatan aplikasi
Diagram alur mengikuti paragraf ini dapat membantu Anda memahami proses peningkatan aplikasi Service Fabric. Secara khusus, alur ini menjelaskan bagaimana waktu habis, termasuk HealthCheckStableDuration, HealthCheckRetryTimeout, dan UpgradeHealthCheckInterval, membantu mengontrol kapan peningkatan dalam satu domain pembaruan dianggap sukses atau gagal.
Langkah berikutnya
Meningkatkan Aplikasi Anda Menggunakan Visual Studio memandu Anda melalui peningkatan aplikasi menggunakan Visual Studio.
Meningkatkan Aplikasi Anda Menggunakan PowerShell memandu Anda melalui peningkatan aplikasi menggunakan PowerShell.
Kontrol cara aplikasi ditingkatkan menggunakan Parameter Peningkatan.
Buat agar peningkatan aplikasi Anda kompatibel dengan mempelajari cara menggunakan Serialisasi Data.
Pelajari cara menggunakan fungsionalitas lanjutan saat meningkatkan aplikasi dengan merujuk ke Topik Lanjutan.
Perbaiki masalah umum dalam peningkatan aplikasi dengan mengacu pada langkah-langkah dalam Pemecahan Masalah Peningkatan Aplikasi.