Menghosting ASP.NET Core di farm web
Catatan
Ini bukan versi terbaru dari artikel ini. Untuk rilis saat ini, lihat versi .NET 9 dari artikel ini.
Peringatan
Versi ASP.NET Core ini tidak lagi didukung. Untuk informasi selengkapnya, lihat Kebijakan Dukungan .NET dan .NET Core. Untuk rilis saat ini, lihat versi .NET 8 dari artikel ini.
Penting
Informasi ini berkaitan dengan produk pra-rilis yang mungkin dimodifikasi secara substansial sebelum dirilis secara komersial. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Untuk rilis saat ini, lihat versi .NET 9 dari artikel ini.
Oleh Chris Ross
Farm web adalah sekelompok dua atau beberapa server web (atau simpul) yang menghosting beberapa instans aplikasi. Ketika permintaan dari pengguna tiba ke farm web, load balancer mendistribusikan permintaan ke simpul farm web. Farm web meningkat:
- Keandalan/ketersediaan: Ketika satu atau beberapa simpul gagal, penyeimbang beban dapat merutekan permintaan ke simpul lain yang berfungsi untuk terus memproses permintaan.
- Kapasitas/performa: Beberapa simpul dapat memproses lebih banyak permintaan daripada satu server. Load balancer menyeimbangkan beban kerja dengan mendistribusikan permintaan ke simpul.
- Skalabilitas: Ketika kapasitas lebih atau kurang diperlukan, jumlah simpul aktif dapat ditingkatkan atau dikurangi agar sesuai dengan beban kerja. Teknologi platform farm web, seperti Azure App Service, dapat secara otomatis menambahkan atau menghapus simpul atas permintaan administrator sistem atau secara otomatis tanpa intervensi manusia.
- Ketahanan: Simpul farm web dapat mengandalkan sekumpulan layanan bersama, yang menghasilkan manajemen sistem yang lebih mudah. Misalnya, simpul farm web dapat mengandalkan satu server database dan lokasi jaringan umum untuk sumber daya statis, seperti gambar dan file yang dapat diunduh.
Topik ini menjelaskan konfigurasi dan dependensi untuk aplikasi inti ASP.NET yang dihosting di farm web yang mengandalkan sumber daya bersama.
Konfigurasi umum
Host dan terapkan ASP.NET Core
Pelajari cara menyiapkan lingkungan hosting dan menyebarkan aplikasi ASP.NET Core. Konfigurasikan manajer proses pada setiap simpul farm web untuk mengotomatiskan aplikasi dimulai dan dimulai ulang. Setiap simpul memerlukan runtime ASP.NET Core. Untuk informasi selengkapnya, lihat topik di area Host dan sebarkan dokumentasi.
Konfigurasikan ASP.NET Core agar berfungsi dengan server proksi dan penyeimbang beban
Pelajari tentang konfigurasi untuk aplikasi yang dihosting di belakang server proksi dan load balancer, yang sering mengaburkan informasi permintaan penting.
Menyebarkan aplikasi ASP.NET Core ke Azure App Service
Azure App Service adalah layanan platform komputasi cloud Microsoft untuk menghosting aplikasi web, termasuk ASP.NET Core. App Service adalah platform terkelola penuh yang menyediakan penskalaan otomatis, penyeimbangan beban, patching, dan penyebaran berkelanjutan.
Data aplikasi
Saat aplikasi diskalakan ke beberapa instans, mungkin ada status aplikasi yang memerlukan berbagi di seluruh simpul. Jika status sementara, pertimbangkan untuk berbagi IDistributedCache. Jika status bersama memerlukan persistensi, pertimbangkan untuk menyimpan status bersama dalam database.
Konfigurasi yang diperlukan
Perlindungan Data dan Penembolokan memerlukan konfigurasi untuk aplikasi yang disebarkan ke farm web.
Perlindungan Data
Sistem ASP.NET Core Data Protection digunakan oleh aplikasi untuk melindungi data. Perlindungan Data bergantung pada sekumpulan kunci kriptografi yang disimpan dalam cincin kunci. Saat sistem Perlindungan Data diinisialisasi, sistem tersebut menerapkan pengaturan default yang menyimpan cincin kunci secara lokal. Di bawah konfigurasi default, cincin kunci unik disimpan di setiap simpul farm web. Akibatnya, setiap simpul farm web tidak dapat mendekripsi data yang dienkripsi oleh aplikasi pada simpul lain. Konfigurasi default umumnya tidak sesuai untuk menghosting aplikasi di farm web. Alternatif untuk menerapkan cincin kunci bersama adalah selalu merutekan permintaan pengguna ke simpul yang sama. Untuk informasi selengkapnya tentang konfigurasi sistem Perlindungan Data untuk penyebaran farm web, lihat Mengonfigurasi ASP.NET Perlindungan Data Inti.
penembolokan
Di lingkungan farm web, mekanisme penembolokan harus berbagi item yang di-cache di seluruh simpul farm web. Penembolokan harus mengandalkan cache Redis umum, database SQL Server bersama, atau implementasi penembolokan kustom yang berbagi item yang di-cache di seluruh farm web. Untuk informasi selengkapnya, lihat Penembolokan terdistribusi di ASP.NET Core.
Komponen dependen
Skenario berikut tidak memerlukan konfigurasi tambahan, tetapi bergantung pada teknologi yang memerlukan konfigurasi untuk farm web.
Skenario | Bergantung pada |
---|---|
Autentikasi | Perlindungan Data (lihat Mengonfigurasi ASP.NET Perlindungan Data Inti). Untuk informasi selengkapnya, lihat Menggunakan cookie autentikasi tanpa ASP.NET cookie autentikasi Core Identity dan Berbagi di antara aplikasi ASP.NET. |
Identity | Konfigurasi autentikasi dan database. Untuk informasi selengkapnya, lihat Pengantar Identity ASP.NET Core. |
Sesi | Perlindungan Data (cookie terenkripsi) (lihat Mengonfigurasi ASP.NET Perlindungan Data Inti) dan Penembolokan (lihat Penembolokan terdistribusi di ASP.NET Core). Untuk informasi selengkapnya, lihat Manajemen sesi dan status: Status sesi. |
TempData | Perlindungan Data (cookie terenkripsi) (lihat Mengonfigurasi ASP.NET Perlindungan Data Inti) atau Sesi (lihat Manajemen sesi dan status: Status sesi). Untuk informasi selengkapnya, lihat Manajemen sesi dan status: TempData. |
Antiforgery | Perlindungan Data (lihat Mengonfigurasi ASP.NET Perlindungan Data Inti). Untuk informasi selengkapnya, lihat Mencegah serangan Pemalsuan Permintaan Antar Situs (XSRF/CSRF) di ASP.NET Core. |
Pecahkan masalah
Perlindungan dan penembolokan Data
Saat Perlindungan Data atau penembolokan tidak dikonfigurasi untuk lingkungan farm web, kesalahan terputus-terputus terjadi saat permintaan diproses. Ini terjadi karena simpul tidak berbagi sumber daya yang sama dan permintaan pengguna tidak selalu dirutekan kembali ke simpul yang sama.
Pertimbangkan pengguna yang masuk ke aplikasi menggunakan cookie autentikasi. Pengguna masuk ke aplikasi di satu simpul farm web. Jika permintaan berikutnya tiba di node yang sama tempat mereka masuk, aplikasi dapat mendekripsi autentikasi cookie dan memungkinkan akses ke sumber daya aplikasi. Jika permintaan mereka berikutnya tiba di node yang berbeda, aplikasi tidak dapat mendekripsi autentikasi cookie dari simpul tempat pengguna masuk, dan otorisasi untuk sumber daya yang diminta gagal.
Ketika salah satu gejala berikut terjadi secara terputus-putus, masalah biasanya ditelusuri ke Perlindungan Data atau konfigurasi penembolokan yang tidak tepat untuk lingkungan farm web:
- Pemutus autentikasi: Autentikasi cookie salah dikonfigurasi atau tidak dapat didekripsi. Login OAuth (Facebook, Microsoft, Twitter) atau OpenIdConnect gagal dengan kesalahan "Korelasi gagal."
- Pemutusan otorisasi: Identity hilang.
- Status sesi kehilangan data.
- Item yang di-cache menghilang.
- TempData gagal.
- POS Gagal: Pemeriksaan antiforgery gagal.
Untuk informasi selengkapnya tentang konfigurasi Perlindungan Data untuk penyebaran farm web, lihat Mengonfigurasi ASP.NET Perlindungan Data Inti. Untuk informasi selengkapnya tentang konfigurasi penembolokan untuk penyebaran farm web, lihat Penembolokan terdistribusi di ASP.NET Core.
Mendapatkan data dari aplikasi
Jika aplikasi farm web mampu merespons permintaan, dapatkan permintaan, koneksi, dan data tambahan dari aplikasi menggunakan middleware sebaris terminal. Untuk informasi selengkapnya dan kode sampel, lihat Memecahkan masalah dan men-debug proyek ASP.NET Core.
Sumber Daya Tambahan:
- Ekstensi Skrip Kustom untuk Windows: Mengunduh dan menjalankan skrip di komputer virtual Azure, yang berguna untuk konfigurasi pasca-penyebaran dan penginstalan perangkat lunak.
- Konfigurasikan ASP.NET Core agar berfungsi dengan server proksi dan penyeimbang beban
ASP.NET Core