Seamless kutama kweRabbitMQ kuenda Kubernetes

Seamless kutama kweRabbitMQ kuenda Kubernetes

RabbitMQ ndeye meseji broker yakanyorwa muErlang iyo inokutendera iwe kuronga failover cluster ine yakazara data replication munzvimbo dzakawanda, uko imwe neimwe node inogona kushanda kuverenga nekunyora zvikumbiro. Kuve nemasumbu mazhinji eKubernetes mukushanda kwekugadzira, isu tinotsigira nhamba huru yeRabbitMQ yekumisikidza uye takatarisana nekudiwa kwekutamisa data kubva kune rimwe sumbu kuenda kune rimwe pasina nguva yekudzikira.

Taida oparesheni iyi mune dzinenge mbiri nyaya:

  1. Kuendesa data kubva kuRabbitMQ cluster iyo isiri muKubernetes kune itsva - yatove "kubernetized" (kureva kushanda muK8s pods) - cluster.
  2. Kutama kweRabbitMQ mukati meKubernetes kubva kune rimwe zita kuenda kune rimwe (semuenzaniso, kana maseketi akaganhurwa nenzvimbo dzemazita, ipapo kuendesa zvivakwa kubva kune rimwe dunhu kuenda kune rimwe).

Resipi inotsanangurwa muchinyorwa inotarisana nemamiriro ezvinhu (asi haina kugumira kwavari) umo mune yekare RabbitMQ cluster (somuenzaniso, ye3 node), inowanikwa ingave iri muK8s kana pane mamwe maseva ekare. Chikumbiro chakatambirwa paKubernetes (chatovepo kana mune ramangwana) chinoshanda nacho:

Seamless kutama kweRabbitMQ kuenda Kubernetes

... uye takatarisana nebasa rekuitamira kune itsva kugadzirwa muKubernetes.

Kutanga, nzira yakajairika yekutama pachayo ichatsanangurwa, uye mushure meizvozvo ruzivo rwehunyanzvi hwekuita kwayo huchatsanangurwa.

Kutama algorithm

Yekutanga, yekutanga, nhanho pamberi pechero chiitiko chekutarisa kuti yakakwira yekuwanikwa modhi inogoneswa mune yekare RabbitMQ yekumisikidza (HA) Chikonzero chiri pachena - hatidi kurasikirwa chero data. Kuti uite cheki iyi, unogona kuenda kune RabbitMQ admin panhi uye mu Admin β†’ Mitemo tebhu ita shuwa kuti kukosha kwacho kwakaiswa. ha-mode: all:

Seamless kutama kweRabbitMQ kuenda Kubernetes

Nhanho inotevera ndeyekusimudza rutsva rweRabbitMQ muKubernetes pods (munyaya yedu, semuenzaniso, inosanganisira 3 nodes, asi nhamba yavo inogona kunge yakasiyana).

Mushure meizvi, tinobatanidza masumbu ekare uye matsva eRabbitMQ, tichiwana sumbu rimwe chete (re6 nodes):

Seamless kutama kweRabbitMQ kuenda Kubernetes

Maitiro ekuwiriranisa data pakati pemasumbu ekare uye matsva eRabbitMQ anotangwa. Kana data rese rikawiriraniswa pakati pese node musumbu, tinogona kushandura iyo application kushandisa iyo cluster nyowani:

Seamless kutama kweRabbitMQ kuenda Kubernetes

Mushure mekushanda uku, zvakakwana kubvisa node dzekare kubva kuRabbitMQ cluster, uye kufamba kunogona kuonekwa kwakakwana:

Seamless kutama kweRabbitMQ kuenda Kubernetes

Isu takashandisa chirongwa ichi kakawanda mukugadzira. Nekudaro, kuti isu zvitiitire nyore, takazviita mukati meyakasarudzika sisitimu inogovera yakajairwa RMQ masisitimu pane akawanda Kubernetes masumbu. (kune avo vanoda kuziva: tiri kutaura nezvazvo addon-operatorpamusoro pazvo isu ichangobva kutaurwa). Pazasi isu tinopa mirairo yega yega iyo chero munhu anogona kunyorera pane yavo yekumisikidza kuyedza mhinduro yakarongwa mukuita.

Ngatiedzei mukuita

zvinodiwa

Mashoko acho ari nyore kwazvo:

  1. Kubernetes cluster (minikube ichashandawo);
  2. RabbitMQ cluster (inogona kuiswa pasimbi isina chinhu, uye kuitwa senge sumbu renguva dzose muKubernetes kubva kune yepamutemo Helm chati).

Pamuenzaniso pazasi, ndakatumira RMQ kuKubernetes ndokuidaidza rmq-old.

Kugadzirira kumira

1. Dhawunirodha Helm chati uye gadzirisa zvishoma:

helm fetch --untar stable/rabbitmq-ha

Kuti zvive nyore, tinoisa password, ErlangCookie uye kuita zvematongerwo enyika ha-allkuitira kuti nekusarudzika mitsetse inowiriraniswa pakati pese node dzeRMQ cluster:

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. Isa chati:

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

3. Enda kune RabbitMQ admin panel, gadzira mutsara mutsva uye wedzera akawanda mameseji. Ivo vanozodikanwa kuitira kuti mushure mekutama isu tive nechokwadi chekuti data rese rakachengetedzwa uye isu hatina kurasikirwa chero chinhu:

Seamless kutama kweRabbitMQ kuenda Kubernetes

Bhenji rekuyedza rakagadzirira: isu tine "yekare" RabbitMQ ine data inoda kutamiswa.

Kutama sumbu reRabbitMQ

1. Kutanga, ngatiisei itsva RabbitMQ mukati shamwari namespace with zvakafanana ErlangCookie uye password yemushandisi. Kuti tiite izvi, tichaita mashandiro atsanangurwa pamusoro, tichichinja murairo wekupedzisira wekuisa RMQ kune inotevera:

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

2. Iye zvino unoda kubatanidza sumbu idzva nerekare. Kuti uite izvi, enda kune imwe neimwe yepods itsva RabbitMQ uye ita mirairo:

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

In variable OLD_RMQ kero yeimwe yenode inowanikwa old RMQ cluster.

Iyi mirairo ichamisa node iripo itsva RMQ cluster, isungirire kune yekare cluster uye itange zvakare.

3. RMQ cluster ye6 node yakagadzirira:

Seamless kutama kweRabbitMQ kuenda Kubernetes

Iwe unofanirwa kumirira apo mameseji ari kuwiriraniswa pakati pese node. Hazvina kuoma kufungidzira kuti iyo meseji yekuwiriranisa nguva inoenderana nekugona kweiyo hardware iyo cluster inoiswa uye nenhamba yemameseji. Muchiitiko chakatsanangurwa, pane gumi chete, saka data yakawiriraniswa ipapo, asi nenhamba yakakura zvakakwana yemeseji, kuwiriranisa kunogona kugara kwemaawa.

Saka, iyo synchronization mamiriro:

Seamless kutama kweRabbitMQ kuenda Kubernetes

zviri +5 zvinoreva kuti mameseji atopinda zvimwe pa5 nodes (kunze kwezvinoratidzwa mumunda Node) Saka, kuwiriranisa kwakabudirira.

4. Zvose zvinosara ndezvekushandura kero yeRMQ mukushandiswa kune chikwata chitsva (zviito zvakananga pano zvinoenderana nekombiki yekombiyuta yauri kushandisa uye mamwe maitiro ekushanda), mushure mezvo unogona kutaura zvakanaka kune yekare.

Yekupedzisira kushanda (kureva kare послС kushandura iyo application kune itsva cluster) enda kune imwe neimwe node old cluster uye ita mirairo:

rabbitmqctl stop_app
rabbitmqctl reset

Iyo cluster "yakakanganwa" nezve ma node ekare: unogona kudzima yekare RMQ, panguva iyo kufamba kunopedzwa.

taura pfungwa: Kana iwe ukashandisa RMQ nezvitupa, saka hapana chinoshanduka - maitiro ekufambisa anozoitwa zvakafanana.

zvakawanikwa

Iyo yakatsanangurwa chirongwa chakakodzera kune dzinenge dzese kesi kana isu tichida kutama RabbitMQ kana kungoenda kune itsva cluster.

Muchiitiko chedu, matambudziko akamuka kamwe chete, apo RMQ yakawanikwa kubva kunzvimbo dzakawanda, uye isu hatina kuwana mukana wekushandura kero yeRMQ kune itsva kwese. Ipapo takatangisa RMQ nyowani munzvimbo imwechete yezita ine mavara akafanana kuitira kuti iwire pasi pesevhisi yaivepo uye Ingresses, uye pakuvhura pod takabata mavara nemaoko, tichiabvisa pakutanga kuti zvikumbiro zvirege kuwira pamusoro. isina RMQ, uye kuvawedzera kumashure mushure mekunge mameseji awiriraniswa.

Isu takashandisa zano rimwe chete pakuvandudza RabbitMQ kune imwe vhezheni ine shanduko yakachinjika - zvese zvakashanda sewachi.

PS

Sekuenderera mberi zvine musoro kwechinhu ichi, tiri kugadzirira zvinyorwa nezve MongoDB (kutama kubva kune hardware server kuenda Kubernetes) uye MySQL (magadzirirwo atinoita iyi DBMS mukati meKubernetes). Dzichaburitswa mumwedzi iri kuuya.

PPS

Verenga zvakare pablog yedu:

Source: www.habr.com

Voeg