Hijira mara kyau na RabbitMQ zuwa Kubernetes

Hijira mara kyau na RabbitMQ zuwa Kubernetes

RabbitMQ dillalin saƙo ne da aka rubuta a cikin Erlang wanda ke ba ku damar tsara gungu mai gazawa tare da cikakken kwafin bayanai a kan nodes da yawa, inda kowane kumburi zai iya karantawa da rubuta buƙatun. Samun gungu na Kubernetes da yawa a cikin ayyukan samarwa, muna tallafawa adadi mai yawa na kayan aikin RabbitMQ kuma mun fuskanci buƙatar ƙaura bayanai daga wannan gungu zuwa wani ba tare da bata lokaci ba.

Muna buƙatar wannan aikin aƙalla lokuta biyu:

  1. Canja wurin bayanai daga gungu na RabbitMQ wanda ba ya cikin Kubernetes zuwa sabon - riga "kubernetized" (watau aiki a cikin K8s pods) - tari.
  2. Hijira na RabbitMQ a cikin Kubernetes daga wannan filin suna zuwa wani (misali, idan an iyakance da'irori ta wuraren suna, sannan don canja wurin abubuwan more rayuwa daga wannan da'ira zuwa wani).

Girke-girke da aka gabatar a cikin labarin an mayar da hankali kan yanayi (amma ba a iyakance su ba) a cikin abin da akwai tsohuwar gungu na RabbitMQ (misali, na nodes 3), wanda ya riga ya kasance a cikin K8s ko a kan wasu tsoffin sabobin. Aikace-aikacen da aka shirya akan Kubernetes (riga a can ko nan gaba) yana aiki tare da shi:

Hijira mara kyau na RabbitMQ zuwa Kubernetes

... kuma muna fuskantar aikin ƙaura zuwa sabon samarwa a Kubernetes.

Na farko, za a kwatanta tsarin gaba ɗaya ga ƙaura da kanta, kuma bayan haka za a bayyana cikakkun bayanan fasaha na aiwatar da shi.

Hijira algorithm

Na farko, na farko, mataki kafin kowane aiki shine duba cewa yanayin samuwa mai yawa yana kunna a cikin tsohuwar shigarwar RabbitMQ (HA). Dalilin a bayyane yake - ba ma son rasa kowane bayanai. Don aiwatar da wannan rajistan, zaku iya zuwa sashin gudanarwa na RabbitMQ kuma a cikin Admin → Manufofin shafin tabbatar cewa an saita ƙimar. ha-mode: all:

Hijira mara kyau na RabbitMQ zuwa Kubernetes

Mataki na gaba shine haɓaka sabon gungu na RabbitMQ a cikin kwas ɗin Kubernetes (a cikin yanayinmu, alal misali, wanda ya ƙunshi nodes 3, amma adadin su na iya bambanta).

Bayan wannan, mun haɗu da tsofaffi da sababbin gungu na RabbitMQ, muna samun gungu guda ɗaya (na nodes 6):

Hijira mara kyau na RabbitMQ zuwa Kubernetes

An fara aiwatar da aikin daidaita bayanai tsakanin tsoho da sabon gungu na RabbitMQ. Da zarar duk bayanai sun daidaita tsakanin duk nodes a cikin gungu, za mu iya canza aikace-aikacen don amfani da sabon tari:

Hijira mara kyau na RabbitMQ zuwa Kubernetes

Bayan waɗannan ayyukan, ya isa ya cire tsoffin nodes daga gungu na RabbitMQ, kuma ana iya ɗaukar motsi ya zama cikakke:

Hijira mara kyau na RabbitMQ zuwa Kubernetes

Mun yi amfani da wannan makirci sau da yawa wajen samarwa. Koyaya, don jin daɗin kanmu, mun aiwatar da shi a cikin tsari na musamman wanda ke rarraba daidaitattun daidaitawar RMQ a cikin gungu na Kubernetes da yawa. (ga waɗanda suke da sha'awar: muna magana ne game da adon-operatorgame da wanda muke kwanan nan aka fada). A ƙasa za mu gabatar da umarni guda ɗaya waɗanda kowa zai iya amfani da su akan kayan aikin su don gwada maganin da aka tsara a aikace.

Bari mu gwada shi a aikace

bukatun

Cikakkun bayanai masu sauqi ne:

  1. Kubernetes cluster (minikube kuma zai yi aiki);
  2. Tarin RabbitMQ (ana iya tura shi akan ƙaramin ƙarfe, kuma a yi shi kamar gungu na yau da kullun a Kubernetes daga taswirar Helm na hukuma).

Misalin da ke ƙasa, na tura RMQ zuwa Kubernetes kuma na kira shi rmq-old.

Tsaya shiri

1. Zazzage ginshiƙi na Helm kuma ku ɗan gyara shi kaɗan:

helm fetch --untar stable/rabbitmq-ha

Domin saukakawa, mun saita kalmar sirri, ErlangCookie da yin siyasa ha-allta yadda ta tsohuwa ana daidaita jerin gwano tsakanin duk nodes na gungu na 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. Shigar da ginshiƙi:

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

3. Je zuwa RabbitMQ admin panel, ƙirƙirar sabon layi kuma ƙara saƙonni da yawa. Za a buƙaci su ta yadda bayan hijira za mu iya tabbatar da cewa an adana duk bayanan kuma ba mu rasa kome ba:

Hijira mara kyau na RabbitMQ zuwa Kubernetes

An shirya bencin gwajin: muna da "tsohuwar" RabbitMQ tare da bayanan da ke buƙatar canjawa wuri.

Hijira tarin RabbitMQ

1. Da farko, bari mu tura sabon RabbitMQ a ciki aboki sunan suna tare da iri daya ErlangCookie da kuma kalmar sirri don mai amfani. Don yin wannan, za mu yi ayyukan da aka bayyana a sama, canza umarni na ƙarshe don shigar da RMQ zuwa mai zuwa:

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

2. Yanzu kuna buƙatar haɗa sabon gungu tare da tsohuwar. Don yin wannan, je zuwa kowane nau'i na nau'i sabon RabbitMQ kuma aiwatar da umarni:

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

A cikin m OLD_RMQ ana samun adireshin ɗaya daga cikin nodes tsoho Kunshin RMQ.

Waɗannan umarnin zasu dakatar da kumburin yanzu sabon Rukunin RMQ, haɗa shi zuwa tsohuwar tarin kuma sake ƙaddamar da shi.

3. Rukunin RMQ na nodes 6 yana shirye:

Hijira mara kyau na RabbitMQ zuwa Kubernetes

Dole ne ku jira yayin da saƙon ke aiki tare tsakanin duk nodes. Ba shi da wahala a yi hasashen cewa lokacin aiki tare da saƙon ya dogara da ƙarfin kayan aikin da aka tura gungu a kai da kuma adadin saƙonni. A cikin yanayin da aka bayyana, akwai guda 10 ne kawai, don haka an daidaita bayanan nan take, amma tare da isassun saƙonni masu yawa, aiki tare na iya ɗaukar awoyi.

Don haka, matsayin aiki tare:

Hijira mara kyau na RabbitMQ zuwa Kubernetes

Yana da +5 yana nufin an riga an shigar da sakonni karin akan nodes 5 (sai dai abin da aka nuna a cikin filin Node). Don haka, aiki tare ya yi nasara.

4. Abin da ya rage shi ne canza adireshin RMQ a cikin aikace-aikacen zuwa sabon cluster (takamaiman ayyuka a nan sun dogara da tarin fasahar da kuke amfani da su da sauran takamaiman aikace-aikacen), bayan haka kuna iya yin bankwana da tsohuwar.

Don aiki na ƙarshe (watau riga после canza aikace-aikacen zuwa sabon gungu) je zuwa kowane kumburi tsoho tari kuma aiwatar da umarni:

rabbitmqctl stop_app
rabbitmqctl reset

Ƙungiyar "manta" game da tsofaffin nodes: za ku iya share tsohuwar RMQ, a lokacin za a kammala motsi.

Примечание: Idan kun yi amfani da RMQ tare da takaddun shaida, to babu wani abu da ya canza - tsarin motsi zai kasance daidai.

binciken

Makircin da aka kwatanta ya dace da kusan duk lokuta lokacin da muke buƙatar ƙaura RabbitMQ ko kuma matsawa zuwa sabon tari.

A wajenmu, sau daya ne kawai aka samu matsala, lokacin da aka shiga RMQ daga wurare da dama, kuma ba mu samu damar canza adireshin RMQ zuwa wani sabo a ko’ina ba. Sa'an nan kuma muka ƙaddamar da sabon RMQ a cikin wannan sunan mai suna tare da lakabi iri ɗaya don ya fada ƙarƙashin ayyukan da ake da su da kuma Ingresses, kuma lokacin da za mu kaddamar da kwasfan muka yi amfani da labels da hannu, cire su a farkon don kada buƙatun su fada kan fanko RMQ, da ƙara su baya bayan an daidaita saƙon.

Mun yi amfani da wannan dabarar lokacin da muke sabunta RabbitMQ zuwa sabon sigar tare da canjin tsari - komai yana aiki kamar agogo.

PS

A matsayin ci gaba mai ma'ana na wannan abu, muna shirya labarai game da MongoDB (kaura daga sabar kayan aiki zuwa Kubernetes) da MySQL (yadda muke shirya wannan DBMS cikin Kubernetes). Za a buga su a cikin watanni masu zuwa.

PPS

Karanta kuma a kan shafinmu:

source: www.habr.com

Add a comment