Ukufuduka okungenamthungo kwe-RabbitMQ kuya e-Kubernetes

Ukufuduka okungenamthungo kwe-RabbitMQ kuya e-Kubernetes

I-RabbitMQ iwumthengisi womlayezo obhalwe nge-Erlang okuvumela ukuthi uhlele iqoqo le-failover eliphindaphinda idatha egcwele ezindaweni eziningi, lapho inodi ngayinye ingakwazi ukufunda nokubhala izicelo. Njengoba sinamaqoqo amaningi e-Kubernetes ekusebenzeni kokukhiqiza, sisekela inombolo enkulu yokufakwa kwe-RabbitMQ futhi siye sabhekana nesidingo sokuthutha idatha isuka kwelinye iqoqo iye kwelinye ngaphandle kokuphelelwa yisikhathi.

Besidinga lokhu kusebenza okungenani ezimweni ezimbili:

  1. Kudluliswa idatha kusuka kuqoqo le-RabbitMQ elingekho e-Kubernetes kuya kwentsha - kakade "i-kubernetized" (okungukuthi esebenza kuma-pods e-K8s) - iqoqo.
  2. Ukufuduka kwe-RabbitMQ ngaphakathi kwe-Kubernetes isuka endaweni yamagama iye kwenye (isibonelo, uma amasekethe ehlukaniswa yizikhala zamagama, bese kudluliselwa ingqalasizinda isuka kwenye isekethe iye kwenye).

Iresiphi ehlongozwayo esihlokweni igxile ezimweni (kodwa ayikhawulelwe kuzo zonke) lapho kukhona iqoqo elidala le-RabbitMQ (isibonelo, lama-node angu-3), elisevele liku-K8 noma kwamanye amaseva amadala. Uhlelo lokusebenza olusingathwe ku-Kubernetes (seluvele lukhona noma ngokuzayo) lusebenza nalo:

Ukufuduka okungenamthungo kwe-RabbitMQ kuya e-Kubernetes

... futhi sibhekene nomsebenzi wokuyithuthela emkhiqizweni omusha ku-Kubernetes.

Okokuqala, indlela evamile yokufuduka ngokwayo izochazwa, futhi ngemva kwalokho imininingwane yezobuchwepheshe yokuqaliswa kwayo izochazwa.

I-algorithm yokufuduka

Isiteji sokuqala, esandulelayo, ngaphambi kwanoma yisiphi isenzo ukuhlola ukuthi imodi yokutholakala ephezulu ivuliwe ekufakweni okudala kwe-RabbitMQ (HA). Isizathu sisobala - asifuni ukulahlekelwa idatha. Ukuze wenze lokhu kuhlola, ungaya kuphaneli yomqondisi we-RabbitMQ futhi kuthebhu ethi Admin β†’ Izinqubomgomo qinisekisa ukuthi inani limisiwe. ha-mode: all:

Ukufuduka okungenamthungo kwe-RabbitMQ kuya e-Kubernetes

Isinyathelo esilandelayo ukukhulisa iqoqo elisha le-RabbitMQ kuma-pods e-Kubernetes (kithi, isibonelo, ahlanganisa ama-node angu-3, ​​kodwa inombolo yawo ingase ihluke).

Ngemva kwalokhu, sihlanganisa amaqoqo amadala namasha akwa-RabbitMQ, sithola iqoqo elilodwa (lamaphuzu angu-6):

Ukufuduka okungenamthungo kwe-RabbitMQ kuya e-Kubernetes

Inqubo yokuvumelanisa idatha phakathi kwamaqoqo amadala namasha e-RabbitMQ iyaqalwa. Uma yonke idatha isivumelanisiwe phakathi kwawo wonke amanodi kuqoqo, singashintsha uhlelo lokusebenza ukuze sisebenzise iqoqo elisha:

Ukufuduka okungenamthungo kwe-RabbitMQ kuya e-Kubernetes

Ngemuva kwalokhu kusebenza, kwanele ukususa ama-node amadala kuqoqo le-RabbitMQ, futhi ukunyakaza kungabhekwa njengokuphelele:

Ukufuduka okungenamthungo kwe-RabbitMQ kuya e-Kubernetes

Sisebenzise lolu hlelo izikhathi eziningi ekukhiqizeni. Kodwa-ke, ukuze kube lula ngathi, sikusebenzise ngaphakathi kwesistimu ekhethekile esabalalisa ukulungiselelwa okujwayelekile kwe-RMQ kumaqoqo amaningi e-Kubernetes. (kulabo abafuna ukwazi: sikhuluma ngakho i-addon-opharethamayelana nathi ngisanda kutshelwa). Ngezansi sizokwethula imiyalelo ngayinye noma ubani angayisebenzisa ekufakeni kwakhe ukuze azame isisombululo esihlongozwayo sisebenza.

Ake sizame ngokwenza

izidingo

Imininingwane ilula kakhulu:

  1. I-Kubernetes cluster (i-minikube nayo izosebenza);
  2. Iqoqo le-RabbitMQ (lingatshalwa ngensimbi engenalutho, futhi lenziwe njengeqoqo elivamile e-Kubernetes kusukela kushadi elisemthethweni le-Helm).

Ngesibonelo esingezansi, ngithumele i-RMQ ku-Kubernetes futhi ngiyibiza rmq-old.

Ukuma ukulungiselela

1. Landa ishadi le-Helm futhi ulihlele kancane:

helm fetch --untar stable/rabbitmq-ha

Ukuze kube lula, sibeka iphasiwedi, ErlangCookie nokwenza ipolitiki ha-allukuze ngokuzenzakalelayo imigqa ivumelaniswe phakathi kwawo wonke ama-cluster node e-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. Faka ishadi:

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

3. Yiya kuphaneli yomqondisi we-RabbitMQ, dala umugqa omusha bese wengeza imilayezo embalwa. Zizodingeka ukuze ngemva kokufuduka siqinisekise ukuthi yonke idatha igciniwe futhi asilahlekelwanga lutho:

Ukufuduka okungenamthungo kwe-RabbitMQ kuya e-Kubernetes

Ibhentshi lokuhlola selilungile: sineRabbitMQ β€œendala” enedatha edinga ukudluliselwa.

Ithutha iqoqo le-RabbitMQ

1. Okokuqala, ake sikhiphe i-RabbitMQ entsha umngane indawo yegama nge okufanayo ErlangCookie kanye nephasiwedi yomsebenzisi. Ukwenza lokhu, sizokwenza imisebenzi echazwe ngenhla, sishintsha umyalo wokugcina wokufaka i-RMQ kulokhu okulandelayo:

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

2. Manje udinga ukuhlanganisa iqoqo elisha nelidala. Ukuze wenze lokhu, hamba ku-pods ngayinye okusha RabbitMQ bese ukhipha imiyalo:

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

Ngokuguquguqukayo OLD_RMQ ikheli lenye yezindawo liyatholakala endala Iqoqo le-RMQ.

Le miyalo izomisa inodi yamanje okusha Iqoqo le-RMQ, linamathisele kuqoqo elidala bese uliqalisa futhi.

3. Iqoqo le-RMQ lamanodi angu-6 selilungile:

Ukufuduka okungenamthungo kwe-RabbitMQ kuya e-Kubernetes

Kufanele ulinde ngenkathi imilayezo ivumelaniswa phakathi kwawo wonke ama-node. Akunzima ukuqagela ukuthi isikhathi sokuvumelanisa umlayezo sincike kumthamo wehadiwe lapho iqoqo lisetshenziselwe khona kanye nenani lemilayezo. Esimeni esichaziwe, kukhona eziyi-10 kuphela, ngakho-ke idatha yavumelaniswa khona manjalo, kodwa ngenani elikhulu ngokwanele lemilayezo, ukuvumelanisa kungathatha amahora.

Ngakho, isimo sokuvumelanisa:

Ukufuduka okungenamthungo kwe-RabbitMQ kuya e-Kubernetes

kuyinto +5 kusho ukuthi imilayezo isingenile ngaphezulu kumanodi angu-5 (ngaphandle kwalokho okukhonjiswe ensimini Node). Ngakho, ukuvumelanisa kube yimpumelelo.

4. Okusele nje ukushintsha ikheli le-RMQ kuhlelo lokusebenza ku-cluster entsha (izenzo ezithile lapha zincike kusitaki sobuchwepheshe osisebenzisayo kanye nokunye okucacisiwe kohlelo lokusebenza), ngemva kwalokho ungavalelisa kwelidala.

Okokusebenza kokugcina (okungukuthi kakade послС ukushintsha uhlelo lokusebenza kuqoqo elisha) iya endaweni ngayinye endala cluster bese ukhipha imiyalo:

rabbitmqctl stop_app
rabbitmqctl reset

Iqoqo "likhohliwe" mayelana namanodi amadala: ungasusa i-RMQ endala, lapho ukuthutha kuzoqedwa.

Ukubhala: Uma usebenzisa i-RMQ enezitifiketi, akukho lutho olushintshayo - inqubo ehambayo izokwenziwa ngendlela efanayo.

okutholakele

Uhlelo oluchaziwe lufanele cishe zonke izimo lapho sidinga ukuthutha i-RabbitMQ noma simane sidlulele kuqoqo elisha.

Kithina, ubunzima buvele kanye kuphela, lapho i-RMQ ifinyelelwa ezindaweni eziningi, futhi asizange sibe nethuba lokushintsha ikheli le-RMQ libe elisha yonke indawo. Sabe sethula i-RMQ entsha endaweni yamagama efanayo enamalebula afanayo ukuze iwele ngaphansi kwezinsizakalo ezikhona kanye ne-Ingresses, futhi lapho sethula i-pod sasebenzisa amalebula ngesandla, sawasusa ekuqaleni ukuze izicelo zingaweli i-RMQ engenalutho, bese uyengeza ngemuva kokuthi imilayezo isivumelanisiwe.

Sisebenzise isu elifanayo lapho sibuyekeza i-RabbitMQ iye enguqulweni entsha enokulungiselelwa okushintshile - yonke into ibisebenza njengewashi.

PS

Njengokuqhubeka okunengqondo kwalokhu kwaziswa, silungiselela izindatshana mayelana ne-MongoDB (ukufuduka kusuka kuseva yehadiwe kuya ku-Kubernetes) kanye ne-MySQL (indlela esiyilungisa ngayo le DBMS ngaphakathi kwe-Kubernetes). Zizoshicilelwa ezinyangeni ezizayo.

I-PPS

Funda futhi kubhulogi yethu:

Source: www.habr.com

Engeza amazwana