Orcastra airson MySQL: carson nach urrainn dhut pròiseact a tha fulang le lochdan a thogail às aonais

Thòisich pròiseact mòr sam bith le frithealaiche no dhà. An toiseach bha aon fhrithealaiche DB ann, agus chaidh tràillean a chuir ris gus an leughadh a sgèile. Agus an uairsin - stad! Tha aon mhaighstir ann, ach tha mòran thràillean ann; ma dh'fhàgas aon de na tràillean, bidh a h-uile dad gu math, ach ma dh'fhàgas am maighstir, bidh e dona: ùine downt, bidh luchd-rianachd a 'feuchainn ris an fhrithealaiche a thogail. Dè a nì thu? Glèidh maighstir. Sgrìobh mo cho-obraiche Pavel mu dheidhinn seo mu thràth artaigil, cha dèan mi a-rithist e. An àite sin, innsidh mi dhut carson a tha feum agad gu cinnteach air Orcastra airson MySQL!

Feuch an tòisich sinn leis a 'phrìomh cheist: "Ciamar a thionndaidheas sinn an còd gu inneal ùr nuair a dh' fhàgas am maighstir?"

  • Is toil leam an sgeama le VIP (Virtual IP) as motha, bruidhnidh sinn mu dheidhinn gu h-ìosal. Is e seo an rud as sìmplidh agus as follaisiche, ged a tha cuingealachadh follaiseach aige: feumaidh am maighstir a ghlèidheas sinn a bhith anns an roinn L2 leis an inneal ùr, is e sin, is urrainn dhuinn dìochuimhneachadh mun dàrna DC. Agus, ann an dòigh càirdeil, ma leanas tu an riaghailt gu bheil L2 mòr olc, oir chan eil L2 ach anns gach raca, agus tha L3 eadar na racaichean, agus tha eadhon barrachd chuingealachaidhean aig sgeama mar sin.
  • Faodaidh tu ainm DNS a sgrìobhadh sa chòd agus fhuasgladh tro /etc/hosts. Gu dearbh, cha bhi rùn sam bith ann. Buannachd an sgeama: chan eil feart cuingealachadh sam bith aig a 'chiad dhòigh, is e sin, tha e comasach crois-DC a chuir air dòigh. Ach an uairsin tha a’ cheist fhollaiseach ag èirigh: dè cho luath ‘s as urrainn dhuinn an t-atharrachadh a lìbhrigeadh gu /etc/hosts tro Puppet-Ansible?
  • Faodaidh tu an dàrna dòigh atharrachadh beagan: stàlaich caching DNS air a h-uile seirbheisiche lìn, tron ​​​​tèid an còd chun phrìomh stòr-dàta. Faodaidh tu TTL 60 a shuidheachadh airson an inntrig seo ann an DNS. Tha e coltach ma thèid a chuir an gnìomh gu ceart, tha an dòigh-obrach math.
  • Sgeama le lorg seirbheis, a’ ciallachadh cleachdadh Consul is msaa.
  • Roghainn inntinneach le ProxySQL. Feumaidh tu an trafaic gu lèir a stiùireadh gu MySQL tro ProxySQL; Faodaidh ProxySQL fhèin dearbhadh cò am maighstir. Co-dhiù, faodaidh tu leughadh mu aon de na roghainnean airson a bhith a’ cleachdadh an toraidh seo na mo artaigil.

Chuir ùghdar Orchestrator, ag obair ann an Github, a 'chiad sgeama an gnìomh le VIP, agus an uairsin thionndaidh e gu sgeama le consul.

Cruth bun-structair àbhaisteach:

Orcastra airson MySQL: carson nach urrainn dhut pròiseact a tha fulang le lochdan a thogail às aonais
Bheir mi cunntas sa bhad air na suidheachaidhean follaiseach air am feumar suim a ghabhail:

  • Cha bu chòir an seòladh VIP a chlàradh san config air gin de na frithealaichean. Smaoinichidh sinn air suidheachadh: rinn am maighstir ath-thòiseachadh, agus fhad 'sa bha e a' luchdachadh, chaidh Orcastrator a-steach gu modh fàiligeadh agus rinn e fear de na tràillean na mhaighstir; an uairsin dh'èirich an t-seann mhaighstir, agus a-nis tha an VIP air dà chàr. Tha seo dona.
  • Airson an orcastra, feumaidh tu sgriobt a sgrìobhadh airson an t-seann mhaighstir agus am maighstir ùr a ghairm. Air an t-seann mhaighstir feumaidh tu ruith ifdown, agus air a’ mhaighstir ùr - ifup vip. Bhiodh e math cuideachd a bhith a’ toirt a-steach don sgriobt seo ma thachras fàilligeadh, gu bheil am port air tionndadh an t-seann mhaighstir dìreach air a chuir dheth gus splitbrain sam bith a sheachnadh.
  • Às deidh don Orchestrator do sgriobt a ghairm gus an VIP a thoirt air falbh agus / no am port a chuir às air an suidse, agus an uairsin an sgriobt togail VIP a ghairm air a ’mhaighstir ùr, na dìochuimhnich an àithne arping a chleachdadh gus innse don h-uile duine gu bheil an VIP ùr a-nis an seo.
  • Bu chòir gum biodh read_only=1 aig a h-uile tràill, agus cho luath 's a bhrosnaicheas tu an tràill dhan mhaighstir, bu chòir dha a bhith air read_only=0.
  • Na dì-chuimhnich gum faod tràill sam bith a thagh sinn airson seo a bhith na mhaighstir (tha inneal roghainn iomlan aig an Orcastra air am bu chòir tràill beachdachadh mar thagraiche airson maighstir ùr sa chiad àite, dè anns an dàrna àite, agus dè an tràill a bu chòir a mheas. gun a bhith air a thaghadh idir ann an suidheachadh sam bith maighstir). Ma thig an tràill gu bhith na mhaighstir, an uairsin fuirichidh eallach an tràill air agus thèid luchd a’ mhaighstir a chuir ris, feumar seo a thoirt fa-near.

Carson a tha feum agad air Orcastra mura h-eil fear agad?

  • Tha eadar-aghaidh grafaigeach furasta a chleachdadh aig an orcastra a sheallas an topology gu lèir (faic an dealbh gu h-ìosal).
  • Is urrainn don orcastra sùil a chumail air dè na tràillean a tha air dheireadh, agus far a bheil ath-riochdachadh mar as trice air briseadh sìos (tha sgriobtaichean againn ceangailte ris an Orcastra airson SMS a chuir).
  • Bidh orcastra ag innse dhut dè na tràillean aig a bheil mearachd GTID.

Eadar-aghaidh orcastra:

Orcastra airson MySQL: carson nach urrainn dhut pròiseact a tha fulang le lochdan a thogail às aonais
Dè a th’ ann am mearachd GTID?

Tha dà phrìomh riatanas ann airson Orcastra a bhith ag obair:

  • Tha e riatanach gum bi pseudo GTID air a chomasachadh air a h-uile inneal anns a’ bhuidheann MySQL; tha GTID air a chomasachadh.
  • Tha e riatanach gu bheil aon seòrsa de binlogs anns a h-uile àite, faodaidh tu aithris a chleachdadh. Bha rèiteachadh againn anns an robh Row aig a’ mhaighstir agus a’ mhòr-chuid de thràillean, agus dh’ fhan dithis gu h-eachdraidheil anns a’ mhodh Measgaichte. Mar thoradh air an sin, cha robh an Orcastra dìreach airson na tràillean sin a cheangal ris a’ mhaighstir ùr.

Cuimhnich gur e an rud as cudromaiche ann an tràill cinneasachaidh a cunbhalachd leis a ’mhaighstir! Ma tha Global Transaction ID (GTID) agad air a chomasachadh air gach cuid do mhaighstir agus do thràill, faodaidh tu an gnìomh gtid_subset a chleachdadh gus faighinn a-mach an deach na h-aon iarrtasan airson atharrachaidhean dàta a chuir gu bàs air na h-innealan sin. Faodaidh tu barrachd a leughadh mu dheidhinn seo an seo.

Mar sin, bidh Orcastra a’ sealltainn dhut tro mhearachd GTID gu bheil gnothaichean air an tràill nach eil air a’ mhaighstir. Carson a tha seo a’ tachairt?

  • Read_only=Chan eil 1 an comas air an tràill, cheangail cuideigin e agus chuir e crìoch air iarrtas airson dàta atharrachadh.
  • Super_read_only=Chan eil 1 an comas air an tràill, an uairsin chaidh an rianaire a-steach is chuir e an t-iarrtas an gnìomh an sin.
  • Ma thug thu aire don dà phuing roimhe, tha aon chleas eile ann: ann am MySQL, thèid iarrtas airson binlogs a shruthladh cuideachd chun a’ bhiona, agus mar sin aig a’ chiad shruth, nochdaidh mearachd GTID air a’ mhaighstir agus air na tràillean uile. Ciamar a sheachnadh seo? Thug Perona-5.7.25-28 a-steach an suidheachadh binlog_skip_flush_commands=1, a tha a’ toirmeasg sgrìobhadh sruthadh gu binlogaichean. Tha fear stèidhichte air làrach-lìn mysql.com buga.

Leig dhomh geàrr-chunntas a h-uile rud gu h-àrd. Mura h-eil thu airson Orchestrator a chleachdadh ann am modh failover fhathast, cuir ann am modh amharc e. An uairsin bidh agad an-còmhnaidh ro do shùilean mapa de eadar-obrachadh innealan MySQL agus fiosrachadh lèirsinneach mu dè an seòrsa mac-samhail a tha air gach inneal, a bheil na tràillean air dheireadh, agus nas cudromaiche, dè cho cunbhalach ‘s a tha iad leis a’ mhaighstir!

Is e a’ cheist fhollaiseach: “Ciamar a bu chòir don Orchestrator obrachadh?” Feumaidh e maighstir ùr a thaghadh bho na tràillean a th' ann an-dràsta, agus an uair sin na tràillean gu lèir ath-cheangal ris ('s e seo a tha a dhìth air GTID; ma chleachdas tu an t-seann uidheam le binlog_name agus binlog_pos, an uairsin ag atharrachadh tràill bhon mhaighstir làithreach gu fear ùr tha e dìreach do-dhèanta!). Mus robh Orcastra againn, bha agam ri seo a dhèanamh le làimh. Bha an seann mhaighstir crochte air sgàth rianadair buggy Adaptec; bha timcheall air 10 tràillean aige. Dh'fheumadh mi VIP a ghluasad bhon mhaighstir gu aon de na tràillean agus na tràillean eile ath-cheangal ris. Cia mheud consoles a dh'fheumadh mi fhosgladh, cia mheud òrdugh aig an aon àm a chuir mi a-steach ... bha agam ri feitheamh gu 3m, thoir air falbh an luchd bho na tràillean ach dhà, dèan a 'chiad inneal a-mach à dà mhaighstir, ceangail an dàrna inneal sa bhad ris, mar sin ceangail na tràillean eile gu lèir ris a’ mhaighstir ùr agus thoir air ais an luchd. Gu h-iomlan, uamhasach ...

Ciamar a bhios Orchestrator ag obair nuair a thèid e a-steach don mhodh failover? Tha seo air a nochdadh nas fhasa le eisimpleir de shuidheachadh far a bheil sinn airson maighstir a dhèanamh na inneal nas cumhachdaiche agus nas ùire na tha againn an-dràsta.

Orcastra airson MySQL: carson nach urrainn dhut pròiseact a tha fulang le lochdan a thogail às aonais
Tha an dealbh a’ sealltainn meadhan a’ phròiseis. Dè a chaidh a dhèanamh suas chun na h-ìre seo mar-thà? Thuirt sinn gun robh sinn airson cuid de thràill a dhèanamh na mhaighstir ùr, thòisich Orcastra dìreach ag ath-cheangal a h-uile tràill eile ris, leis a’ mhaighstir ùr ag obair mar inneal gluasaid. Leis an sgeama seo, chan eil mearachdan ann, bidh na tràillean uile ag obair, bidh Orcastra a’ toirt air falbh an VIP bhon t-seann mhaighstir, ga ghluasad chun fhear ùr, a’ dèanamh read_only=0 agus a’ dìochuimhneachadh mun t-seann mhaighstir. Uile! Is e àm dùnaidh na seirbheis againn an ùine gluasaid VIP, is e sin 2-3 diogan.

Tha sin uile airson an-diugh, tapadh leat a h-uile duine. Bidh dàrna artaigil ann mun Orchestrator a dh’ aithghearr. Anns an fhilm ainmeil Sobhietach “Garage,” thuirt aon charactar, “Cha bhithinn a’ dol a thaisbeanadh leis! ” Mar sin, Orcastra, rachainn còmhla riut air taisgealadh!

Source: www.habr.com

Cuir beachd ann