I-RabbitMQ engenamthungo ukuya kwi-Kubernetes imfuduko

I-RabbitMQ engenamthungo ukuya kwi-Kubernetes imfuduko

I-RabbitMQ yi-broker yomyalezo ebhalwe kwi-Erlang ekuvumela ukuba uququzelele i-failover cluster kunye nokuphindaphinda kwedatha epheleleyo kwiindawo ezininzi, apho i-node nganye inokufunda kunye nokubhala izicelo. Ukuba namaqela amaninzi e-Kubernetes ekusebenzeni kwemveliso, sixhasa inani elikhulu lofakelo lwe-RabbitMQ kwaye sasijongene nesidingo sokufuduka idatha ukusuka kwelinye iqela ukuya kwelinye ngaphandle kwexesha lokuphumla.

Ubuncinci besilufuna olu tyando kwiimeko ezimbini:

  1. Ukudlulisa idatha ukusuka kwiqela leRabbitMQ elingekho kwi-Kubernetes ukuya kwentsha - esele "kubernetized" (okt ukusebenza kwii-K8s pods) - iqoqo.
  2. Ukufuduka kwe-RabbitMQ ngaphakathi kwe-Kubernetes ukusuka kwi-namespace ukuya kwenye (umzekelo, ukuba iisekethe zihlulwe ngeendawo zamagama, ngoko ke ukuhambisa iziseko zophuhliso ukusuka kwesinye isiphaluka ukuya kwenye).

I-recipe ecetywayo kwinqaku igxile kwiimeko (kodwa ayiphelelanga kuzo zonke) apho kukho iqela elidala le-RabbitMQ (umzekelo, ii-nodes ezi-3), esele ikhona kwi-K8 okanye kwezinye iiseva ezindala. Isicelo esibanjwe kwi-Kubernetes (sele ikhona okanye kwixesha elizayo) sisebenza nayo:

I-RabbitMQ engenamthungo ukuya kwi-Kubernetes imfuduko

... kwaye sijongene nomsebenzi wokufudukela kwimveliso entsha eKubernetes.

Okokuqala, indlela eqhelekileyo yokufuduka ngokwayo iya kuchazwa, kwaye emva koko iinkcukacha zobugcisa bokuphunyezwa kwayo ziya kuchazwa.

I-algorithm yokufuduka

Eyokuqala, eyandulelayo, inqanaba phambi kwaso nasiphi na isenzo kukukhangela ukuba imowudi yokufumaneka ephezulu yenziwe kufakelo oludala lweRabbitMQ (HA). Isizathu sicacile - asifuni kulahlekelwa nayiphi na idatha. Ukwenza oku kukhangela, ungaya kwiqela lephaneli yomlawuli weRabbitMQ kwaye kwi-Admin β†’ Imigaqo-nkqubo ithebhu qinisekisa ukuba ixabiso libekiwe. ha-mode: all:

I-RabbitMQ engenamthungo ukuya kwi-Kubernetes imfuduko

Isinyathelo esilandelayo kukuphakamisa iqela elitsha le-RabbitMQ kwi-Kubernetes pods (kwimeko yethu, umzekelo, equlethwe ngama-nodes ama-3, kodwa inani labo linokuhluka).

Emva koku, sidibanisa amaqoqo amadala kunye namatsha eRabbitMQ, sifumana iqoqo elinye (kwiindawo ezi-6):

I-RabbitMQ engenamthungo ukuya kwi-Kubernetes imfuduko

Inkqubo yokulungelelaniswa kwedatha phakathi kwamaqela amadala kunye namatsha eRabbitMQ iqalisiwe. Nje ukuba yonke idatha idityaniswe phakathi kwazo zonke iindawo ezikwiqela, sinokutshintsha usetyenziso ukuze sisebenzise iqela elitsha:

I-RabbitMQ engenamthungo ukuya kwi-Kubernetes imfuduko

Emva kwale misebenzi, kwanele ukususa ii-nodes ezindala kwiqela le-RabbitMQ, kwaye ukuhamba kunokuqwalaselwa kugqityiweyo:

I-RabbitMQ engenamthungo ukuya kwi-Kubernetes imfuduko

Sisebenzise le nkqubo amaxesha amaninzi kwimveliso. Nangona kunjalo, ukulungiselela thina, siye sayiphumeza ngaphakathi kwenkqubo ekhethekileyo ehambisa ulungelelwaniso olusemgangathweni lweRMQ kuwo wonke amaqela eKubernetes amaninzi. (kwabo banomdla: sithetha ngayo i-addon-operatormalunga nathi kutsha nje kubaliswa). Apha ngezantsi siza kubonisa imiyalelo yomntu ngamnye anokuthi nabani na angayisebenzisa kufakelo lwakhe ukuzama isisombululo esicetywayo sisebenza.

Masiyizame ngokusebenza

iimfuno

Iinkcukacha zilula kakhulu:

  1. Iqela leKubernetes (i-minikube nayo iya kusebenza);
  2. Iqela leRabbitMQ (linokufakwa kwintsimbi engenanto, kwaye lenziwe njengeqela eliqhelekileyo kwi-Kubernetes ukusuka kwitshathi yeHelm esemthethweni).

Umzekelo ongezantsi, ndathumela i-RMQ kwi-Kubernetes kwaye ndiyibiza rmq-old.

Yima ukulungiselela

1. Khuphela itshathi yeHelm kwaye uyihlele kancinci:

helm fetch --untar stable/rabbitmq-ha

Ukuze kube lula, siseta igama eliyimfihlo, ErlangCookie kwaye wenze ipolitiki ha-allukuze ngokungagqibekanga imigca idityaniswe ngaxeshanye phakathi kwazo zonke iindawo zeqela leRMQ:

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. Faka itshathi:

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

3. Yiya kwindawo yolawulo yeRabbitMQ, yenza umgca omtsha kwaye wongeze imiyalezo emininzi. Ziya kufuneka ukuze emva kokufuduka siqinisekise ukuba yonke idatha igcinwe kwaye asilahlekanga nantoni na:

I-RabbitMQ engenamthungo ukuya kwi-Kubernetes imfuduko

Ibhentshi yokuvavanya ilungile: sineRabbitMQ "endala" enedatha efuna ukudluliselwa.

Ukufuduka kwiqela leRabbitMQ

1. Okokuqala, makhe sisebenzise iRabbitMQ entsha umhlobo indawo yegama nge efanayo ErlangCookie kunye negama lokugqitha lomsebenzisi. Ukwenza oku, siya kwenza imisebenzi echazwe ngasentla, sitshintsha umyalelo wokugqibela wokufaka iRMQ koku kulandelayo:

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

2. Ngoku kufuneka udibanise iqela elitsha kunye nendala. Ukwenza oku, yiya kwi-pods nganye intsha RabbitMQ kwaye wenze imiyalelo:

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

Iyaguquguquka OLD_RMQ idilesi yenye yeenodi ifunyenwe indala Iqela le-RMQ.

Le miyalelo izakumisa indawo yangoku intsha Iqela le-RMQ, lincamathele kwiqela elidala kwaye uliqalise kwakhona.

3. Iqela le-RMQ yeenodi ezi-6 sele lilungile:

I-RabbitMQ engenamthungo ukuya kwi-Kubernetes imfuduko

Kufuneka ulinde ngelixa imiyalezo ingqamana phakathi kwazo zonke iindawo. Akunzima ukuqikelela ukuba ixesha longqamaniso lomyalezo lixhomekeke kumthamo we-hardware apho iqela libekwe khona kunye nenani lemiyalezo. Kwimeko echaziweyo, kukho i-10 kuphela kubo, ngoko ke idatha yadityaniswa ngoko nangoko, kodwa ngenani elikhulu ngokwaneleyo lemiyalezo, ungqamaniso lunokuhlala iiyure.

Ke, imeko yongqamaniso:

I-RabbitMQ engenamthungo ukuya kwi-Kubernetes imfuduko

kuyinto +5 kuthetha ukuba imiyalezo sele ingenile ngaphezulu kwiindawo ezi-5 (ngaphandle koko kuboniswe ebaleni Node). Ngaloo ndlela, ungqamaniso lube yimpumelelo.

4. Konke okuseleyo kukutshintsha idilesi ye-RMQ kwisicelo kwiqela elitsha (izenzo ezithile apha zixhomekeke kwisitaki sobuchwephesha osisebenzisayo kunye nezinye iinkcukacha zesicelo), emva koko unokuthi uvalelise kumdala.

Kumsebenzi wokugqibela (i.e. sele послС ukutshintshela usetyenziso kwiqela elitsha) yiya kwindawo nganye indala hlanganisa kwaye uphumeze imiyalelo:

rabbitmqctl stop_app
rabbitmqctl reset

Iqela "likhohliwe" malunga neendawo ezindala: unokucima i-RMQ endala, ngelo xesha ukuhamba kuya kugqitywa.

Qaphela:: Ukuba usebenzisa i-RMQ kunye nezatifikethi, ngoko akukho nto iguqukayo - inkqubo ehambayo iya kuqhutywa ngokufanayo.

ezifunyanisiweyo

Iskimu esichaziweyo sifanelekile phantse kuzo zonke iimeko xa sifuna ukufuduka kwi-RabbitMQ okanye sihambe siye kwiqela elitsha.

Kwimeko yethu, ubunzima buvela kanye kuphela, xa i-RMQ ifunyenwe kwiindawo ezininzi, kwaye asizange sibe nethuba lokutshintsha idilesi ye-RMQ entsha kuyo yonke indawo. Emva koko sasungula i-RMQ entsha kwindawo yegama elifanayo kunye neelebhile ezifanayo ukwenzela ukuba iwele phantsi kweenkonzo ezikhoyo kunye ne-Ingresses, kwaye xa usungula i-pod sayiphatha iilebhile ngesandla, siyisusa ekuqaleni ukuze izicelo zingaweli kwi. RMQ engenanto, kwaye ubongeze emva emva kokuba imiyalezo idityanisiwe.

Sisebenzise isicwangciso esifanayo xa sihlaziya i-RabbitMQ kwinguqulelo entsha kunye nohlengahlengiso olutshintshileyo - yonke into yasebenza njengewotshi.

PS

Njengokuqhubeka okunengqiqo kwesi sixhobo, silungiselela amanqaku malunga ne-MongoDB (ukufuduka kwi-hardware server ukuya kwi-Kubernetes) kunye ne-MySQL (indlela esiyilungiselela ngayo le DBMS ngaphakathi kwe-Kubernetes). Ziya kupapashwa kwiinyanga ezizayo.

Iipps

Funda nakwibhlog yethu:

umthombo: www.habr.com

Yongeza izimvo