Mbugharị RabbitMQ na-enweghị ntụpọ na Kubernetes

Mbugharị RabbitMQ na-enweghị ntụpọ na Kubernetes

RabbitMQ bụ onye na-ere ahịa ozi edere na Erlang nke na-enye gị ohere ịhazi ụyọkọ na-ada ada nke nwere ngbanwe data zuru oke n'ofe ọnụ ọnụ, ebe ọnụ ọ bụla nwere ike ịgụ na dee arịrịọ. N'inwe ọtụtụ ụyọkọ Kubernetes na arụ ọrụ mmepụta, anyị na-akwado ọnụ ọgụgụ dị ukwuu nke nrụnye RabbitMQ ma chere na ọ dị mkpa ịkwaga data site na otu ụyọkọ gaa na nke ọzọ na-enweghị oge nkwụsị.

Anyị chọrọ ọrụ a ma ọ dịkarịa ala ugboro abụọ:

  1. Ịnyefe data site na ụyọkọ RabbitMQ nke na-adịghị na Kubernetes gaa na nke ọhụrụ - ugbua "kubernetized" (ya bụ na-arụ ọrụ na K8s pods) - ụyọkọ.
  2. Mbugharị nke RabbitMQ n'ime Kubernetes site na otu aha aha gaa na nke ọzọ (dịka ọmụmaatụ, ọ bụrụ na sekit na-ejedebe site na aha oghere, wee nyefee akụrụngwa site na otu sekit gaa na nke ọzọ).

Ntụziaka a tụrụ aro n'isiokwu a lekwasịrị anya na ọnọdụ (ma ọ bụghị naanị na ha) nke enwere ụyọkọ RabbitMQ ochie (dịka ọmụmaatụ, nke ọnụ 3), nke dị ugbu a na K8s ma ọ bụ na ụfọdụ sava ochie. Ngwa akwadoro na Kubernetes (dịlarị ebe ahụ ma ọ bụ n'ọdịnihu) na-arụ ọrụ na ya:

Mbugharị RabbitMQ na-enweghị ntụpọ na Kubernetes

... na anyị na-eche ihu ọrụ nke ịkwaga ya na mmepụta ọhụrụ na Kubernetes.

Nke mbụ, a ga-akọwa usoro izugbe maka ịkwaga n'onwe ya, mgbe nke ahụ gasịrị, a ga-akọwa nkọwa nkà na ụzụ nke mmejuputa ya.

Migration algọridim

Nke mbụ, nke mbido, ogbo tupu emee ihe ọ bụla bụ ịlele na agbanyere ọnọdụ nnweta dị elu na nrụnye RabbitMQ ochie (HA). Ihe kpatara ya doro anya - anyị achọghị ida data ọ bụla. Iji mee nlele a, ị nwere ike ịga na ngalaba nchịkwa RabbitMQ yana na Admin → Atumatu taabụ hụ na edobere uru ahụ. ha-mode: all:

Mbugharị RabbitMQ na-enweghị ntụpọ na Kubernetes

Nzọụkwụ ọzọ bụ ịkwalite ụyọkọ RabbitMQ ọhụrụ na Kubernetes pods (n'ọnọdụ anyị, dịka ọmụmaatụ, nwere oghere 3, mana ọnụọgụ ha nwere ike ịdị iche).

Mgbe nke a gasịrị, anyị na-ejikọta ụyọkọ RabbitMQ ochie na nke ọhụrụ, na-enweta otu ụyọkọ (nke 6 ọnụ):

Mbugharị RabbitMQ na-enweghị ntụpọ na Kubernetes

Usoro nke mmekọrịta data n'etiti ochie na nke ọhụrụ RabbitMQ ụyọkọ na-amalite. Ozugbo emekọrịtara data niile n'etiti ọnụ niile dị na ụyọkọ ahụ, anyị nwere ike ịgbanwe ngwa ka iji ụyọkọ ọhụrụ:

Mbugharị RabbitMQ na-enweghị ntụpọ na Kubernetes

Mgbe arụ ọrụ ndị a gasịrị, ọ ga-ezuru iwepu oghere ochie site na ụyọkọ RabbitMQ, enwere ike iwere mmegharị ahụ zuru oke:

Mbugharị RabbitMQ na-enweghị ntụpọ na Kubernetes

Anyị ejirila atụmatụ a ọtụtụ oge na mmepụta. Agbanyeghị, maka ịdị mma nke onwe anyị, anyị mebere ya n'ime sistemụ pụrụ iche nke na-ekesa nhazi RMQ ọkọlọtọ n'ofe ọtụtụ ụyọkọ Kubernetes. (maka ndị na-achọ ịmata ihe: anyị na-ekwu maka ya adon-operatorbanyere nke anyị dị nnọọ nso nso kwuru). N'okpuru ebe a, anyị ga-ewetara ntuziaka onye ọ bụla nke onye ọ bụla nwere ike itinye na nrụnye ha iji nwalee usoro a chọrọ n'ọrụ.

Ka anyị nwaa ya na omume

chọrọ

Nkọwa dị nnọọ mfe:

  1. Ụyọkọ Kubernetes (minikube ga-arụkwa ọrụ);
  2. Ụyọkọ RabbitMQ (nwere ike itinye ya na igwe efu, wee mee ya dị ka ụyọkọ oge niile na Kubernetes site na chaatị Helm gọọmentị).

Dịka ọmụmaatụ n'okpuru, etinyere m RMQ na Kubernetes wee kpọọ ya rmq-old.

Guzosie nkwadebe

1. Budata chaatị Helm wee dezie ya ntakịrị:

helm fetch --untar stable/rabbitmq-ha

Maka ịdị mma, anyị edobere paswọọdụ, ErlangCookie ma mee ndọrọ ndọrọ ọchịchị ha-allnke mere na site na ndabara, a na-emekọrịta ọnụ n'ahịrị n'etiti oghere niile nke ụyọkọ 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. Wụnye chaatị ahụ:

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

3. Gaa na RabbitMQ admin panel, mepụta kwụ n'ahịrị ọhụrụ ma tinye ọtụtụ ozi. A ga-achọ ha ka mgbe mpụgasịrị anyị nwere ike ijide n'aka na echekwara data niile na anyị enweghị ihe ọ bụla:

Mbugharị RabbitMQ na-enweghị ntụpọ na Kubernetes

Oche ule dị njikere: anyị nwere "ochie" RabbitMQ nwere data kwesịrị ibufe.

Na-akwaga ụyọkọ RabbitMQ

1. Nke mbụ, ka anyị bubata RabbitMQ ọhụrụ na enyi oghere aha ya na otu ErlangCookie na paswọọdụ maka onye ọrụ. Iji mee nke a, anyị ga-arụ ọrụ ndị akọwara n'elu, na-agbanwe iwu ikpeazụ maka ịwụnye RMQ na ndị a:

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

2. Ugbu a ịkwesịrị ijikọ ụyọkọ ọhụrụ na nke ochie. Iji mee nke a, gaa na nke ọ bụla n'ime pods ọhụrụ RabbitMQ ma mebie iwu ndị a:

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

Na mgbanwe OLD_RMQ a na-achọta adreesị nke otu ọnụ ọnụ ochie ụyọkọ RMQ.

Iwu ndị a ga-akwụsị ọnụ dị ugbu a ọhụrụ Ụyọkọ RMQ, tinye ya na ụyọkọ ochie wee malite ya ọzọ.

3. ụyọkọ RMQ nke ọnụ ọnụ 6 dị njikere:

Mbugharị RabbitMQ na-enweghị ntụpọ na Kubernetes

Ị ga-echere ka a na-emekọrịta ozi n'etiti ọnụ niile. Ọ naghị esiri ike ịkọ na oge mmekọrịta ozi na-adabere na ike nke ngwaike nke ejiri ụyọkọ na ya na ọnụọgụ ozi. N'ọnọdụ a kọwara, enwere naanị 10 n'ime ha, yabụ mekọrịta data ahụ ozugbo, mana enwere ozi buru ibu zuru oke, mmekọrịta nwere ike ịdịru ogologo awa.

Yabụ, ọkwa mmekọrịta:

Mbugharị RabbitMQ na-enweghị ntụpọ na Kubernetes

ọ bụ +5 pụtara ozi abanyelarị ọzọ na ọnụ 5 (ma e wezụga ihe egosiri n'ọhịa Node). Ya mere, mmekọrịta ahụ gara nke ọma.

4. Naanị ihe fọdụrụ bụ ịgbanwe adreesị RMQ na ngwa ahụ gaa na ụyọkọ ọhụrụ (omume ndị a kapịrị ọnụ ebe a dabere na nchịkọta teknụzụ ị na-eji yana nkọwa ngwa ndị ọzọ), emesịa ị nwere ike ịsị nke ochie.

Maka ọrụ ikpeazụ (ya bụ ugbua после ịgbanwee ngwa na ụyọkọ ọhụrụ) gaa na ọnụ ọnụ nke ọ bụla ochie ụyọkọ ma mee iwu ndị a:

rabbitmqctl stop_app
rabbitmqctl reset

Ụyọkọ ahụ "chefuru" banyere oghere ochie: ị nwere ike ihichapụ ochie RMQ, ebe a ga-agwụcha mmegharị ahụ.

Примечание: Ọ bụrụ na ị na-eji RMQ na asambodo, ọ dịghị ihe fundamentally mgbanwe - na-akpụ akpụ usoro ga-rụrụ kpọmkwem otu ihe ahụ.

Nchoputa

Atụmatụ akọwara dabara adaba maka ihe fọrọ nke nta ka ọ bụrụ ikpe niile mgbe anyị kwesịrị ịkwaga RabbitMQ ma ọ bụ naanị ịkwaga na ụyọkọ ọhụrụ.

N'ọnọdụ anyị, ihe isi ike bilitere naanị otu ugboro, mgbe RMQ nwetara site n'ọtụtụ ebe, anyị enweghị ohere ịgbanwe adreesị RMQ gaa na nke ọhụrụ ebe niile. Mgbe ahụ, anyị malitere RMQ ọhụrụ n'otu aha aha ya na otu akara ka ọ ga-adaba n'okpuru ọrụ ndị dị ugbu a na Ingresses, na mgbe anyị na-ebupụta pod anyị jiri aka na-emegharị akara ndị ahụ, wepụ ha na mmalite ka arịrịọ wee ghara ịdaba na . RMQ efu, na ịgbakwunye ha azụ ka emekọrịtachara ozi.

Anyị na-eji otu atụmatụ ahụ mgbe ị na-emelite RabbitMQ na ụdị ọhụrụ nwere nhazi agbanwe agbanwe - ihe niile na-arụ ọrụ dị ka elekere.

PS

Dị ka ezi uche na-aga n'ihu nke ihe a, anyị na-akwado akụkọ gbasara MongoDB (mbugharị sitere na ihe nkesa ngwaike gaa Kubernetes) na MySQL (otu anyị si akwadebe DBMS a n'ime Kubernetes). A ga-ebipụta ha n'ọnwa ndị na-abịa.

Pps

Gụọkwa na blọọgụ anyị:

isi: www.habr.com

Tinye a comment