Başarısızlık mekanizmaları, kritik altyapıyı destekleyen işletim sistemlerinde güvenilirlik mühendisliği temel taşıdır. Bir bulut tabanlı mikro hizmet kümesini yönetmek, gerçek zamanlı endüstriyel bir kontrol cihazı veya bir e-ticaret platformu için geri dönüş, kesintisiz olarak devre dışı bırakmak için gerekli olan bir bileşenden, hizmet sürekliliği sağlamak için gerekli olan bir sistemden transfer işlemleri yapabilmek.Bu makale, tasarım, dağıtma, dağıtma ve test odaklı bir kılavuzluk mekanizmaları özellikle mühendislik işletim sistemleri içinde - zaman gereksinimlerinin belirli olmayan ortamlardaki kullanım koşulları farklı değildir.

Core Concepts: Mechanisms Aslında Ne Başarısızlık

En basitinde, başarısız bir mekanizma, aktif bir bileşende başarısız olan bir süreçtir (hardware, yazılım veya ağ) ve yeniden konumlanan işlemleri kırmızıdan çıkarmalı, önceden yapılandırılan bir takımla birlikte sağlar. Hedef, son kullanıcıların veya alt sistemlerden başarısız olurken, devreleri tutmak için otomatik bir süreçtir. Başarısızlık yüksek maliyetli (HA) kümelemeden farklıdır.

Başarısızlık, bir işletim sistemi ortamında birden çok katmanda meydana gelebilir:

  • [FONT=0)Hardware seviyesi:[Dönetici:[Dönetici:[Dönetici:0) RAID kontrolörleri, redüpt güç malzemeleri, NIC takımlama ve disk tüm donanım seviyesindeki tüm şarjı AG'ye şeffaf hale getirir.
  • [FONT=0)OS seviyesi:[[Dönetici: [Dönetici:0) İşletim sistemi kümeleme hizmetleri (örneğin Windows Server Failover Cluster, Linux Pacemaker) tüm sanal IP'lerin, hizmetlerin veya örneklerin başarısızlığını yönetiyor.
  • [FONT=0)Uygulama seviyesi:[Dönetici ve veritabanı (PostgreSQL with Patroni, Natasha InnoDB Cluster) veritabanı önlerinden sorumlu tutmaktadır.
  • [FONT=0)Network seviyesi:[Dönetici:[Dönetici:0) Yük dengesi (HAProxy, NGINX Plus) ve routing protokolleri (VRRP, CARP) ağ-katlı başarısız sağlar.

Aktif-Passive vs. Active-Active Failover

İki birincil dağıtım modelini anlamak uygulamadan önce kritiktir.

[FONT:0]Active-Passive (Standby):[Dönetici: 1) Bir kimse, ikinci bir düğümün boş kalmasıyla birlikte, aktif node’lar ile senkronize edilmesi, pasif node aktif hale gelir ve devralınması daha basit değildir.

[FONT:0)Active-Active:[Dönetici:[Dönetici: 0,2) Her iki (veya hepsi) düğümler aynı anda trafikle çalışır, yükü paylaşır.Eğer bir başarısız olursa, kalan düğümler payını absorbe eder. Bu model aktif-aktif topolojiler kullanır.

Kalp ve Split-Brain Önleme

Tüm başarısız sistemler bir ağ bağlantısı veya hizmet ağı üzerinden düğümler arasında paylaşılan bir dizi aralığın kaybedilmesi durumunda, kritik bir başarısızlık modu - aktif ve standby düğümleri arasında bir değişim yapılır.Eğer iki düğümün de aktif olmaya çalıştığı, veri yolsuzluk veya kaynak çatışmaları için de kaybedilmesi durumunda.

  • [[Döneticileri:[Döneticiler:[Dönetici:0)) Üçüncü bir düğüm veya paylaşılan bir disk (SCSI rezervasyon) bu, bir kravat olarak hareket eden.
  • [FONT=0)) (STONITH): ) “Başka Node In The Head” (Başka Node In The Head) – başarısız düğümün fiziksel veya mantıksal olarak izole edilmesi (güç, disk bariyer) önce.
  • [FONT:0) Çok fazla kalp atışları:[Döneme:[Dönlenme yolları:[Dönlenmedik: 1 ) Tek bir kablo molası nedeniyle yanlış başarısızlık tespitinden kaçınmak için Kızıldant ağ bağlantıları.

Mühendislik İşletim Sistemleri için Başarısızlık

Mühendislik işletim sistemleri – gerçek zamanlı işletim sistemleri (RTOS), Linux veya sertleştirilmiş Windows IoT – benzersiz kısıtlamalar getiriyor: determinist zamanlama, sınırlı kaynaklar ve genellikle bu ortamlar için başarısız olan insan operatörü değildir.

RTOS ve gömülü sistemler için kırmızı makyaj kalıpları

Güvenlik-kahktik sistemler (akustik, otomotiv, tıbbi cihazlar), başarısız olan çoğu zaman DO-178C veya ISO 26262 gibi standartlar tarafından görevlendirilmiştir.

  • [FONT=0]Lockstep Processifiers:[Döneticiler:[Döneticiler aynı talimatları aynı anda gerçekleştirir; bir kotatör, bir hatayı fark eder ve sinyalleri bir hata yapar.
  • [FONT:0)Triple modüler Reddancy (TMR):), Üç sistem paralel olarak çalışır; çoğunluk oylamacı çıktıyı belirler.Eğer bir başarısız olursa, sistem kesinti olmadan devam eder.
  • [FONT:0)Warm devlet senkronizasyonu ile öne çıkıyor: ikincil bir RTOS örneği, periyodik devlet kontrol noktaları (örneğin, MILS ayrılık çekirdekten) ve en az geç olmadan yeniden yürütmeye devam edebilir.

gömülü Linux sistemleri (örneğin, Yocto Project, Buildroot), başarısızover bir kombinasyon kullanarak uygulanabilir:

  • [FONT=0)Watchdog zamanırs (hardware veya yazılım) ana uygulama dondurursa yönetim kurulunu sıfırlama.
  • [FONT=0]Dual-bank flaş[DFLT:1), A/B güncelleştirme slotları ile - eğer bootloader birincil resmi doğrulamazsa, yedekten çizmeler.
  • [FONT=0)Network- level failover[DDD][D][/IP, PRONET MRP) bu, milisaniyelerde ring topolojileri yeniden yapılandırabilir.

Gerçek Zamanlı Kontrol Sistemlerinde Başarısızlık

Kontrol sistemleri (PLCs, DCS, SCADA) determinist başarısız zaman gerektirir - genellikle 100 ms altında. Bu talepleri kabul edin:

  • [FONT=0)Zizahte kontrol cihazları ile (örneğin, Siemens S7-1500 Reddans, Rockwell ControlLogix Reddancy).
  • [0]Maxhronized memory[[[Döneticileri fiber optik veya özel arka plan ile ilişkilendirmiş.
  • [FONT:0)Distributed redundancy protokolleri[Dönetici:0) PRP (Parallel Reddancy Protokolü) veya HSR (High-availability Hand Redupcy) Katman 2'de geçiş gecikmesini ortadan kaldırmak için.

Yazılım tabanlı kontrolörler, gerçek zamanlı uzantılarla genel amaçlı OSes'lerde çalışır (örneğin, PREEMPT RT Linux), mühendisler genellikle paylaşılan belge ile ortak noktalı bir Ethernet bağlantısını kullanır ve a reddant Ethernet bağlantısını akanlık mesajları ile [[0Linux Kalpbeat olarak).

Step-by-Step Uygulama Kılavuzu

Bir mühendislik işletim sisteminde başarısız olmayı uygulamak tek bir özellik-fits-all işlem değildir. Aşağıda endüstri en iyi uygulamalar ve gerçek dünya dağıtım deneyimine adapte edilmiş bir metodolojidir.

1. Sistem Değerlendirme ve Gereksinimler Gathering

Tek bir yapılandırma hattı yazmadan önce, belge:

  • [FONT:0)Recovery Time Obstr (RTO): ) Ne kadar uzun süre aşağı çıkabiliyorsunuz? Bu, soğuk, sıcak veya sıcak bir standby ihtiyacınız olup olmadığını dikte eder.
  • [FONT:0)Recovery Point Objektif (RPO): Ne kadar veri kaybı kabul edilebilir? sıfırsa, sen senkronizasyonlu replikasyona ihtiyacınız var.
  • [FONT:0)Failure modları:[Dönemli başarısızlıklar - yazılım kaza, güç kaybı, ağ bölmesi, disk başarısızlığı, operatör hatası.
  • [FONT:0]Criticality:[Dönetici:[Dönetici:0) Hangi hizmetler bir yük devretme hayatta kalmalı? Her şey çok mevcut olması gerekmez.

Bir mühendislik OS için, aynı zamanda ESFLT:0) de göz ardı edilen işlemleri (örneğin, AG'nin kendisi geç saatlere bağlı olarak) durdurabilecek en kötü durumdaki işlemleri ölçebilir mi?

2. Reddancy Architecture Design Design

Seçilmiş modele dayanan kırmızı tabakayı tasarlayın (aktif-pasif veya aktif-aktif). Pacemaker kullanarak tipik bir Linux HA küme için, mimarlık şunları içerir:

  • [FONT:0]Kaynak ajanları:[Dön/Dön/geçmiş/yol hizmetleri (örneğin, Apache, PostgreSQL, özel uygulama).
  • [FONT:0]İşçiyi teşvik etmek: [Dönetici: [Dönetici: 1 ) veya IBM BladeCenter şasi yönetimi başarısız bir düğüme devre dışı bırakmak için.
  • [FONT:0)Corosync:[Dönetici:[Dönetici:[Dönetici: · 4 ) Bir küme motoru üyeliği, mesajlaşma ve quorum forur:2).Pacemaker).
  • [FONT:0)Yerli depolama veya yeniden kopyalanan depolama: Blok seviyesindeki replikasyon veya aktif bir yol ile DRBD kullanmak.

Aktif aktif-aktif bir tasarımda (örneğin, iki düğüm, bir okuma-en çok veritabanına hizmet eder), koncurrent yazarını işlemek için karmaşık değişimleri kullanın.(0)Raft[DDDüzDÜT:1) (basitleştirilmiş, başkonsolosluk, veya açık kaynak kütüphaneleri)

3. İzleme ve Başarısızlık Tespiti

Her ilgili katmanda başarısızlıkları tespit edebilecek iş başında. sınırlı kaynaklarla bir RTOS için, tarih boyunca basit bir saatdog zamanılayıcısı yeterli olabilir.

  • [FONT:0]OS seviyesi sağlık kontrolleri:) UseETHFLT:1) Zamanlayıcı hizmetleri veya Pacemaker'sDANFLT:2 belirtilen aralık ve zaman süresi ile işlem.
  • [FONT:0) Ağ düzeyinde kontroller:[Dönetici:[Döneticileri kullanın, ICMP pings to upstream yönlendiricis, or TCP bağlantı testleri to critical friends.
  • [[FONT:0)Uygulamaya özgü çekler:[Dönetici:[Dönetici:0) Özel bir mühendislik uygulaması için, küçük bir sağlık uç noktası yaz (örneğin, 03.44), "ok" veya "fail" geri dönüşleri son kez yürütme ve hafıza kullanımı ile birlikte. Pacemaker'sur'un notu için HTTP döndürür.

SetFLT:0)Demoilure eşleri [[Dönetici: 1 ) Dikkatli bir şekilde. Çok agresif (2 kaçırılmış kalp atışları) yanlış yük devretme yol açar; çok lenient (10 kaçırılmış kalp atışları) RTO'nun gereksiz yere uzanır.

4. Redüpsiyon Konsülasyonu ve senkronizasyon

Aktif olanlar ile sürekli senkronize edilecek yedek bileşenleri yapılandırın.For stateful services:

  • [FONT=0)Database seviyesi:[Dönetici:[Dönetici:0)[Dönetici:0)Patroni) gibi araçları kullanarak kendini teşvik eder.
  • [FONT:0]File seviyesi:[[Dönetici:0) Birincil / ikinci modda DRBD kullanın. Diskkkl (SCSI rezervasyonları) her iki düğümü aynı anda arka blok cihazına yazmasını engeller.
  • [FONT=0)Memory seviyesi:[Dönetici için] Gerçek zamanlı kontrol için, paylaşılan bir hafıza bölgesini kullanın (örneğin, POSIX paylaşılan hafıza veya özel bir donanım hafıza-malan bölge) devletin bir kopyasını tutan bir süreçtir.

Aktif geri dönüş arabirimleri için ağ geri yükleme (aktif geri dönüş için 1 numara) veya takımlama (örneğin, libteam) ile bağlantıya atan tek bir MAC adresi ile bağlantı kurmalı. IP başarısız oldu, düğümler arasında hareket eden bir sanal IP (VIP) olmalıdır.

5. Test ve Geçerlilik

Test başarısızlığı isteyeme istenmiyor. içeren bir test planı oluşturun:

  • [FONT:0)Graceful başarısızover: Manually aktif servisi durdur; RTO içinde doğru standby alır.
  • [FONT:0)Zenginsiz Başarısızlık: [Dönder:[Dönetici: 0,8|Dönetici:0)) Denge yangınlarını ve başarısızları veri yolsuzluk olmadan tamamlamak.
  • [FONT:0)Rollback testi:[Dönetici:0) Geri döndükten sonra, sistem otomatik olarak geri döndü (eğer yapılandırılmışsa) veya yeni aktif node üzerinde kalır mı? Birçok tasarım, "failover ama geri dönmez" tercih eder.
  • [FONT:0) Başarısızlık sırasındaLoad:[Döntme:[Dönder:[Dönder:0) Bir sentetik yük (örneğin, sürekli veriler bir veritabanına yazar) ve devre dışı bırakma işlemi başarı oranı ve geçkirleri azaltırken.
  • [FONT:0]Split-brain senaryosu:) düğümler arasındaki ağ bağlantısını korumak için kalp atış ağı ile bağlantı kurmak (if separate) Verify quorum ve dual aktif önlemek.

RTOS ortamları için, hafızayı biraz geri çevirebilecek bir hata enjeksiyon aracı kullanın, iletişim hataları veya zamanlama gecikmeleri gerçekçi koşullar altında başarısız mantığı doğrulamak için.

6. Dokümantasyon ve Eğitim

Başarısız mekanizmasının her yönünü belgeleyin:

  • [FONT=0)Configuration dosyaları:[Dönder: {0}[Dönder) {0}[0] {0}[0|Dönder.
  • [FONT:0)Fail akış diyagramları:[Dönem:[Dönem: 1) Olayların hizmet kurtarma tespitinden dolayı sırasını göster.
  • [FONT:0)Procedurlar:[Dönetici:[Dönetici:0) Başarısızlık başarısız olursa ne yapmalı (örneğin, manuel müdahale adımları).
  • [FONT:0)Post-mortem şablonları:[Dönem:[Dönem: 1) Kayıt süresi, kök nedeni ve gerçek bir başarısız sonra öğrenilen dersler.

Tren operasyonları personeli, bakım pencereleri sırasında başarısız olmayı ve ortak tuzaklardan kaçınmayı (örneğin VIP hareket ettiğinde erişim kontrol listelerini güncellemeyi unutmayın).

Prorade Failover için En İyi Uygulamalar

Uygulama adımlarının ötesinde, bu uygulamaları zamanında başarısız sisteminizi zorlaştırmak için takip edin.

Automate Her Şey

Manual başarısızover yavaş ve hata-prone.Use configuration management (Ansible, Puppet, Salt) set konfigürasyonlarını sürekli olarak dağıtmak için ayarlı testler. Automate failover testlerini Kaos Monkey ( Netflix'ten) veya [[ projesi Linux için ayarladı.

Coğrafi Reddans

Sisteminiz daha yüksek gecikme ve etkinlik tutarlılığı, birden fazla veri merkezi veya bölgede başarısız olur. dağıtılmış bir konsensiyon kümesi kullanın (örneğin, vs., Konsolosluk veya Zookeeper) veri merkezi olmayan bir kanal tanıklığı için, PostgreSQL'in Bi-Directional Replication (BDR) veya Cassandra'nın çoklu-datatabanlı replikasyonu kullanın. WAN bağlantıları arasındaki ağ bölme senaryolarının farkında olun - bakım merkezileştirilmiş bir quorum tanıklığı ile alınır.

Proaktif İzleme ve Uyarı

Başarısızlık, acil bir uyarıyı tetikleyen bir olay olmalıdır (bir PagerDuty, OpsGenie veya on-call mühendisi) ama aynı zamanda başarısız altyapının sağlığını da izlemek gerekir: standby node gerçekten senkronize edilebilir, kalp atış ağının paket kaybı yoktur ve bukür cihazlar ulaşılamaz.

Düzenli Drills and Post-Mortems

Ders süresi, her gerçek başarısız olduktan sonra, belge ve / veya yapılandırmayı uygun şekilde güncellemek için zaman ayırın.

Ortak meydan okumalar ve Nasıl Overcome Them

İyi tasarlanmış yük sistemleri bile beklenmedik şekillerde başarısız olabilir. İşte mühendislik OS ortamlarında tipik bir tuzaklar.

Split-Brain Aktif Pasif Clusters

Makul ve kontraseptife rağmen, bölünmüş-brain hala kontraseptör başarısız olursa (örneğin IPMI kimlik değişikliği, güç geçişi ulaşılamaz).

  • Testk düzenli olarak kullanım [[D=) araçlar.
  • Red dışı güç yolları ile dış bant yönetimi kullanın.
  • Uygulamalı yazılım izolasyonu (SCSI seviyesinde rezervasyon) ek bir başarısız güvenlik olarak.

Başarısızlık Gerçek Zaman Sistemlerinde Çok Uzun Alır

RTO'nuz alt-100 ms ise standart Pacemaker başarısızover (saniye) bunu kesmeyecek.

  • Donanım reddanttt (düşük senkronizasyon ile kontrolleri).
  • PRP (Parallel Reddanscy Protokolü) veya HSR (High-availability Redsolcy) gibi 2 reddans protokolü, ağ çerçeveleri için sıfır-switchover-time sağlar.
  • Uygulama seviyesi hızlı bir şekilde iki hazır bir mimari kullanarak başarısız olur (hem düğümler işlemi verileri, ancak sadece bir sürücü çıktısı; geçiş oy kullanan bir latch ile gerçekleşir).

Data Corruption After Failover

Başarısız node geri geldiğinde, yeni birincil verileri yazmaya çalışabilir. Bunu önlemek:

  • Diskkkür (SCSI-3 Persistent Rezervasyonlar) paylaşılan depolamada.
  • Cluster filesystem (OCFS2, GFS2) bu çit semantics uygular.
  • Sabit düğümlerin yazmayı reddettiği uygulama seviye dizi numaraları veya dönemler.

Yükümlü Zamanlar Yük Altında

Bir RTOS'ta, aniden kesintiler patlama, yanlış bir yük devretme geciktirebilir. Maksimum beklenen gecikme süresi için kalp atışını dikkate alın. Tüm kritik olmayan görevlerle sabit bir öncelikle kalp atışını gerçek zamanlı bir iş parçacığı kullanmayı düşünün.

Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç

Mühendislik işletim sistemlerinde başarısız mekanizmaları uygulamak basit bir çek kutusu egzersiz değildir. Sistemin başarısızlık modlarını tanıtarak, AG'nin geç kalmış sınırları ve mevcut olmayan bir denetim yöntemiyle - iyi yapılan bir değerlendirme yoluyla yapılan değerlendirmeden sonra, başarısız sistemler inşa edebilir.