Bosh sahifa Wiki Split-brain

Split-brain

Split-brain — distributed yoki high-availability tizimida ikki yoki undan ortiq tugun bir vaqtning o‘zida o‘zini authoritative primary deb hisoblab, mustaqil yozuv qabul qiladigan holat. Odatda network partition, noto‘g‘ri failover yoki ishlamagan fencing sabab yuz beradi va bir-biridan farqlanuvchi data histories hosil qiladi.

Paydo bo‘lishi

Primary bilan coordinator orasidagi aloqa uzilganda replicaprimary o‘ldi” deb promotion qilinishi mumkin. Asl primary esa clientlar bilan aloqani saqlab, yozishni davom ettiradi. Tarmoqning ikki tomonida xizmat tirik ko‘ringani uchun oddiy health check muammoni oldini olmaydi.

Split-brain oddiy replica lagdan farq qiladi. Lagda bitta write authority bor va replica o‘sha tarixni kechikib oladi. Split-brain holatida esa ikkita qarama-qarshi yangi tarix bor; ularni faqat log position katta ekaniga qarab xavfsiz birlashtirib bo‘lmaydi.

Quorum va lease

Majority quorum partitionning faqat ko‘pchilik tomoni leader saylashini ta’minlaydi. Eski leader quorumni yo‘qotganda write qabul qilishni to‘xtatishi kerak. Lease vaqtga tayanadi; clock va pause chegaralari noto‘g‘ri hisobga olinsa ikki lease qisqa vaqt ustma-ust kelishi mumkin.

Ikki tugunli clusterda teng bo‘linish xavfi yuqori. Uchinchi voter yoki witness ovoz beradi, ammo ma’lumot saqlamasa durability nusxasi hisoblanmaydi. Membership o‘zgarishlari ham consensus qoidasi bilan bajariladi.

Fencing

Fencing eski primaryning shared disk, network endpoint yoki client credentialdan foydalanishini majburan to‘sadi. STONITH tugunni o‘chirishi, storage reservationni bekor qilishi yoki generation token bilan eski yozuvlarni rad etishi mumkin. Faqat DNSni yangi primaryga yo‘naltirish yetarli emas, chunki eski connectionlar va boshqa clientlar qolishi mumkin.

Aniqlash va tiklash

Monitoring bir vaqt oralig‘ida bir nechta primary role, term yoki timeline ko‘rsa darhol alert beradi. Har writega leader epoch qo‘shish divergent yozuvlarni aniqlashni osonlashtiradi. Network tuzalgach ikki tomonni shunchaki ulash data conflictini yashiradi.

Tiklashda authoritative history tanlanadi, writes vaqtincha to‘xtatiladi va boshqa tugun undan resync qilinadi. Yo‘qoladigan tomondagi biznes yozuvlar audit log orqali alohida ko‘rib chiqiladi; order yoki paymentlarni avtomatik “last write wins” bilan birlashtirish xavfli. Keyin partition, election va fencingning nima uchun birga ishlamagani tahlil qilinadi.

Oldini olish sinovlari

Chaos test faqat primary processini o‘ldirish bilan cheklanmaydi. Primaryning client tarmog‘i saqlanib, quorum tarmog‘i uzilishi, coordinator pause bo‘lishi va storage fencing kechikishi alohida sinanadi. Eski primary quorumni yo‘qotgach belgilangan vaqt ichida read-only yoki offline holatga o‘tishi kuzatiladi.

Har leader term bilan yozilgan monoton fencing token storage qatlamida tekshirilsa eski termdagi requestlar rad etiladi. Bu network routing xatosiga qo‘shimcha himoya beradi. Manual force promotion eng xavfli operatsiyalardan biridir: operator boshqa primary haqiqatan to‘xtaganini tasdiqlaydi va qarorni audit qiladi. Avtomatik tizim ham noaniq holatda ikki tomonni ochish o‘rniga xavfsiz unavailable holatini tanlaydi.

Client ham eski primaryga uzoq connection saqlashi mumkin. Server write javobida termni qaytarsa topology-aware driver past termli javobni rad etadi. Message consumer va scheduled joblar ham leader lease bilan bog‘lanadi, aks holda database writes to‘xtasa-da tashqi side effect ikki marta bajarilishi mumkin.

Bog‘liq tushunchalar

Network partition, Quorum, Leader election, Fencing, STONITH, Failover, Consensus, Replica