HA dan penskalaan otomatis untuk aplikasi ASP.NET Web Forms AWS - AWS Bimbingan Preskriptif

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

HA dan penskalaan otomatis untuk aplikasi ASP.NET Web Forms AWS

Saat Anda memigrasikan aplikasi Formulir Web ASP.NET lama ke AWS, mencapai ketersediaan tinggi merupakan pertimbangan penting. Anda dapat menggunakan grup EC2 Auto Scaling Amazon dan penyeimbang beban untuk mendistribusikan lalu lintas di beberapa instans. EC2 Namun, banyak aplikasi Formulir Web ASP.NET sangat bergantung pada status sesi, yang membuatnya secara inheren stateful. Secara default, server menyimpan sesi yang dihasilkan IDs dalam memori dan mengirimkan ID kembali ke klien melalui cookie. Pendekatan ini menjadi bermasalah ketika Anda mencoba menjalankan aplikasi yang sama di beberapa EC2 instance, karena setiap instance mempertahankan status sesinya sendiri, yang menyebabkan pengalaman pengguna yang tidak konsisten dan potensi kehilangan data.

Untuk mengatasi tantangan ini dan memastikan bahwa aplikasi Formulir Web ASP.NET yang dimigrasi dapat menskalakan dengan mulus di beberapa instance sambil mempertahankan status sesi, Anda memiliki dua opsi utama: mengaktifkan sesi lengket atau menggunakan penyimpanan dukungan bersama.

Aktifkan sesi lengket untuk &ALB

Pada AWS, Anda dapat mengonfigurasi Application Load Balancers untuk menggunakan sesi lengket, juga dikenal sebagai afinitas sesi. Saat Anda mengaktifkan sesi lengket, Application Load Balancer merutekan permintaan berikutnya dari klien yang sama ke instance yang sama EC2 . Ini memastikan bahwa status sesi pengguna dipertahankan selama interaksi mereka dengan aplikasi.

Pendekatan ini memberikan solusi langsung tetapi memiliki keterbatasan dalam hal skalabilitas dan toleransi kesalahan. Jika EC2 instance gagal atau menjadi tidak tersedia, sesi lengket rusak, dan status sesi pengguna hilang. Selain itu, sesi lengket dapat menyebabkan distribusi beban yang tidak merata di seluruh instance dan berpotensi menyebabkan pertentangan sumber daya atau pemanfaatan yang kurang, yang membatasi kemampuan aplikasi untuk menskalakan secara efektif. Untuk alasan ini, kami menyarankan Anda menggunakan toko dukungan bersama untuk penyimpanan sesi sebagai gantinya.

Gunakan toko dukungan bersama untuk penyimpanan sesi

Pendekatan yang disarankan untuk memigrasikan aplikasi Formulir Web ASP.NET stateful AWS adalah dengan menggunakan penyimpanan dukungan bersama untuk penyimpanan sesi. Alih-alih mengandalkan status sesi dalam memori pada EC2 instance individual, aplikasi dapat menyimpan data sesi dalam solusi penyimpanan yang sangat tersedia dan dapat diskalakan, seperti Amazon DynamoDB, Amazon Relational Database Service (Amazon RDS) untuk SQL Server, atau Amazon (Redis OSS). ElastiCache

Saat Anda menggunakan penyimpanan cadangan bersama, Anda memisahkan status sesi dari EC2 instance individual sehingga aplikasi dapat menskalakan dengan mulus di beberapa instance tanpa kehilangan data sesi. Pendekatan ini juga meningkatkan toleransi kesalahan, karena data sesi tetap ada secara independen dari instance aplikasi, yang memastikan bahwa sesi pengguna tidak hilang bahkan jika instance gagal atau selama peristiwa penskalaan.

Untuk mengonfigurasi aplikasi Formulir Web ASP.NET Anda untuk menggunakan Redis sebagai penyimpanan dukungan bersama untuk penyimpanan sesi:

  1. Buat grup keamanan baru untuk cluster. Grup keamanan harus mengizinkan permintaan masuk ke Redis, yang menggunakan port TCP 6379.

  2. Luncurkan cluster Redis baru. Pastikan Anda menentukan grup keamanan yang Anda buat pada langkah pertama.

  3. Dapatkan alamat endpoint dari instance yang baru saja Anda buat. Anda harus menunggu beberapa menit hingga cluster diluncurkan sebelum alamat tersedia.

  4. Ubah web.config file dan tambahkan konfigurasi berikut:

    <sessionState mode="Custom" customProvider="RedisStateStore"> <providers> <add name="RedisStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider" host="[YourRedisClusterEndpoint]" accessKey="" ssl="true" /> </providers> </sessionState>

    Ganti [YourRedisClusterEndpoint] dengan nilai yang sesuai untuk cluster ElastiCache (Redis OSS) Anda.

Dengan menerapkan penyimpanan dukungan bersama untuk penyimpanan sesi, Anda dapat menyediakan aplikasi ASP.NET Web Formulir yang dimigrasi dengan ketersediaan tinggi, skalabilitas, dan toleransi kesalahan. AWS Pendekatan ini sejalan dengan praktik terbaik cloud-native dan memastikan pengalaman pengguna yang mulus, bahkan saat aplikasi Anda menskalakan beberapa EC2 instance atau Availability Zone. Selain itu, ini memberikan solusi yang lebih kuat dan andal daripada sesi lengket, dan memungkinkan aplikasi Anda memanfaatkan sepenuhnya skalabilitas dan ketahanan yang ditawarkan oleh infrastruktur. AWS