Kelompok dua nod - syaitan ada dalam butirannya

Hello, Habr! Saya membentangkan kepada anda terjemahan artikel "Dua Nod - Syaitan ada dalam Perincian" oleh Andrew Beekhof.

Ramai orang lebih suka kelompok dua nod kerana ia kelihatan lebih mudah dari segi konsep dan juga 33% lebih murah daripada rakan tiga nod mereka. Walaupun agak mungkin untuk menyusun kelompok dua nod yang baik, dalam kebanyakan kes, disebabkan senario yang tidak dipertimbangkan, konfigurasi sedemikian akan mewujudkan banyak masalah yang tidak jelas.

Langkah pertama untuk mencipta sistem ketersediaan tinggi adalah mencari dan cuba menghapuskan titik kegagalan individu, selalunya disingkat sebagai SPoF (titik kegagalan tunggal).

Perlu diingat bahawa adalah mustahil untuk menghapuskan semua kemungkinan risiko masa henti dalam mana-mana sistem. Ini berpunca daripada fakta bahawa pertahanan biasa terhadap risiko adalah dengan memperkenalkan beberapa redundansi, yang membawa kepada peningkatan kerumitan sistem dan kemunculan titik kegagalan baru. Oleh itu, kami pada mulanya membuat kompromi dan menumpukan pada peristiwa yang dikaitkan dengan titik kegagalan individu, dan bukan pada rantaian yang berkaitan dan, oleh itu, peristiwa yang semakin kurang berkemungkinan.

Memandangkan pertukaran, kami bukan sahaja mencari SPoF, tetapi juga mengimbangi risiko dan akibat, akibatnya kesimpulan tentang perkara yang kritikal dan tidak mungkin berbeza untuk setiap penggunaan.

Tidak semua orang memerlukan pembekal elektrik alternatif dengan talian kuasa bebas. Walaupun paranoia membuahkan hasil untuk sekurang-kurangnya seorang pelanggan apabila pemantauan mereka mengesan transformer yang rosak. Pelanggan membuat panggilan telefon cuba memaklumkan syarikat kuasa sehingga transformer yang rosak meletup.

Titik permulaan semula jadi ialah mempunyai lebih daripada satu nod dalam sistem. Walau bagaimanapun, sebelum sistem boleh memindahkan perkhidmatan ke nod yang masih hidup selepas kegagalan, ia secara amnya perlu memastikan bahawa perkhidmatan yang dipindahkan tidak aktif di tempat lain.

Tiada keburukan kepada kluster dua nod jika kegagalan mengakibatkan kedua-dua nod menyediakan tapak web statik yang sama. Walau bagaimanapun, perkara berubah jika keputusannya ialah kedua-dua pihak mengurus baris gilir kerja yang dikongsi secara bebas atau menyediakan akses tulis yang tidak diselaraskan kepada pangkalan data yang direplikasi atau sistem fail kongsi.

Oleh itu, untuk mengelakkan rasuah data akibat kegagalan nod tunggal - kami bergantung pada sesuatu yang dipanggil "dissosiasi" (pagar).

Prinsip pemisahan

Di tengah-tengah prinsip pemisahan ialah persoalan: bolehkah nod yang bersaing menyebabkan rasuah data? Sekiranya rasuah data adalah senario yang berkemungkinan, penyelesaian yang baik ialah mengasingkan nod daripada kedua-dua permintaan masuk dan storan berterusan. Pendekatan yang paling biasa untuk pemisahan adalah dengan memutuskan sambungan nod yang rosak.

Terdapat dua kategori kaedah pemisahan, yang akan saya panggil lurus ΠΈ tidak langsung, tetapi mereka boleh dipanggil sama aktif ΠΈ pasif. Kaedah langsung termasuk tindakan di pihak rakan sebaya yang masih hidup, seperti interaksi dengan peranti IPMI (Intelligent Platform Management Interface) atau iLO (mekanisme untuk mengurus pelayan tanpa akses fizikal kepada mereka), manakala kaedah tidak langsung bergantung pada peranti yang gagal. nod untuk entah bagaimana menyedari bahawa ia berada dalam keadaan tidak sihat (atau sekurang-kurangnya menghalang ahli lain daripada pulih) dan memberi isyarat pengawas perkakasan tentang keperluan untuk memutuskan sambungan nod yang gagal.

Kuorum membantu apabila menggunakan kedua-dua kaedah langsung dan tidak langsung.

Pemisahan langsung

Dalam kes pemisahan langsung, kita boleh menggunakan kuorum untuk mengelakkan perlumbaan pemisahan sekiranya berlaku kegagalan rangkaian.

Dengan konsep kuorum, terdapat maklumat yang mencukupi dalam sistem (walaupun tanpa menyambung kepada rakan sebayanya) untuk nod mengetahui secara automatik sama ada mereka harus memulakan pemisahan dan/atau pemulihan.

Tanpa kuorum, kedua-dua belah perpecahan rangkaian betul-betul akan menganggap bahawa pihak yang satu lagi sudah mati dan akan berusaha untuk memisahkan pihak yang satu lagi. Dalam kes yang paling teruk, kedua-dua pihak berjaya menutup keseluruhan kluster. Senario alternatif ialah deathmatch, gelung nod yang tidak berkesudahan yang bertelur, tidak melihat rakan sebaya mereka, but semula mereka dan memulakan pemulihan hanya untuk but semula apabila rakan sebaya mereka mengikut logik yang sama.

Masalah dengan penyahkaitan ialah peranti yang paling biasa digunakan menjadi tidak tersedia disebabkan oleh peristiwa kegagalan yang sama yang kami mahu sasarkan untuk pemulihan. Kebanyakan kad IPMI dan iLO dipasang pada hos yang mereka kawal dan, secara lalai, menggunakan rangkaian yang sama, yang menyebabkan hos sasaran percaya bahawa hos lain berada di luar talian.

Malangnya, ciri pengendalian peranti IPMI dan iLo jarang dipertimbangkan semasa pembelian peralatan.

Pemisahan tidak langsung

Kuorum juga penting untuk menguruskan pemisahan tidak langsung; jika dilakukan dengan betul, kuorum boleh membenarkan pemandiri untuk menganggap bahawa nod yang hilang akan beralih kepada keadaan selamat selepas tempoh masa tertentu.

Dengan konfigurasi ini, pemasa pengawas perkakasan ditetapkan semula setiap N saat jika kuorum tidak hilang. Jika pemasa (biasanya beberapa gandaan N) tamat tempoh, maka peranti akan melakukan kuasa yang tidak menyenangkan (bukan penutupan).

Pendekatan ini sangat berkesan, tetapi tanpa kuorum tidak ada maklumat yang mencukupi dalam kelompok untuk mengurusnya. Tidak mudah untuk membezakan antara gangguan rangkaian dan kegagalan nod rakan sebaya. Sebab ini penting ialah tanpa keupayaan untuk membezakan antara kedua-dua kes, anda terpaksa memilih tingkah laku yang sama dalam kedua-dua kes.

Masalah dengan memilih satu mod ialah tiada tindakan yang memaksimumkan ketersediaan dan menghalang kehilangan data.

  • Jika anda memilih untuk menganggap bahawa nod rakan sebaya aktif tetapi sebenarnya gagal, kluster akan menghentikan perkhidmatan yang akan berjalan secara tidak perlu untuk mengimbangi kehilangan perkhidmatan daripada nod rakan sebaya yang gagal.
  • Jika anda membuat keputusan untuk menganggap bahawa nod tidak berfungsi, tetapi ia hanyalah kegagalan rangkaian dan sebenarnya nod jauh berfungsi, maka sebaiknya anda mendaftar untuk beberapa penyesuaian manual masa hadapan bagi set data yang terhasil.

Tidak kira apa heuristik yang anda gunakan, adalah remeh untuk mencipta kegagalan yang sama ada akan menyebabkan kedua-dua belah pihak gagal atau menyebabkan kluster menutup nod yang masih hidup. Tidak menggunakan kuorum benar-benar menghilangkan kelompok salah satu alat yang paling berkuasa dalam senjatanya.

Jika tiada alternatif lain, pendekatan terbaik ialah mengorbankan ketersediaan (di sini penulis merujuk kepada teorem CAP). Ketersediaan tinggi data rosak tidak membantu sesiapa pun, dan menyelaraskan set data yang berbeza secara manual juga tidak menyeronokkan.

Kuorum

Kuorum kedengaran hebat, bukan?

Satu-satunya kelemahan ialah untuk memilikinya dalam kelompok dengan ahli N, anda perlu mempunyai sambungan antara N/2+1 nod anda yang tinggal. Yang tidak mungkin dalam kluster dua nod selepas satu nod gagal.

Yang akhirnya membawa kita kepada masalah asas dengan dua nod:
Kuorum tidak masuk akal dalam dua kluster nod, dan tanpanya adalah mustahil untuk menentukan dengan pasti tindakan yang memaksimumkan ketersediaan dan menghalang kehilangan data
Walaupun dalam sistem dua nod yang disambungkan oleh kabel silang, adalah mustahil untuk membezakan secara muktamad antara gangguan rangkaian dan kegagalan nod yang lain. Melumpuhkan satu hujung (kebarangkalian yang, sudah tentu, berkadar dengan jarak antara nod) akan mencukupi untuk membatalkan sebarang andaian bahawa kesihatan pautan adalah sama dengan kesihatan nod rakan kongsi.

Membuat kluster dua nod berfungsi

Kadangkala pelanggan tidak boleh atau tidak mahu membeli nod ketiga, dan kami terpaksa mencari alternatif.

Pilihan 1 - Kaedah pemisahan pendua

Peranti iLO atau IPMI nod mewakili titik kegagalan kerana, jika ia gagal, pemandiri tidak boleh menggunakannya untuk membawa nod ke keadaan selamat. Dalam kelompok 3 atau lebih nod, kita boleh mengurangkan ini dengan mengira kuorum dan menggunakan pengawas perkakasan (mekanisme pemisahan tidak langsung, seperti yang dibincangkan sebelum ini). Dalam kes dua nod, kita mesti menggunakan unit pengagihan kuasa rangkaian (PDU) sebaliknya.

Selepas kegagalan, mangsa yang terselamat mula-mula cuba menghubungi peranti pemisah utama (iLO tertanam atau IPMI). Jika ini berjaya, pemulihan berterusan seperti biasa. Hanya jika peranti iLO/IPMI gagal ialah PDU diakses; jika akses berjaya, pemulihan boleh diteruskan.

Pastikan anda meletakkan PDU pada rangkaian yang berbeza daripada trafik kluster, jika tidak, kegagalan rangkaian tunggal akan menyekat akses kepada kedua-dua peranti penyahkaitan dan menyekat pemulihan perkhidmatan.

Di sini anda mungkin bertanya - adakah PDU satu titik kegagalan? Yang mana jawapannya, sudah tentu begitu.

Jika risiko ini penting kepada anda, anda tidak bersendirian: sambungkan kedua-dua nod kepada dua PDU dan beritahu perisian pengelompokan untuk menggunakan kedua-duanya semasa menghidupkan dan mematikan nod. Kelompok kini kekal aktif jika satu PDU mati, dan kegagalan kedua sama ada PDU atau peranti IPMI yang lain akan diperlukan untuk menyekat pemulihan.

Pilihan 2 - Menambah Penimbangtara

Dalam sesetengah senario, walaupun kaedah pemisahan pendua secara teknikal mungkin, ia adalah sukar dari segi politik. Banyak syarikat suka mempunyai sedikit pemisahan antara pentadbir dan pemilik aplikasi, dan pentadbir rangkaian yang mementingkan keselamatan tidak sentiasa bersemangat untuk berkongsi tetapan akses PDU dengan sesiapa sahaja.

Dalam kes ini, alternatif yang disyorkan ialah mewujudkan pihak ketiga yang neutral yang boleh menambah pengiraan kuorum.

Sekiranya berlaku kegagalan, nod mesti dapat melihat gelombang udara rakan atau penimbang taranya untuk memulihkan perkhidmatan. Pengadil juga termasuk fungsi putus sambungan jika kedua-dua nod boleh melihat pengadil tetapi tidak boleh melihat satu sama lain.

Pilihan ini mesti digunakan bersama-sama dengan kaedah pemisahan tidak langsung, seperti pemasa pengawas perkakasan, yang dikonfigurasikan untuk mematikan mesin jika ia terputus sambungan kepada nod rakan setara dan penimbang taranya. Oleh itu, mangsa yang terselamat boleh mengandaikan dengan munasabah bahawa nod rakan sebayanya akan berada dalam keadaan selamat selepas pemasa pengawas perkakasan tamat tempoh.

Perbezaan praktikal antara penimbang tara dan nod ketiga ialah penimbang tara memerlukan sumber yang jauh lebih sedikit untuk beroperasi dan berpotensi boleh berkhidmat lebih daripada satu kluster.

Pilihan 3 - Faktor manusia

Pendekatan terakhir adalah untuk pemandiri untuk terus menjalankan apa-apa perkhidmatan yang telah mereka jalankan, tetapi tidak memulakan perkhidmatan baharu sehingga sama ada masalah itu selesai dengan sendirinya (pemulihan rangkaian, but semula nod) atau seseorang bertanggungjawab untuk mengesahkan secara manual bahawa pihak lain sudah mati.

Pilihan bonus

Adakah saya menyebut anda boleh menambah nod ketiga?

Dua rak

Demi hujah, mari kita berpura-pura bahawa saya telah meyakinkan anda tentang kebaikan nod ketiga, sekarang kita mesti mempertimbangkan susunan fizikal nod. Jika ia ditempatkan (dan dikuasakan) dalam rak yang sama, ini juga membentuk SPoF, dan rak yang tidak boleh diselesaikan dengan menambah rak kedua.

Jika ini mengejutkan, pertimbangkan apa yang akan berlaku jika rak dengan dua nod gagal, dan bagaimana nod yang masih hidup akan membezakan antara itu dan kegagalan rangkaian.

Jawapan ringkasnya ialah ia tidak mungkin, dan sekali lagi kita sedang menangani semua masalah dalam kes dua nod. Atau yang terselamat:

  • mengabaikan kuorum dan secara salah cuba untuk memulakan pemulihan semasa gangguan rangkaian (keupayaan untuk menyelesaikan pemisahan adalah cerita yang berbeza dan bergantung pada sama ada PDU terlibat dan sama ada mereka berkongsi kuasa dengan mana-mana rak), atau
  • menghormati kuorum dan memutuskan sambungan dirinya lebih awal apabila nod rakan sebayanya gagal

Walau apa pun, dua rak tidak lebih baik daripada satu, dan nod mesti sama ada menerima bekalan kuasa bebas atau diedarkan pada tiga (atau lebih, bergantung pada bilangan nod yang anda ada) rak.

Dua pusat data

Pada ketika ini, pembaca yang tidak lagi mengelak risiko mungkin ingin mempertimbangkan pemulihan bencana. Apakah yang berlaku apabila asteroid mencecah pusat data yang sama dengan tiga nod kami tersebar di tiga rak berbeza? Jelas sekali Perkara Buruk, tetapi bergantung pada keperluan anda, menambah pusat data kedua mungkin tidak mencukupi.

Jika dilakukan dengan betul, pusat data kedua memberikan anda (dan semunasabahnya) salinan perkhidmatan anda dan datanya yang terkini dan konsisten. Walau bagaimanapun, seperti dalam senario dua nod, dua rak, tidak ada maklumat yang mencukupi dalam sistem untuk memastikan ketersediaan maksimum dan mencegah rasuah (atau percanggahan set data). Walaupun dengan tiga nod (atau rak), mengedarkannya merentasi hanya dua pusat data menyebabkan sistem tidak dapat membuat keputusan yang tepat dengan pasti sekiranya berlaku peristiwa (kini lebih berkemungkinan) yang kedua-dua pihak tidak dapat berkomunikasi.

Ini tidak bermakna penyelesaian pusat data dwi tidak sesuai. Syarikat selalunya mahu seseorang sedar sebelum mengambil langkah luar biasa untuk berpindah ke pusat data sandaran. Perlu diingat bahawa jika anda ingin mengautomasikan gangguan, anda sama ada memerlukan pusat data ketiga untuk kuorum untuk memahami (sama ada secara langsung atau melalui penimbang tara), atau anda akan mencari cara untuk menutup keseluruhan data dengan pasti pusat.

Sumber: www.habr.com

Tambah komen