Orchestrator ak VIP kòm yon solisyon HA pou yon gwoup MySQL

Nan Citymobil nou itilize yon baz done MySQL kòm prensipal depo done ki pèsistan. Nou gen plizyè gwoup baz done pou plizyè sèvis ak rezon.

Disponibilite konstan nan mèt la se yon endikatè kritik nan pèfòmans nan tout sistèm nan ak pati endividyèl li yo. Otomatik rekiperasyon grap nan evènman an nan yon echèk mèt anpil diminye tan repons ensidan ak tan sistèm nan. Nan atik sa a, mwen pral gade nan yon konsepsyon segondè disponiblite (HA) pou yon gwoup MySQL ki baze sou MySQL Orchestrator ak adrès IP vityèl (VIP).

Orchestrator ak VIP kòm yon solisyon HA pou yon gwoup MySQL

HA solisyon ki baze sou VIP

Premyèman, mwen pral yon ti tan di ou ki sa sistèm depo done nou an ye.

Nou itilize yon konplo replikasyon klasik ak yon sèl mèt aksesib pou ekri ak plizyè kopi lekti sèlman. Yon gwoup ka genyen yon mèt entèmedyè - yon ne ki se tou de yon kopi ak yon mèt pou lòt moun. Kliyan yo jwenn aksè nan kopi atravè HAProxy, ki pèmèt distribisyon chaj menm ak dekale fasil. Itilizasyon HAProxy se akòz rezon istorik, e nou kounye a nan pwosesis pou imigre nan ProxySQL.

Replication fèt nan mòd semi-synchrone ki baze sou GTID. Sa vle di ke omwen yon kopi dwe konekte yon tranzaksyon anvan li konsidere kòm siksè. Mòd replikasyon sa a bay yon balans optimal ant pèfòmans ak sekirite done nan evènman an nan yon echèk ne mèt. Fondamantalman tout chanjman yo transfere soti nan mèt la nan kopi yo lè l sèvi avèk Row Based Replication (RBR), men kèk nœuds ka genyen mixed binlog format.

Orchestrator a detanzantan mete ajou eta topoloji gwoup la, analize enfòmasyon yo resevwa, epi si pwoblèm rive, li ka lanse yon pwosedi rekiperasyon otomatik. Pwomotè a responsab pou pwosedi a tèt li, depi li ka aplike nan diferan fason: ki baze sou VIP, dns, lè l sèvi avèk sèvis dekouvèt sèvis oswa mekanis pwòp tèt ou ekri.

Yon fason senp pou retabli yon mèt si li echwe se sèvi ak adrès VIP k ap flote.

Ki sa ou bezwen konnen sou solisyon sa a anvan ou avanse:

  • Yon VIP se yon adrès IP ki pa asosye ak yon koòdone rezo fizik espesifik. Si yon ne echwe oswa pandan antretyen pwograme, nou ka chanje VIP a nan yon lòt resous ak yon minimòm D '.
  • Libere ak bay yon adrès IP vityèl se yon operasyon bon mache epi rapid.
  • Pou travay ak VIP, ou bezwen aksè nan sèvè a atravè SSH, oswa itilize sèvis piblik espesyal, pou egzanp, keepalived.

Ann gade nan pwoblèm posib ak sòsye nou an epi imajine ki jan mekanis rekiperasyon otomatik la ta dwe travay.

Koneksyon rezo a ak mèt la te disparèt, oswa yon pwoblèm te parèt nan nivo pyès ki nan konpitè, epi sèvè a pa disponib.

  1. Orchestrator a mete ajou topoloji gwoup la, chak kopi rapòte ke mèt la pa disponib. Orchestrator a kòmanse pwosesis pou chwazi yon kopi apwopriye pou wòl nouvo mèt la epi li kòmanse rekiperasyon an.
  2. Nou ap eseye retire VIP a nan ansyen mèt la - san siksè.
  3. Replik la chanje nan wòl mèt. Topoloji a ap rebati.
  4. Ajoute yon nouvo koòdone rezo ak VIP. Depi li pa t 'posib yo retire VIP a, nou kòmanse detanzantan voye yon demann nan background nan ARP gratis. Kalite demann/repons sa a pèmèt ou mete ajou tablo kat adrès IP ak MAC sou switch ki konekte yo, kidonk fè w konnen VIP nou an te deplase. Sa a minimize chans pou yo split brain lè yo retounen ansyen mèt la.
  5. Tout nouvo koneksyon yo imedyatman redireksyon sou nouvo mèt la. Ansyen koneksyon echwe epi yo fè apèl repete nan baz done a nan nivo aplikasyon an.

Sèvè a ap opere nan mòd nòmal, yon echèk ki te fèt nan nivo DBMS

Algorithm la sanble ak ka anvan an: mete ajou topoloji a epi kòmanse pwosesis rekiperasyon an. Depi sèvè a disponib, nou avèk siksè lage VIP a sou ansyen mèt la, transfere li nan nouvo a, epi voye plizyè demann ARP. Retounen posib ansyen mèt la pa ta dwe afekte grap rebati a ak operasyon aplikasyon an.

Lòt pwoblèm

Echèk nan kopi oswa mèt entèmedyè pa mennen nan aksyon otomatik epi li mande entèvansyon manyèl.

Yon koòdone rezo vityèl toujou ajoute tanporèman, se sa ki, apre yon rdemare sèvè, VIP a pa otomatikman asiyen. Chak egzanp baz done kòmanse nan mòd lekti sèlman pa default, orchestrator a otomatikman chanje nouvo mèt la ekri epi eseye enstale. read only sou ansyen mèt la. Aksyon sa yo vize a diminye chans pou yo split brain.

Pwoblèm yo ka parèt pandan pwosesis rekiperasyon an, ki ta dwe notifye tou atravè UI orchestrator anplis zouti siveyans estanda. Nou te elaji API REST la lè nou ajoute karakteristik sa a (PR kounye a anba revizyon).

Dyagram jeneral solisyon HA a prezante anba a.

Orchestrator ak VIP kòm yon solisyon HA pou yon gwoup MySQL

Chwazi yon nouvo mèt

Okestratè a se entelijan ase epi li eseye chwazi kopi ki pi apwopriye a kòm yon nouvo mèt dapre kritè sa yo:

  • kopi a lag dèyè mèt la;
  • MySQL vèsyon mèt ak kopi;
  • kalite replikasyon (RBR, SBR oswa melanje);
  • kote nan menm sant done oswa diferan;
  • disponiblite errant GTID — tranzaksyon ki te egzekite sou kopi a epi ki pa sou mèt la;
  • règ seleksyon koutim yo tou pran an kont.

Se pa tout siy se yon kandida ideyal pou yon mèt. Pou egzanp, yon kopi ka itilize done backup, oswa sèvè a gen yon konfigirasyon pyès ki nan konpitè ki pi fèb. Okestratè sipò règ manyèl ak ki ou ka Customize preferans seleksyon kandida ou soti nan pi pito a inyore.

Tan repons ak rekiperasyon

Nan ka ta gen yon ensidan, li enpòtan pou minimize tan sistèm nan, kidonk ann konsidere paramèt MySQL ki afekte kreyasyon ak aktyalizasyon topoloji gwoup la pa orchestrator la:

  • slave_net_timeout — kantite segonn pandan kopi a ap tann pou nouvo done oswa yon siyal batman rive nan men mèt la anvan yo rekonèt koneksyon an kòm pèdi epi rekonekte. Pi ba valè a, pi vit kopi a ka detèmine ke kominikasyon ak mèt la kase. Nou mete valè sa a sou 5 segonn.
  • MASTER_CONNECT_RETRY — kantite segonn ant tantativ rekoneksyon. Nan ka ta gen pwoblèm rezo, yon valè ki ba pou paramèt sa a pral pèmèt rekoneksyon rapid epi anpeche pwosesis rekiperasyon gwoup la kòmanse. Valè rekòmande a se 1 segonn.
  • MASTER_RETRY_COUNT - kantite maksimòm tantativ rekoneksyon.
  • MASTER_HEARTBEAT_PERIOD — entèval an segonn apre sa mèt la voye yon siyal batman kè. Default nan mwatye valè a slave_net_timeout.

Opsyon orchestrator:

  • DelayMasterPromotionIfSQLThreadNotUpToDate - si egal true, Lè sa a, wòl mèt la pa pral aplike sou kopi kandida a jiskaske fil SQL kopi a fin ranpli tout tranzaksyon ki pa aplike nan Rele Log la. Nou itilize opsyon sa a pou evite pèdi tranzaksyon lè tout kopi kandida yo tonbe dèyè.
  • InstancePollSeconds — frekans nan bati ak ajou topoloji a.
  • RecoveryPollSeconds - frekans nan analiz topoloji. Si yo detekte yon pwoblèm, rekiperasyon topoloji kòmanse. Sa a konstan, egal a 1 segonn.

Òksèstratè a vote chak ne grap yon fwa chak InstancePollSeconds segonn Lè yo detekte yon pwoblèm, eta gwoup la fòse mete ajou, epi apre desizyon final la pran pou fè rekiperasyon an. Lè nou fè eksperyans ak diferan baz done ak paramèt orchestrator, nou te kapab redwi tan repons ak rekiperasyon an a 30 segonn.

Ban tès

Nou te kòmanse teste konplo HA a ak devlopman yon lokal tès ban ak plis aplikasyon nan tès ak pwodiksyon anviwònman. Stand lokal la konplètman otomatize ki baze sou Docker epi li pèmèt ou fè eksperyans ak konfigirasyon orchestrator a ak rezo a, echèl gwoup la soti nan 2-3 sèvè a plizyè douzèn, epi fè egzèsis nan yon anviwònman ki an sekirite.

Pandan egzèsis yo, nou chwazi youn nan metòd imitasyon pwoblèm yo: imedyatman tire mèt la lè l sèvi avèk kill -9, dousman mete fen nan pwosesis la epi sispann sèvè a (docker-compose stop), simulation pwoblèm rezo lè l sèvi avèk iptables -j REJECT oswa iptables -j DROP. Nou espere rezilta sa yo:

  • orchestrator a pral detekte pwoblèm ak mèt la epi mete ajou topoloji a nan pa plis pase 10 segonn;
  • pwosedi rekiperasyon an pral otomatikman kòmanse: konfigirasyon rezo a pral chanje, wòl mèt la ap pase nan kopi a, topoloji a pral rebati;
  • nouvo mèt la ap vin ekri, kopi vivan pa pral pèdi pandan pwosesis rebati a;
  • done yo pral kòmanse ekri nan nouvo mèt la epi replike;
  • Tan total rekiperasyon an pa pral plis pase 30 segonn.

Kòm ou konnen, sistèm nan ka konpòte yon fason diferan nan tès ak pwodiksyon anviwònman akòz diferan pyès ki nan konpitè ak konfigirasyon rezo, diferans ki genyen nan chaj sentetik ak reyèl, elatriye. Se poutèt sa, detanzantan nou fè egzèsis nan kondisyon reyèl, tcheke ki jan sistèm nan konpòte lè koneksyon rezo a pèdi oswa pati endividyèl li yo degrade. Nan tan kap vini an, nou vle bati yon enfrastrikti konplètman idantik pou tou de anviwònman ak otomatize tès li yo.

Jwenn

Sante sistèm depo prensipal la se youn nan travay prensipal SRE ak ekip operasyon yo. Aplikasyon an nan orchestrator a ak solisyon HA ki baze sou VIP pèmèt nou reyalize rezilta sa yo:

  • deteksyon serye nan pwoblèm ak topoloji gwoup baz done a;
  • repons otomatik ak rapid nan ensidan ki gen rapò ak mèt, diminye tan sistèm lan.

Sepandan, solisyon an gen limit li yo ak dezavantaj:

  • Eskalad konplo HA a nan plizyè sant done pral mande pou yon sèl rezo L2 ant yo;
  • Anvan plase VIP sou nouvo mèt la, nou bezwen lage li sou ansyen an. Pwosesis la se sekans, ki ogmante tan rekiperasyon an;
  • divilge VIP a mande pou SSH aksè nan sèvè a, oswa nenpòt lòt metòd pou rele pwosedi aleka. Depi sèvè a oswa baz done a ap fè eksperyans pwoblèm ki te lakòz pwosesis rekiperasyon an, nou pa ka asire w ke retire VIP an pral konplete avèk siksè. Lè sa a ka mennen nan aparans nan de serveurs ak menm adrès la IP vityèl ak yon pwoblèm split brain.

Evite split brain, ou ka itilize metòd la STONITH ("Tire lòt nœud la nan tèt la"), ki konplètman izole oswa enfim nœud pwoblèm nan. Gen lòt fason pou aplike gwo disponiblite gwoup: yon konbinezon VIP ak DNS, sèvis dekouvèt ak sèvis prokurasyon, replikasyon synchrone ak lòt metòd ki gen pwòp dezavantaj ak avantaj yo.

Mwen te pale sou apwòch nou pou kreye yon gwoup failover MySQL. Li fasil pou aplike epi li bay yon nivo fyab akseptab nan kondisyon aktyèl yo. Kòm tout sistèm nan an jeneral ak enfrastrikti an patikilye devlope, apwòch sa a pral san dout evolye.

Sous: www.habr.com

Add nouvo kòmantè