Ho falla ho se nang moeli ha RabbitMQ ho ea Kubernetes

Ho falla ho se nang moeli ha RabbitMQ ho ea Kubernetes

RabbitMQ ke morekisi oa melaetsa e ngotsoeng ho Erlang e u lumellang hore u hlophise sehlopha sa failover se nang le phetiso e felletseng ea data ho li-node tse ngata, moo node e 'ngoe le e 'ngoe e ka khonang ho bala le ho ngola likopo. Kaha re na le lihlopha tse ngata tsa Kubernetes ts'ebetsong ea tlhahiso, re tšehetsa palo e kholo ea lisebelisoa tsa RabbitMQ 'me re tobane le tlhokahalo ea ho falla data ho tloha sehlopheng se seng ho ea ho se seng ntle le nako ea ho theoha.

Re ne re hloka ts'ebetso ena bonyane maemong a mabeli:

  1. Ho fetisetsa data ho tswa ho sehlopha sa RabbitMQ se sa fumaneheng Kubernetes ho ya ho e ntjha - e seng e ntse e le "kubernetized" (ke hore e sebetsa ka diphod tsa K8s) - sehlopha.
  2. Ho falla ha RabbitMQ ka hare ho Kubernetes ho tloha sebakeng se seng sa mabitso ho ea ho se seng (mohlala, haeba lipotoloho li arotsoe ka libaka tsa mabitso, joale ho fetisetsa mekhoa ea motheo ho tloha potolohong e 'ngoe ho ea ho e' ngoe).

Recipe e hlahisitsoeng sehloohong sena e shebane le maemo (empa ha e felle feela ho bona) moo ho nang le sehlopha sa khale sa RabbitMQ (mohlala, sa li-node tse 3), se seng se le ho K8 kapa ho li-server tse ling tsa khale. Kopo e tšoaretsoeng Kubernetes (e seng e le teng kapa nakong e tlang) e sebetsa le eona:

Ho falla ho se nang moeli ha RabbitMQ ho ea Kubernetes

... 'me re tobane le mosebetsi oa ho e fallela tlhahiso e ncha ea Kubernetes.

Ntlha ea pele, mokhoa o akaretsang oa ho falla ka boeona o tla hlalosoa, 'me ka mor'a moo lintlha tsa theknoloji tsa ts'ebetsong ea eona li tla hlalosoa.

Algorithm ea ho falla

Mohato oa pele, oa pele, pele ketso leha e le efe ke ho hlahloba hore na mokhoa o phahameng oa ho fumaneha o lumelloa ho kenya RabbitMQ ea khale (HA). Lebaka le hlakile - ha re batle ho lahleheloa ke data leha e le efe. Ho etsa cheke ena, o ka ea ho phanele ea tsamaiso ea RabbitMQ 'me ho tab ea Admin → Maano etsa bonnete ba hore boleng bo behiloe. ha-mode: all:

Ho falla ho se nang moeli ha RabbitMQ ho ea Kubernetes

Mohato o latelang ke ho phahamisa sehlopha se secha sa RabbitMQ ho li-pods tsa Kubernetes (ho rona, ka mohlala, e nang le li-node tse 3, empa palo ea tsona e ka 'na ea fapana).

Ka mor'a sena, re kopanya lihlopha tsa khale le tse ncha tsa RabbitMQ, ho fumana sehlopha se le seng (sa li-node tse 6):

Ho falla ho se nang moeli ha RabbitMQ ho ea Kubernetes

Ts'ebetso ea ho hokahanya ha data lipakeng tsa lihlopha tsa khale le tse ncha tsa RabbitMQ e qala. Hang ha data eohle e hokahantsoe lipakeng tsa li-node tsohle sehlopheng, re ka fetola sesebelisoa ho sebelisa sehlopha se secha:

Ho falla ho se nang moeli ha RabbitMQ ho ea Kubernetes

Kamora ts'ebetso ena, ho lekane ho tlosa li-node tsa khale ho sehlopha sa RabbitMQ, mme ho falla ho ka nkuoa ho felletse:

Ho falla ho se nang moeli ha RabbitMQ ho ea Kubernetes

Re sebelisitse morero ona hangata tlhahisong. Leha ho le joalo, molemong oa rona, re e kentse tšebetsong ka har'a sistimi e ikhethileng e abang litlhophiso tse tloaelehileng tsa RMQ ho pholletsa le lihlopha tse ngata tsa Kubernetes. (bakeng sa ba batlang ho tseba: re bua ka addon-operetaka seo re e sa tsoa boleloa haufinyane). Ka tlase re tla fana ka litaelo tsa motho ka mong tseo mang kapa mang a ka li sebelisang lits'ebetsong tsa bona ho leka tharollo e reriloeng e sebetsa.

Ha re e leke ka ts'ebetso

litlhokahalo

Lintlha li bonolo haholo:

  1. Kubernetes cluster (minikube le eona e tla sebetsa);
  2. Sehlopha sa RabbitMQ (se ka tsamaisoa ka tšepe e se nang letho, 'me sa etsoa joalo ka sehlopha se tloaelehileng sa Kubernetes ho tloha ho chate ea Helm ea molao).

Bakeng sa mohlala o ka tlase, ke romelletse RMQ ho Kubernetes mme ka e bitsa rmq-old.

Boitokisetso ba ho ema

1. Khoasolla chate ea Helm 'me u e hlophise hanyane:

helm fetch --untar stable/rabbitmq-ha

Bakeng sa boiketlo, re beha password, ErlangCookie le ho etsa lipolotiki ha-alle le hore ka ho sa feleng mela e hokahanngoe lipakeng tsa li-node tsohle tsa sehlopha sa 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. Kenya chate:

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

3. E-ea ho sehlopha sa tsamaiso sa RabbitMQ, etsa lethathamo le lecha 'me u kenye melaetsa e mengata. Li tla hlokahala e le hore ka mor'a ho falla re ka etsa bonnete ba hore data eohle e bolokiloe 'me ha rea ​​lahleheloa ke letho:

Ho falla ho se nang moeli ha RabbitMQ ho ea Kubernetes

Benche ea teko e se e loketse: re na le RabbitMQ ea "khale" e nang le data e lokelang ho fetisoa.

Ho falla sehlopha sa RabbitMQ

1. Ntlha ea pele, a re ke re sebelise RabbitMQ e ncha ho motsoalle sebaka sa mabitso le tšoanang ErlangCookie le password bakeng sa mosebedisi. Ho etsa sena, re tla etsa ts'ebetso e hlalositsoeng ka holimo, re fetola taelo ea ho qetela ea ho kenya RMQ ho tse latelang:

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

2. Hona joale o hloka ho kopanya sehlopha se secha le sa khale. Ho etsa sena, e-ea ho e 'ngoe le e' ngoe ea li-pods e ntjha RabbitMQ 'me u phethe litaelo:

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

Ka ho feto-fetoha OLD_RMQ aterese ea e 'ngoe ea li-node e fumanoa tsofetse Sehlopha sa RMQ.

Litaelo tsena li tla emisa node ea hajoale e ntjha RMQ cluster, e kopanye le sehlopha sa khale ebe u e qala hape.

3. Sehlopha sa RMQ sa li-node tse 6 se se se lokile:

Ho falla ho se nang moeli ha RabbitMQ ho ea Kubernetes

U tlameha ho ema ha melaetsa e ntse e hokahanngoa lipakeng tsa li-node tsohle. Ha ho thata ho hakanya hore nako ea ho lumellana ha molaetsa e itšetlehile ka bokhoni ba hardware eo sehlopha se sebelisoang ho eona le palo ea melaetsa. Boemong bo hlalositsoeng, ho na le tse 10 feela tsa tsona, kahoo data e ile ea amahanngoa hang-hang, empa ka palo e lekaneng ea melaetsa, ho lumellana ho ka nka lihora tse ngata.

Kahoo, boemo ba ho hokahanya:

Ho falla ho se nang moeli ha RabbitMQ ho ea Kubernetes

ke +5 ho bolela hore melaetsa e se e kene ho feta ka li-node tse 5 (ntle le se bontšitsoeng tšimong Node). Kahoo, ho hokahanya ho ile ha atleha.

4. Sohle se setseng ke ho fetola aterese ea RMQ ho kopo ho sehlopha se secha (liketso tse khethehileng mona li itšetlehile ka stack ea theknoloji eo u e sebelisang le lintlha tse ling tsa kopo), ka mor'a moo u ka bua hantle ho ea khale.

Bakeng sa ts'ebetso ea ho qetela (ke hore после ho fetolela sesebelisoa ho sehlopha se secha) e ea sebakeng se seng le se seng tsofetse kopanya 'me u phethe litaelo:

rabbitmqctl stop_app
rabbitmqctl reset

Sehlopha se "lebetse" ka li-node tsa khale: o ka hlakola RMQ ea khale, ka nako eo ho falla ho tla phethoa.

mantsoe: Haeba u sebelisa RMQ ka litifikeiti, ha ho letho le fetohang - ts'ebetso ea ho falla e tla etsoa ka mokhoa o ts'oanang.

fumanoeng ke

Morero o hlalositsoeng o loketse hoo e batlang e le linyeoe tsohle ha re hloka ho falla RabbitMQ kapa ho fallela sehlopheng se secha.

Tabeng ea rona, mathata a ile a hlaha hang feela, ha RMQ e ne e fumaneha ho tsoa libakeng tse ngata, 'me ha rea ​​ka ra ba le monyetla oa ho fetola aterese ea RMQ ho e ncha hohle. Eaba re qala RMQ e ncha sebakeng se le seng sa mabitso se nang le li-labels tse tšoanang e le hore e tle e oele tlas'a lits'ebeletso tse teng le Ingresses, 'me ha re qala pod re ile ra sebelisa li-labels ka letsoho, ra li tlosa qalong e le hore likopo li se ke tsa oela holim'a RMQ e se nang letho, 'me u li kenye ka mor'a hore melaetsa e hokahane.

Re sebelisitse leano le tšoanang ha re nchafatsa RabbitMQ ho mofuta o mocha o nang le tlhophiso e fetotsoeng - ntho e ngoe le e ngoe e ne e sebetsa joalo ka oache.

PES

E le ts'ebetso e utloahalang ea boitsebiso bona, re lokisetsa lihlooho tse mabapi le MongoDB (ho falla ho tloha ho seva sa hardware ho ea Kubernetes) le MySQL (kamoo re lokisetsang DBMS ena ka hare ho Kubernetes). Li tla phatlalatsoa likhoeling tse tlang.

PPS

Bala hape ho blog ea rona:

Source: www.habr.com

Eketsa ka tlhaloso