U haajiridda bilaa xadka ah ee RabbitMQ ee Kubernetes

U haajiridda bilaa xadka ah ee RabbitMQ ee Kubernetes

RabbitMQ waa dallaal fariin ah oo ku qoran Erlang kaas oo kuu ogolaanaya inaad habayso koox guuldaraystay oo leh xog buuxda oo ku celcelinaysa qanjidhada badan, halkaas oo nood kastaa ka shaqayn karo akhrinta iyo qorista codsiyada. Haysashada kooxo badan oo Kubernetes ah oo ku jira hawlgalka wax soo saarka, waxaanu taageernaa tiro badan oo rakibaadda RabbitMQ waxaana la kulmay baahida loo qabo in xogta laga guuro hal koox una guurto mid kale iyada oo aan wakhti la helin.

Waxaan ugu baahanahay qaliinkan ugu yaraan laba xaaladood:

  1. Ka wareejinta xogta kooxda RabbitMQ ee aan ku jirin Kubernetes una wareejinaysa mid cusub - oo horeba "kubernetized" (ie. ka shaqaynta K8s pods) - kutlada.
  2. U haajiridda RabbitMQ gudaha Kubernetes laga bilaabo hal magac oo magac kale loo beddelo (tusaale ahaan, haddii wareegyada ay xaddidan yihiin meelo magacyo ah, ka dib si loogu wareejiyo kaabayaasha hal wareeg oo kale).

Cuntada la soo jeediyay ee maqaalku waxay diiradda saaraysaa xaaladaha (laakiin aan ku xaddidnayn iyaga) kuwaas oo ay ku jiraan koox RabbitMQ duug ah (tusaale ahaan, 3 nodes), oo ku yaal horeba K8s ama qaar ka mid ah server-yadii hore. Codsiga lagu hayo Kubernetes (horey u jiray ama mustaqbalka) ayaa la shaqeeya:

U haajiridda bilaa xadka ah ee RabbitMQ ee Kubernetes

... waxaana ina soo food saartay hawsha u haajiridda wax soo saarka cusub ee Kubernetes.

Marka hore, habka guud ee socdaalka laftiisa ayaa la tilmaami doonaa, ka dibna tafatirka farsamada ee hirgelintiisa ayaa la tilmaami doonaa.

Algorithm socdaalka

Midka ugu horreeya, horudhaca, marxaladda ficil kasta ka hor waa in la hubiyo in habka helitaanka sare uu karti u leeyahay rakibaadda hore ee RabbitMQ (HA). Sababta waa caddahay - ma rabno inaan lumino wax xog ah. Si aad u sameyso jeegaan, waxaad aadi kartaa guddiga maamulka RabbitMQ iyo gudaha maamulka β†’ Siyaasadaha hubi in qiimaha la dejiyay. ha-mode: all:

U haajiridda bilaa xadka ah ee RabbitMQ ee Kubernetes

Talaabada xigta waa in kor loo qaado kooxda RabbitMQ cusub ee Kubernetes pods (xaaladkeena, tusaale ahaan, ka kooban 3 nood, laakiin lambarkoodu wuu ka duwanaan karaa).

Taas ka dib, waxaan isku darnaa rucubyadii hore iyo kuwa cusub ee RabbitMQ, anagoo heleyna hal koox (oo ah 6 qanjidh):

U haajiridda bilaa xadka ah ee RabbitMQ ee Kubernetes

Habka isku xidhka xogta ee u dhexeeya kooxihii hore iyo kuwa cusub ee RabbitMQ waa la bilaabay. Marka xogta oo dhan la mideeyo inta u dhaxaysa dhammaan qanjidhada kooxda, waxaan u bedeli karnaa codsiga si aan u isticmaalno kooxda cusub:

U haajiridda bilaa xadka ah ee RabbitMQ ee Kubernetes

Hawlgalladan ka dib, way ku filan tahay in laga saaro qanjidhada hore ee kooxda RabbitMQ, guuritaankana waxaa loo tixgelin karaa mid dhammaystiran:

U haajiridda bilaa xadka ah ee RabbitMQ ee Kubernetes

Qorshahan marar badan ayaan u isticmaalnay wax soo saarka. Si kastaba ha ahaatee, annagu si ku habboonaanteena ah, waxaan ku hirgelinay nidaam gaar ah oo u qaybiya qaabeynta RMQ caadiga ah ee kutlooyinka badan ee Kubernetes (kuwa xiiseeya: waxaan ka hadlaynaa addon-operatortaas oo aanu dhawaan ayaa sheegay). Hoos waxaan ku soo bandhigi doonaa tilmaamo gaar ah oo qof kastaa uu codsan karo rakibaadooda si ay isugu dayaan xalka la soo jeediyay ee ficil ahaan.

Aan ku tijaabino ficil ahaan

shuruudaha

Faahfaahinta waa mid aad u fudud:

  1. Kooxda Kubernetes (minikube sidoo kale wuu shaqayn doonaa);
  2. Kooxda RabbitMQ (waxaa lagu dhejin karaa bir qaawan, waxaana loo samayn karaa sida kutlada caadiga ah ee Kubernetes ee shaxda Helm ee rasmiga ah).

Tusaalaha hoose, waxaan geeyay RMQ Kubernetes oo wacay rmq-old.

Istaag diyaarinta

1. Soo deji shaxda Helm oo wax yar ka beddel:

helm fetch --untar stable/rabbitmq-ha

Si ku habboon, waxaan dejinay furaha sirta ah, ErlangCookie siyaasadna ka dhigaan ha-allsi sida caadiga ah safafku u dhexeeyo dhammaan qanjidhada kooxda 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. Ku rakib shaxda:

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

3. Tag maamulka maamulka RabbitMQ, samee saf cusub oo ku dar dhowr fariimo. Waxay u baahan doonaan si socdaalka ka dib aan u hubin karno in dhammaan xogta la ilaaliyo oo aan waxba naga lumin:

U haajiridda bilaa xadka ah ee RabbitMQ ee Kubernetes

Kursiga imtixaanku waa diyaar: waxaanu haynaa RabbitMQ-gii hore oo leh xog u baahan in la wareejiyo.

U guuraya koox RabbitMQ

1. Marka hore, aan geyno RabbitMQ-ka cusub gudaha saaxiib meel magac leh isku mid ah ErlangCookie iyo erayga sirta ah ee isticmaalaha. Si tan loo sameeyo, waxaanu samayn doonaa hawlgallada kor lagu sharaxay, beddelo amarka ugu dambeeya ee rakibidda RMQ kuwan soo socda:

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

2. Hadda waxaad u baahan tahay inaad ku biirto kooxda cusub iyo tii hore. Si tan loo sameeyo, u tag mid kasta oo ka mid ah kubadaha cusub RabbitMQ oo fuli amarada:

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

Doorsoome OLD_RMQ ciwaanka mid ka mid ah noodyada ayaa la helayaa duqoobay Kooxda RMQ.

Awaamiirtan ayaa joojin doona noodhka hadda jira cusub Kutlada RMQ, ku dheji kutladii hore oo dib u bilow.

3. Kooxda RMQ ee 6 noodes waa diyaar:

U haajiridda bilaa xadka ah ee RabbitMQ ee Kubernetes

Waa inaad sugtaa inta fariimaha la isla meel dhigayo inta u dhaxaysa dhammaan noodhka. Ma adka in la qiyaaso in wakhtiga isku-xidhka fariintu ay ku xidhan tahay awooda qalabka ay kooxdu ku socoto iyo tirada fariimaha. Xaaladda la sharraxay, waxaa jira 10 ka mid ah oo keliya, sidaas darteed xogta ayaa isla markiiba la is-waafajiyay, laakiin farriimaha tirada badan ee ku filan, wada-shaqeyntu waxay socon kartaa saacado.

Markaa, heerka wada shaqaynta:

U haajiridda bilaa xadka ah ee RabbitMQ ee Kubernetes

waa +5 macneheedu waxa weeye fariimaha ayaa hore u galay dheeraad ah on 5 nodes (marka laga reebo waxa lagu tilmaamay berrinka Node). Sidaa darteed, isku-dubbaridku waa lagu guulaystay.

4. Waxa hadhay oo dhan waa in aad u bedesho ciwaanka RMQ ee codsiga una wareejiso kutlada cusub (ficilada gaarka ah ee halkan ku yaala waxa ay ku xidhan yihiin kaydka tignoolajiyada ee aad isticmaalayso iyo waxyaalaha kale ee codsiga ah),kadib waxa aad macsalaamayn kartaa kii hore.

Qalliinkii ugu dambeeyay (tusaale horeba послС U beddelashada arjiga koox cusub) u gudub nood kasta duqoobay kooxa oo fuliya amarada:

rabbitmqctl stop_app
rabbitmqctl reset

Kooxdu "waxay illowday" qanjidhada hore: waxaad tirtiri kartaa RMQ-kii hore, markaas oo guuritaanka la dhamaystiri doono.

tacliiq: Haddii aad isticmaasho RMQ oo leh shahaadooyin, markaa ma jiraan wax isbeddel ah oo aasaasi ah - habka guuritaanka ayaa la fulin doonaa si isku mid ah.

natiijooyinka

Nidaamka la sharraxay wuxuu ku habboon yahay dhammaan kiisaska marka aan u baahanahay inaan u haajiro RabbitMQ ama si fudud ugu guurno koox cusub.

Xaaladeena, dhibaato ayaa soo baxday hal mar oo keliya, markii RMQ laga soo galay meelo badan, fursadna uma aan helin inaan ciwaanka RMQ ka bedelno mid cusub oo meel kasta ah. Dabadeed waxaanu soo saarnay RMQ cusub oo isla magacaas ah oo isku mid ah si uu u hoos yimaado adeegyadii hore u jiray iyo kuwa soo galayba, markii aanu furnay bakhaarka waxaanu gacanta ku samaynay calaamadihii, anagoo bilawgii hore ka saarnay si aanay codsiyadu ugu dhicin RMQ maran, oo ku soo celi iyaga ka dib marka fariimaha la mideeyo.

Waxaan isticmaalnay isla istiraatiijiyad la mid ah markii aan cusbooneysiinay RabbitMQ qaab cusub oo leh qaabeyn la beddelay - wax walba waxay u shaqeeyeen sida saacad.

PS

Sida macquulka ah u sii wadida walxahan, waxaan diyaarineynaa maqaallo ku saabsan MongoDB (u haajiridda kambuyuutar qalabeedka una socda Kubernetes) iyo MySQL (sida aan ugu diyaarino DBMS gudaha Kubernetes). Waxa la daabici doonaa bilaha soo socda.

PPS

Sidoo kale ka akhri boggayaga:

Source: www.habr.com

Add a comment