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:
- Ukudlulisa idatha ukusuka kwiqela leRabbitMQ elingekho kwi-Kubernetes ukuya kwentsha - esele "kubernetized" (okt ukusebenza kwii-K8s pods) - iqoqo.
- 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:
... 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-mode: all
:
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):
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:
Emva kwale misebenzi, kwanele ukususa ii-nodes ezindala kwiqela le-RabbitMQ, kwaye ukuhamba kunokuqwalaselwa kugqityiweyo:
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
Masiyizame ngokusebenza
iimfuno
Iinkcukacha zilula kakhulu:
- Iqela leKubernetes (i-minikube nayo iya kusebenza);
- 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-all
ukuze 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:
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:
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:
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:
- Β«
Iidatabase kunye neKubernetes (uphononongo kunye nengxelo yevidiyo) "; - Β«
Iingcebiso kunye namaqhinga e-K8s: Ukukhawulezisa i-bootstrap kwiziko ledatha elikhulu Β».
umthombo: www.habr.com