Bayangkan Anda memiliki aplikasi web yang sukses yang menggunakan ASP.NET dan IIS 7. Ini menghasilkan banyak panggilan ke database SQL Server 2008, dan diharapkan akan tersedia untuk publik dengan 99,9% waktu aktif (downtime 8 jam, 45 menit per tahun).
Tujuan kami adalah:
- Instal Pembaruan Windows di server tanpa menyebabkan downtime untuk pelanggan kami
- Mencegah crash perangkat keras pada server dari memperlambat aplikasi ASP.NET karena batas waktu
Tidak seperti load-balancing aplikasi ASP.NET, load-balancing SQL tampaknya jauh lebih sulit. Apa praktik terbaik Anda untuk menyiapkan SQL Server 2008 R2 cluster sederhana yang seimbang untuk Micro-ISV yang menggunakan Microsoft stack?
.net
sql
sql-server
cache
load-balancing
Yakov-MIK
sumber
sumber
Jawaban:
Jika ketersediaan tinggi yang Anda butuhkan, maka Windows / SQL Server Clustering atau SQL Server Database Mirroring menawarkan solusi. Clustering memang membutuhkan banyak perencanaan dan pengenalan jika Anda belum pernah melakukannya sebelumnya, tetapi itu akan transparan untuk aplikasi.
Load balancing dimungkinkan dengan SQL Server, tetapi tidak untuk yang lemah hati. Ini adalah solusi yang menggunakan Windows Network Load Balancing (NLB) di depan SQL Server. SQL Server sendiri di NLB lebih mudah dikelola jika hanya baca, tetapi bisa dibaca-tulis jika Anda menggunakan replikasi transaksional dengan pelanggan yang dapat diperbarui. Jenis replikasi ini ditandai untuk penghentian dalam versi masa depan.
Satu kemungkinan terakhir adalah Scalable Shared Database, tetapi mereka pasti hanya-baca.
Lebih banyak membaca:
Lihat buku Apan Allan Hirt tentang SQL Server 2005 Ketersediaan Tinggi, dan Replikasi Pro SQL Server 2005/2008 dari Apress.
Basis data bersama yang scalable: http://technet.microsoft.com/en-us/library/ms345392.aspx
sumber
Sistem basis data relasional jarang memuat keseimbangan dengan cara yang sama seperti server web. Masalah dengan pendekatan klasik untuk load balancing adalah bahwa semua database Anda harus selalu dalam sinkronisasi. Model relasional tidak ada gunanya jika dua server tidak memiliki keadaan yang identik pada suatu titik waktu.
Dari pertanyaan Anda, sepertinya Anda bahkan tidak berusaha melakukan load balancing, yang terutama merupakan ukuran kinerja untuk memastikan bahwa hanya sebanyak mungkin pengguna yang memukul setiap server yang dapat ditangani oleh server tersebut. Sepertinya Anda menginginkan pengaturan ketersediaan tinggi . Karena Anda mengatakan bahwa Anda menggunakan SQL Server, saya akan mencari failovers. Ini berarti bahwa, jika basis data primer tidak tersedia, klien akan mencoba mengakses server failover. SQL Server menangani menjaga instance utama dan setiap failover dalam sinkronisasi dan juga menangani sinkronisasi ulang instance primer ke failover ketika primer kembali online dari offline.
sumber
Baiklah, ini dia. TIDAK BISA DILAKUKAN. Bukan tanpa perubahan aplikasi.
Sadarilah bahwa Anda masih perlu menghapus aplikasi untuk pemeliharaan ketika Anda menggunakan salinan baru / membuat perubahan skema db.
sumber
Sebuah jawaban yang hemat biaya di sini adalah cukup sering untuk buffer database dengan layanan aplikasi hosting server tier server seimbang komoditas murah yang menyediakan pemrosesan logika dan penyimpanan data yang jika tidak akan mengikat sumber daya database. Jelas ini memerlukan beberapa pemikiran tentang volatilitas data dan strategi caching.
sumber
Biarkan saya memberi Anda jawaban jurassic. Jika sasaran Anda termasuk "instal pembaruan Windows" Anda tidak bisa diselamatkan.
Saya memiliki abu-abu di janggut saya, dan dapat mengingat saat ketika sebuah aplikasi dapat berjalan 10 tahun tanpa harus menderita "pembaruan sistem operasi". Masa manfaat suatu aplikasi diukur dalam beberapa dekade, bukan tahun.
Jadi saran saya adalah ini: buat versi yang berfungsi dari aplikasi + database SQL Server Anda, dan ISOLASI SERVER DATABASE DARI PEMBARUAN MICROSOFT. Jika tidak rusak, jangan memperbaikinya.
Gunakan disk RAID hot-swappable.
Siapkan server database gambar cermin (sesuai saran TomTom) untuk berjaga-jaga seandainya perangkat keras Anda rusak.
sumber