Apakah "Selalu Aktif" tidak selalu "Selalu Aktif?"

8

Kami membuat Windows Failover Cluster, kemudian menambahkan dua contoh SQL Server sebagai node dari cluster failover SQL Server.

Kami mengatur server untuk menggunakan "Grup Ketersediaan AlwaysOn" di SQL Configuration Manager.

Untuk menguji failover, saya memuat dan menjalankan kueri yang panjang, kemudian membawa node aktif turun dengan menggunakan Failover Cluster Manager untuk menghentikan layanan cluster pada node aktif.

Permintaan terputus tanpa koneksi, dan server menunjukkan tidak tersedia selama sekitar 20 detik sebelum node dikuras dan node baru mengambil alih.

Apakah saya melakukan ini salah? Bagaimana seharusnya saya mengonfigurasi ini sehingga ada sedikit kehilangan konektivitas?

Apakah AlwaysOn tidak selalu aktif?

Dave Clary
sumber

Jawaban:

19

Anda memiliki banyak pertanyaan berbeda di sini.

T: Apa itu "Selalu Aktif"?

Microsoft menggunakan nama merek itu (yang ditulis tanpa spasi sebelum 2016) untuk menjelaskan dua fitur berbeda:

  • Failover Clustered Instances (FCIs) - apa yang biasa digunakan kakek Anda untuk memanggil kluster aktif / pasif
  • Ketersediaan Grup (AG) - seperti mirroring basis data, tetapi bekerja dengan kelompok basis data dalam beberapa kasus (tetapi tidak pada basis data sistem)

Gunakan istilah-istilah itu untuk menjelaskan fitur Selalu Aktif yang Anda gunakan.

T: Dalam failover, apakah akan selalu aktif?

Baik FCI maupun AG tidak selalu aktif. Selama failover, transaksi Anda yang berjalan akan gagal, dan coba lagi koneksi bisa gagal selama 5-60 detik (atau lebih). Terserah Anda untuk membangun logika coba ulang anggun di aplikasi Anda, atau membangun alat kemampuan terdegradasi seperti yang dilakukan Stack Overflow .

T: Bagaimana cara mengkonfigurasi Selalu Aktif?

Ini bervariasi secara dramatis berdasarkan:

  • Fitur AO mana yang Anda gunakan (FCI atau AG)
  • Jumlah node dalam cluster
  • Bagaimana Anda ingin menangani kuorum (pemungutan suara)
  • Apakah Anda menggunakan failover otomatis melalui pendengar atau nama komputer virtual

Ini adalah keputusan besar yang melibatkan banyak pekerjaan arsitektur. Untuk spesifikasi lebih rinci, sertakan detail di atas, dan kami akan dapat memberi tahu Anda lebih lanjut tentang cara mengonfigurasinya.

T: Bukankah ini hanya masalah mencentang kotak untuk Selalu Aktif?

Nggak.

Brent Ozar
sumber
3

Anda mungkin membingungkan AG "Selalu ON" (Grup yang Tersedia) dengan FCI (Mesin Virtual Failover Cluster), yang keduanya tergantung pada WSFC (Windows Server Failover Cluster).

Mengklik 'selalu aktif' tidak memastikan Anda sekarang memiliki konfigurasi AG. Anda harus menetapkan async, menyinkronkan, hanya baca / replika failover, menetapkan prioritas, dan mengambil pertimbangan lain seperti apakah aplikasi mendukung konfigurasi ini. Misalnya, aplikasi Anda mungkin menggunakan transaksi MSDTC lintas basis data, yang tidak didukung dan dapat menyebabkan korupsi yang tidak dapat dipulihkan yang memerlukan pemulihan cadangan.

Sekarang yang Anda alami adalah kegagalan FCI. Ini normal. Ini menghentikan layanan pada satu simpul, dan memulai layanan pada simpul lainnya. Ini berfungsi pada tingkat INSTANCE. Solusi AG adalah pengaturan per basis data dan layanan berjalan pada kedua node. SQL menggunakan API WSFC untuk menjaga data tetap sinkron di replika, dan basis data gagal ke replika itu; perhatikan bukan contohnya.

Anda mungkin ingin melakukan banyak pengujian pada ini sebelum digunakan untuk produksi.

Ali Razeghi
sumber
1

Metode pilihan saya untuk menguji failover di AG adalah dengan hanya memutuskan sambungan primer saat ini. Potong saja, matikan dari konsol, tarik jaringannya, bunuh layanan SQL dengan peluru perak, apa pun. Anda tidak boleh mengujinya dari dalam apa pun seperti GUI karena itu bukan cara kekacauan.

RelativitasSQL
sumber
Paling baik dilakukan tepat sebelum akhir tahun fiskal - Anda akan cenderung mendapatkan banyak orang yang membantu menguji sekunder dengan cara itu. Serius, Anda benar, meskipun ini setidaknya harus dilakukan sebelum sistem diproduksi. Dalam skenario terbaik, Anda akan beralih dari "Utama" ke "Sekunder" setiap kali Anda meningkatkan sistem, sehingga kedua sistem digunakan secara teratur (tetapi Anda harus memastikan perangkat keras, bandwidth, dll.) sebanding).
RDFozz
0

Jawaban wiki komunitas :

Ini adalah perilaku normal dan yang diharapkan untuk sebuah cluster.

Ini adalah tanggung jawab aplikasi untuk menangani pemutusan dengan anggun. Setiap transaksi dalam penerbangan akan hilang, karena hanya transaksi yang dilakukan yang direplikasi antar server.

user126897
sumber