Failover: perfeksionisme jeung... puguh nu ngaruksak urang

Dina usum panas, duanana kagiatan purchasing jeung inténsitas parobahan dina infrastruktur proyék web tradisional ngurangan, Kaptén Obvious ngabejaan urang. Kantun kusabab bahkan spesialis IT kadang nuju liburan. Sareng CTO ogé. Éta langkung hese pikeun jalma anu tetep di kantor, tapi éta sanés titikna ayeuna: panginten éta usum panas mangrupikeun waktos anu pangsaéna pikeun lalaunan mikirkeun skéma reservasi anu tos aya sareng nyusun rencana pikeun ningkatkeun éta. Jeung pangalaman Yegor Andreev ti AdminDivision, anu anjeunna nyarios dina konperénsi éta Poé uptime.

Aya sababaraha pitfalls anjeun tiasa digolongkeun nalika ngawangun situs cadangan. Tur éta kacida teu mungkin meunang bray di aranjeunna. Jeung naon ruruntuhan urang dina sagala ieu, sakumaha dina loba hal sejenna, nyaeta perfectionism jeung... hoream. Urang nyobian ngalakukeun sagalana, sagalana, sagalana sampurna, tapi urang teu kedah ngalakukeun eta sampurna! Anjeun ngan ukur kedah ngalakukeun sababaraha hal, tapi laksanakeun kalayan leres, lengkepan supados tiasa jalanna leres.

Failover sanes sababaraha jenis senang, hal fun; Ieu mangrupikeun hal anu kedah dilakukeun persis hiji hal - ngirangan downtime supados jasa, perusahaan, kaleungitan artos. Sareng dina sadaya metode reservasi, kuring nyarankeun mikir dina kontéks ieu: dimana artosna?

Failover: perfeksionisme jeung... puguh nu ngaruksak urang

bubu munggaran: nalika urang ngawangun badag, sistem dipercaya jeung kalibet dina redundancy, urang ngurangan jumlah kacilakaan. Ieu mangrupakeun misconception dahsyat. Nalika urang kalibet dina redundancy, urang kamungkinan nambahan jumlah kacilakaan. Sareng upami urang ngalakukeun sadayana leres, maka sacara koléktif urang bakal ngirangan downtime. Bakal aya deui kacilakaan, tapi bakal lumangsung dina waragad handap. Naon reservasi? - ieu téh komplikasi sistem. Komplikasi naon waé anu goréng: urang gaduh langkung cogs, langkung gears, dina kecap, langkung elemen - sareng, ku kituna, kamungkinan ngarecahna langkung luhur. Jeung maranéhna bener bakal megatkeun. Jeung maranéhna bakal megatkeun leuwih mindeng. Hiji conto basajan: hayu urang nyebutkeun urang boga ramatloka kalawan PHP jeung MySQL. Sarta eta urgently perlu ditangtayungan.

Shtosh (c) Urang nyokot situs kadua, ngawangun hiji sistem idéntik ... pajeulitna jadi dua kali hébat - urang boga dua éntitas. Urang ogé gulung kaluar logika tangtu pikeun nransferkeun data ti hiji situs ka nu sejen - nyaeta, réplikasi data, nyalin data statik, jeung saterusna. Janten, logika réplikasi biasana rumit pisan, sareng ku kituna, total pajeulitna sistem tiasa henteu 2, tapi 3, 5, 10 kali langkung ageung.

bubu kadua: lamun urang ngawangun sistem kompléks bener badag, urang fantasize ngeunaan naon urang hayang meunang dina tungtungna. Voila: urang hoyong kéngingkeun sistem anu tiasa dipercaya anu tiasa dianggo tanpa downtime, saklar dina satengah detik (atanapi langkung saé, langsung), sareng urang mimiti ngawujudkeun impian. Tapi aya ogé nuansa di dieu: nu pondok waktu switching nu dipikahoyong, beuki kompleks logika sistem jadi. Beuki kompleks urang kudu nyieun logika ieu, beuki sering sistem bakal ngarecah. Sareng anjeun tiasa mungkas dina kaayaan anu teu pikaresepeun: urang nyobian kalayan sagala kakuatan pikeun ngirangan downtime, tapi nyatana urang ngajantenkeun sadayana langkung rumit, sareng nalika aya anu salah, downtime bakal langkung panjang. Di dieu anjeun mindeng nyekel diri mikir: sumur ... eta bakal leuwih hade teu nyieun reservasi a. Éta langkung saé upami éta damel nyalira sareng kalayan downtime anu kaharti.

Kumaha anjeun tiasa ngalawan ieu? Urang kudu eureun bohong ka diri urang sorangan, eureun flattering diri urang sorangan nu urang bade ngawangun spaceship di dieu ayeuna, tapi adequately ngartos sabaraha lila proyek bisa ngabohong. Sareng pikeun waktos maksimal ieu, kami bakal milih metode naon anu bakal kami anggo pikeun ningkatkeun reliabilitas sistem kami.

Failover: perfeksionisme jeung... puguh nu ngaruksak urang

Waktosna pikeun "carita ti w" ... tina kahirupan, tangtosna.

Contona nomer hiji

Bayangkeun ramatloka kartu bisnis pikeun Pipe Rolling Plant No. Di handap ieu aya slogan: "Pipa kami mangrupikeun pipa paling bulat di N." Sareng di handap ieu nomer telepon CEO sareng namina. Kami ngarti yén anjeun kedah ngadamel reservasi - ieu mangrupikeun hal anu penting! Hayu urang mimitian ngartos naon eta diwangun ku. Html-statics - nyaeta, sababaraha gambar dimana manajer umum, kanyataanna, keur ngabahas sababaraha jenis deal salajengna dina tabel di bathhouse kalawan pasangan na. Urang mimitian mikir ngeunaan downtime. Éta datang ka pikiran: anjeun kedah ngagolér di dinya salami lima menit, henteu langkung. Lajeng patarosan timbul: sabaraha jualan aya ti situs urang umumna? Sabaraha-sabaraha? Naon hartina "nol"? Jeung hartina: sabab umum dijieun sagala opat transaksi taun ka tukang dina tabel sarua, jeung jalma anu sarua jeung saha maranéhna balik ka bathhouse jeung diuk dina tabél. Sareng urang ngartos yén sanaos situs éta linggih sadinten, teu aya anu pikasieuneun anu bakal kajadian.

Dumasar kana inpormasi bubuka, aya dinten pikeun ngangkat ieu carita. Hayu urang mimitian mikir ngeunaan skéma redundansi. Sarta kami milih skéma redundancy paling idéal pikeun conto ieu: urang teu make redundancy. Sadayana ieu tiasa diangkat ku admin naon waé dina satengah jam kalayan ngarecah haseup. Pasang pangladén wéb, tambahkeun file - éta waé. Éta bakal dianggo. Anjeun teu kedah ngawas nanaon, anjeun teu kedah nengetan husus ka nanaon. Hartina, kacindekan tina conto nomer hiji rada atra: jasa anu henteu kedah dicadangkeun henteu kedah dicadangkeun.

Failover: perfeksionisme jeung... puguh nu ngaruksak urang

Contona nomer dua

Blog perusahaan: jalma anu dilatih khusus nyerat warta di dinya, urang ngiringan paméran sapertos kitu, tapi kami ngaluarkeun produk anyar anu sanés, sareng saterasna. Hayu urang nyebutkeun ieu PHP baku kalawan WordPress, database leutik sarta saeutik statik. Tangtosna, éta émut deui yén anjeun henteu kedah ngagolér dina kaayaan naon waé - "henteu langkung ti lima menit!" Éta waé. Tapi hayu urang mikir salajengna. Naon eusina blog ieu? Jalma datang ka dinya ti Yandex, ti Google dumasar kana sababaraha queries, organically. Hebat. Naha penjualan aya hubunganana sareng éta? Epiphany: teu bener. Lalu lintas iklan angkat ka situs utama, anu aya dina mesin anu béda. Hayu urang mimitian mikir ngeunaan skéma booking. Dina cara anu saé, éta kedah digedékeun dina sababaraha jam, sareng éta langkung saé pikeun nyiapkeun ieu. Wajar upami nyandak mesin ti pusat data anu sanés, gulung lingkunganana, nyaéta, server wéb, PHP, WordPress, MySQL, teras tinggalkeun di dinya. Di momen nalika urang ngartos yen sagalana geus pegat, urang kudu ngalakukeun dua hal - gulung kaluar mysql dump 50 méter, éta bakal ngapung aya dina hiji menit, sarta gulung kaluar sababaraha gambar ti cadangan dinya. Ieu oge teu aya pikeun Allah weruh sabaraha lila. Ku kituna, dina satengah jam sakabeh hal naék. Taya réplikasi, atanapi Gusti ngahampura kuring, failover otomatis. Kacindekan: naon anu urang tiasa gancang gulung kaluar tina cadangan henteu kedah dicadangkeun.

Failover: perfeksionisme jeung... puguh nu ngaruksak urang

Contona nomer tilu, leuwih pajeulit

Toko online. PhP kalawan haté kabuka saeutik tweaked, mysql kalawan dasar padet. Rada loba statik (sanggeus kabeh, toko online boga gambar HD geulis tur sagala barang nu), Redis pikeun sési jeung Elasticsearch pikeun milarian. Urang mimitian mikir ngeunaan downtime. Sareng di dieu, tangtosna, écés yén toko online henteu tiasa ngagolér tanpa nyeri sadinten. Barina ogé, beuki lila eta perenahna, beuki duit urang leungit. Matak ngagancangan. Sakumaha? Jigana mun urang ngagolér sajam, moal aya nu gélo. Sumuhun, urang bakal leungit hiji hal, tapi lamun urang ngamimitian digawé teuas, éta bakal jadi goréng. Urang nangtukeun skéma downtime diwenangkeun per jam.

Kumaha sadayana ieu tiasa dicadangkeun? Anjeun peryogi mobil dina sagala hal: sajam waktu téh rada saeutik. MySQL: didieu urang geus kudu réplikasi, réplikasi hirup, sabab dina sajam 100 GB paling dipikaresep moal ditambahkeun kana dump nu. Statics, gambar: deui, dina sajam 500 GB bisa jadi teu boga waktu pikeun ditambahkeun. Ku alatan éta, leuwih sae pikeun nyalin gambar langsung. Redis: ieu dimana hal jadi metot. Di Redis, sési disimpen - urang henteu tiasa ngan ukur nyandak sareng nguburna. Kusabab ieu moal saé pisan: sadaya pangguna bakal kaluar, karanjangna bakal dikosongkeun, sareng saterasna. Jalma bakal kapaksa ngasupkeun deui ngaran pamaké sarta sandi maranéhna, sarta loba jalma bisa megatkeun jauh jeung teu ngalengkepan beuli. Sakali deui, konvérsi bakal turun. Di sisi anu sanés, Redis langsung énggal-énggal, sareng pangguna anu terakhir log-in sigana henteu diperyogikeun ogé. Sareng kompromi anu saé nyaéta nyandak Redis sareng malikkeun tina cadangan ti kamari, atanapi, upami anjeun ngalakukeun unggal jam, ti sajam ka pengker. Untungna, malikkeun tina cadangan hartina nyalin hiji file. Sareng carita anu paling pikaresepeun nyaéta Elasticsearch. Saha anu kantos nyandak réplikasi MySQL? Saha anu kantos nyandak réplikasi Elasticsearch? Sareng pikeun saha éta biasana dianggo saatosna? Maksud kuring nyaéta yén urang ningali éntitas anu tangtu dina sistem urang. Sigana mangpaat - tapi éta rumit.
Kompléks dina harti yén sasama insinyur urang teu gaduh pangalaman damel sareng éta. Atawa aya pangalaman négatip. Atawa urang ngarti yén ieu téh masih téhnologi cukup anyar kalawan nuansa atawa rawness. Kami pikir ... Damn, elastis ogé cageur, ogé butuh waktu lila pikeun mulangkeun eta tina cadangan, naon anu kudu dipigawé? Urang ngarti yén elastis bisi urang dipaké pikeun milarian. Kumaha toko online urang ngajual? Urang buka marketers jeung nanya ti mana jalma asalna ti umumna. Aranjeunna ngajawab: "90% ti Pasar Yandex langsung ka kartu produk." Sareng boh aranjeunna mésér atanapi henteu. Ku alatan éta, pilarian diperlukeun ku 10% pamaké. Sareng ngajaga réplikasi elastis, khususna antara pusat data anu béda dina zona anu béda, leres-leres gaduh seueur nuansa. kaluar mana? Kami nyandak elastis tina situs anu ditangtayungan sareng teu ngalakukeun nanaon. Upami masalahna nyeret, urang sigana bakal naékkeun éta hiji dinten, tapi ieu henteu pasti. Sabenerna, kacindekan sarua, tambah atawa dikurangan: urang, deui, teu cagar jasa nu teu mangaruhan duit. Pikeun ngajaga diagram saderhana.

Failover: perfeksionisme jeung... puguh nu ngaruksak urang

Contona nomer opat, malah leuwih hese

Integrator: ngajual kembang, nelepon taksi, ngajual barang, sacara umum, nanaon. Hal serius anu dianggo 24/7 pikeun sajumlah ageung pangguna. Kalawan tumpukan metot full-fledged, dimana aya basa metot, solusi, beban tinggi, sarta paling importantly, éta hurts ngagolér pikeun leuwih ti 5 menit. Henteu ngan teu jadi loba sabab jalma moal meuli, tapi kusabab jalma bakal nempo yén hal ieu teu jalan, aranjeunna bakal kesel jeung bisa jadi teu balik deui.

OKÉ. Lima menit. Naon anu bakal urang pigawé ngeunaan ieu? Dina hal ieu, urang, kawas sawawa, ngagunakeun sagala duit pikeun ngawangun situs cadangan nyata, kalawan réplikasi sagalana, komo sugan ngajadikeun otomatis pindah ka situs ieu saloba mungkin. Sareng salian ti ieu, anjeun kedah émut pikeun ngalakukeun hiji hal anu penting: saleresna, nyerat peraturan switching. Perda, sanaos anjeun gaduh sadayana otomatis, tiasa saderhana pisan. Tina séri "ngajalankeun naskah anu tiasa sapertos kitu", "klik kotak centang sapertos kitu dina rute 53" sareng saterasna - tapi ieu kedah janten sababaraha daptar lampah anu pasti.

Jeung sagalana sigana jelas. Ngalihkeun réplikasi mangrupikeun tugas anu sepele, atanapi éta bakal ngagentos nyalira. Nulis ulang ngaran domain dina DNS ti séri anu sarua. Masalahna nyaéta nalika proyék sapertos kitu gagal, panik dimimitian, bahkan anu paling kuat, admin janggut tiasa rentan ka éta. Tanpa parentah anu jelas "buka terminal, kadieu, alamat server kami masih sapertos kieu," hese pikeun nyumponan wates waktos 5 menit anu disayogikeun pikeun resusitasi. Nya, tambah, nalika kami nganggo peraturan ieu, gampang pikeun ngarékam sababaraha parobihan dina infrastruktur, contona, sareng ngarobih peraturan anu sasuai.
Nya, upami sistem reservasi rumit pisan sareng di sawatara titik urang ngalakukeun kasalahan, maka urang tiasa ngancurkeun situs cadangan urang, sareng salian janten data janten waluh dina dua situs - ieu bakal hanjelu.

Failover: perfeksionisme jeung... puguh nu ngaruksak urang

Conto nomer lima, lengkep hardcore

Ladenan internasional kalayan ratusan juta pangguna di sakumna dunya. Sadaya zona waktos aya, beban tinggi dina laju maksimum, anjeun moal tiasa ngagolér pisan. A menit - sarta eta bakal hanjelu. Naon anu kedah dilakukeun? Reserve, deui, nurutkeun program pinuh. Urang ngalakukeun sagalana kuring dikaitkeun dina conto saméméhna, sarta saeutik deui. Dunya anu idéal, sareng infrastruktur urang saluyu sareng sadaya konsép devops IaaC. Hartina, sagalana aya dina git, jeung anjeun ngan mencet tombol.

Naon anu ical? Hiji - latihan. Teu mungkin tanpa aranjeunna. Sigana mah sagalana sampurna kalawan kami, urang umumna boga sagalana dina kontrol. Urang pencét tombol, sagalana kajadian. Sanaos kitu - sareng urang ngartos yén éta henteu kajantenan ku cara kieu - sistem kami berinteraksi sareng sababaraha sistem anu sanés. Salaku conto, ieu mangrupikeun dns tina rute 53, panyimpenan s3, integrasi sareng sababaraha api. Urang moal bisa foresee sagalana dina percobaan spekulatif ieu. Sareng dugi ka urang leres-leres narik saklar, urang moal terang naha éta bakal jalan atanapi henteu.

Failover: perfeksionisme jeung... puguh nu ngaruksak urang

Éta meureun sadayana. Ulah puguh atawa kaleuleuwihi. Sareng mungkin uptime sareng anjeun!

sumber: www.habr.com

Tambahkeun komentar