Imrich gun fhiosta de RabbitMQ gu Kubernetes

Imrich gun fhiosta de RabbitMQ gu Kubernetes

Tha RabbitMQ na broker teachdaireachd sgrìobhte ann an Erlang a leigeas leat cruinneachadh fàilligeadh a chuir air dòigh le làn ath-riochdachadh dàta thairis air ioma nodan, far am faod gach nód seirbheis a thoirt do iarrtasan leughaidh is sgrìobhaidh. Le mòran chruinneachaidhean Kubernetes ann an obair cinneasachaidh, tha sinn a’ toirt taic do àireamh mhòr de ionadan RabbitMQ agus bha sinn an aghaidh an fheum air dàta a ghluasad bho aon bhuidheann gu buidheann eile gun ùine downt.

Bha feum againn air an obair seo ann an co-dhiù dà chùis:

  1. A’ gluasad dàta bho bhuidheann RabbitMQ nach eil suidhichte ann an Kubernetes gu buidheann ùr - mar-thà “kubernetized” (ie ag obair ann am pods K8s) - cruinneachadh.
  2. Imrich RabbitMQ taobh a-staigh Kubernetes bho aon àite ainm gu àite eile (mar eisimpleir, ma tha cuairtean air an cuingealachadh le ainmean, an uairsin gus bun-structar a ghluasad bho aon chuairt gu cuairt eile).

Tha an reasabaidh a thathar a 'moladh san artaigil a' cuimseachadh air suidheachaidhean (ach chan eil e idir cuingealaichte riutha) anns a bheil seann bhuidheann RabbitMQ (mar eisimpleir, de 3 nodan), suidhichte an dàrna cuid ann an K8s no air cuid de sheann luchd-frithealaidh. Bidh tagradh air aoigheachd air Kubernetes (mar-thà ann no san àm ri teachd) ag obair leis:

Imrich gun fhiosta de RabbitMQ gu Kubernetes

agus tha e mar dhleastanas oirnn a ghluasad chun riochdachadh ùr ann an Kubernetes.

An toiseach, thèid cunntas a thoirt air an dòigh-obrach choitcheann airson an imrich fhèin, agus às deidh sin thèid mion-fhiosrachadh teicnigeach mu a bhuileachadh a mhìneachadh.

Algorithm imrich

Is e a’ chiad ìre, tòiseachaidh, ro ghnìomh sam bith dèanamh cinnteach gu bheil am modh ruigsinneachd àrd air a chomasachadh san t-seann stàladh RabbitMQ (HA). Tha an adhbhar follaiseach - chan eil sinn airson dàta sam bith a chall. Gus an sgrùdadh seo a dhèanamh, faodaidh tu a dhol gu pannal rianachd RabbitMQ agus anns an taba Rianachd → Poileasaidhean dèan cinnteach gu bheil an luach air a shuidheachadh ha-mode: all:

Imrich gun fhiosta de RabbitMQ gu Kubernetes

Is e an ath cheum cruinneachadh ùr RabbitMQ a thogail ann am pods Kubernetes (anns a ’chùis againn, mar eisimpleir, anns a bheil 3 nodan, ach dh’ fhaodadh an àireamh aca a bhith eadar-dhealaichte).

Às deidh seo, bidh sinn a’ toirt còmhla na cruinneachaidhean RabbitMQ sean agus ùr, a’ faighinn aon bhuidheann (de 6 nodan):

Imrich gun fhiosta de RabbitMQ gu Kubernetes

Tha am pròiseas sioncronaidh dàta eadar na cruinneachaidhean RabbitMQ sean agus ùr air tòiseachadh. Aon uair ‘s gu bheil an dàta gu lèir air a shioncronachadh eadar a h-uile nod sa bhuidheann, is urrainn dhuinn an tagradh atharrachadh gus am brabhsair ùr a chleachdadh:

Imrich gun fhiosta de RabbitMQ gu Kubernetes

Às deidh na h-obraichean sin, tha e gu leòr na seann nodan a thoirt air falbh bhon bhuidheann RabbitMQ, agus faodar beachdachadh air a’ ghluasad coileanta:

Imrich gun fhiosta de RabbitMQ gu Kubernetes

Tha sinn air an sgeama seo a chleachdadh iomadh uair ann an cinneasachadh. Ach, airson ar goireasachd fhèin, chuir sinn an gnìomh e taobh a-staigh siostam sònraichte a bhios a’ cuairteachadh rèiteachaidhean àbhaisteach RMQ thairis air grunn chlàran Kubernetes. (dhaibhsan a tha fiosrach: tha sinn a’ bruidhinn addon-ghnìomhaichemu bheil sinn dìreach o chionn ghoirid air innse). Gu h-ìosal bheir sinn seachad stiùireadh fa leth as urrainn do dhuine sam bith a chuir a-steach air na h-ionadan aca gus am fuasgladh a tha san amharc fheuchainn an gnìomh.

Feuch sinn e ann an cleachdadh

riatanasan

Tha mion-fhiosrachadh gu math sìmplidh:

  1. Buidheann Kubernetes (obraichidh minikube cuideachd);
  2. Buidheann RabbitMQ (faodar a chleachdadh air meatailt lom, agus a dhèanamh mar bhuidheann cunbhalach ann an Kubernetes bhon chairt Helm oifigeil).

Airson an eisimpleir gu h-ìosal, chuir mi RMQ gu Kubernetes agus thug mi ainm air rmq-old.

Ullachadh seasamh

1. Luchdaich sìos an clàr Helm agus deasaich e beagan:

helm fetch --untar stable/rabbitmq-ha

Airson goireasachd, shuidhich sinn facal-faire, ErlangCookie agus poilitigs a dhèanamh ha-allgus am bi na ciudhaichean air an sioncronachadh eadar a h-uile nod den bhuidheann RMQ:

rabbitmqPassword: guest
rabbitmqErlangCookie: mae9joopaol7aiVu3eechei2waiGa2we
definitions:
policies: |-
  {
    "name": "ha-all",
    "pattern": ".*",
    "vhost": "/",
    "definition": {
      "ha-mode": "all",
      "ha-sync-mode": "automatic",
      "ha-sync-batch-size": 81920
    }
  }

2. Stàlaich a 'chairt:

helm install . --name rmq-old --namespace rmq-old

3. Rach gu pannal rianachd RabbitMQ, cruthaich ciudha ùr agus cuir grunn bhrathan ris. Bidh feum orra gus an urrainn dhuinn dèanamh cinnteach às deidh imrich gu bheil an dàta gu lèir air a ghleidheadh ​​​​agus nach eil sinn air dad a chall:

Imrich gun fhiosta de RabbitMQ gu Kubernetes

Tha a’ bheing deuchainn deiseil: tha an “seann” RabbitMQ againn le dàta a dh’ fheumar a ghluasad.

Ag imrich buidheann RabbitMQ

1. An toiseach, leig dhuinn an RabbitMQ ùr a chuir a-steach caraid ainm-àite le aon ErlangCookie agus facal-faire airson an neach-cleachdaidh. Gus seo a dhèanamh, nì sinn na h-obraichean a tha air am mìneachadh gu h-àrd, ag atharrachadh an àithne mu dheireadh airson stàladh RMQ gu na leanas:

helm install . --name rmq-new --namespace rmq-new

2. A-nis feumaidh tu an cruinneachadh ùr a chur còmhla ris an t-seann fhear. Gus seo a dhèanamh, rachaibh gu gach aon de na pods ùr RabbitMQ agus cuir an gnìomh na h-òrdughan:

export OLD_RMQ=rabbit@rmq-old-rabbitmq-ha-0.rmq-old-rabbitmq-ha-discovery.rmq-old.svc.cluster.local && 
  rabbitmqctl stop_app && 
  rabbitmqctl join_cluster $OLD_RMQ && 
  rabbitmqctl start_app

Ann an caochlaideach OLD_RMQ lorgar seòladh aon de na nodan seann brabhsair RMQ.

Cuiridh na h-òrdughan seo stad air an nód làithreach ùr brabhsair RMQ, ceangail e ris an t-seann bhuidheann agus cuir air bhog a-rithist e.

3. Tha an cruinneachadh RMQ de 6 nodan deiseil:

Imrich gun fhiosta de RabbitMQ gu Kubernetes

Feumaidh tu feitheamh fhad ‘s a tha teachdaireachdan air an sioncronadh eadar a h-uile nod. Chan eil e duilich a thomhas gu bheil an ùine sioncronaidh teachdaireachd an urra ri comas a’ bhathar-chruaidh air a bheil am brabhsair air a chleachdadh agus air an àireamh de theachdaireachdan. Anns an t-suidheachadh a chaidh a mhìneachadh, chan eil ann ach 10 dhiubh, agus mar sin chaidh an dàta a shioncronachadh sa bhad, ach le àireamh mhòr gu leòr de theachdaireachdan, faodaidh sioncronadh mairsinn airson uairean a-thìde.

Mar sin, an suidheachadh sioncronaidh:

Imrich gun fhiosta de RabbitMQ gu Kubernetes

tha e +5 a’ ciallachadh gu bheil teachdaireachdan a-staigh mu thràth barrachd air 5 nodan (ach a-mhàin na tha air a chomharrachadh san raon Node). Mar sin, bha an sioncronadh soirbheachail.

4. Chan eil air fhàgail ach an seòladh RMQ san tagradh a thionndadh chun bhuidheann ùr (tha na gnìomhan sònraichte an seo an urra ris a’ chruach teicneòlais a tha thu a’ cleachdadh agus mion-fhiosrachadh an tagraidh eile), às deidh sin faodaidh tu soraidh slàn leis an t-seann fhear.

Airson an obrachaidh mu dheireadh (i.e. mu thràth после ag atharrachadh an tagraidh gu brabhsair ùr) rachaibh gu gach nód seann cruinneachadh agus cuir an gnìomh na h-òrdughan:

rabbitmqctl stop_app
rabbitmqctl reset

Dhìochuimhnich am buidheann “dhìochuimhnich” mu na seann nodan: faodaidh tu an seann RMQ a dhubhadh às, agus aig an àm sin thèid an gluasad a chrìochnachadh.

thuirt: Ma chleachdas tu RMQ le teisteanasan, chan atharraich dad gu bunaiteach - thèid am pròiseas gluasadach a dhèanamh dìreach mar an ceudna.

toraidhean

Tha an sgeama a chaidh a mhìneachadh freagarrach airson cha mhòr a h-uile cùis nuair a dh’ fheumas sinn imrich a dhèanamh air RabbitMQ no dìreach gluasad gu buidheann ùr.

Anns a 'chùis againn, cha do dh' èirich duilgheadasan ach aon turas, nuair a chaidh faighinn a-steach gu RMQ bho iomadh àite, agus cha robh cothrom againn an seòladh RMQ atharrachadh gu fear ùr anns a h-uile àite. An uairsin chuir sinn RMQ ùr air bhog anns an aon ainm-àite leis na h-aon bhileagan gus am biodh e fo na seirbheisean a th’ ann mar-thà agus Ingresses, agus nuair a chuir sinn air bhog am pod rinn sinn làimhseachadh air na bileagan le làimh, gan toirt air falbh aig an toiseach gus nach tuiteadh iarrtasan air an falamh RMQ, agus gan cur air ais às deidh na teachdaireachdan a bhith air an sioncronadh.

Chleachd sinn an aon ro-innleachd nuair a bha sinn ag ùrachadh RabbitMQ gu dreach ùr le rèiteachadh atharraichte - bha a h-uile dad ag obair mar ghleoc.

PS

Mar leantainn loidsigeach den stuth seo, tha sinn ag ullachadh artaigilean mu MongoDB (imrich bho fhrithealaiche bathar-cruaidh gu Kubernetes) agus MySQL (mar a bhios sinn ag ullachadh an DBMS seo taobh a-staigh Kubernetes). Thèid am foillseachadh anns na mìosan a tha romhainn.

Pps

Leugh cuideachd air ar blog:

Source: www.habr.com

Cuir beachd ann