Femalagaa'i sologa lelei a RabbitMQ i Kubernetes

Femalagaa'i sologa lelei a RabbitMQ i Kubernetes

RabbitMQ ose faife'au fe'au tusitusia i Erlang lea e mafai ai e oe ona fa'atulagaina se fuifui failover fa'atasi ai ma fa'amatalaga fa'amaumauga atoa i le tele o nodes, lea e mafai ai e node ta'itasi ona tautua faitau ma tusi talosaga. O le i ai o le tele o fuifui Kubernetes i le gaosiga o galuega, matou te lagolagoina se numera tele o RabbitMQ faʻapipiʻi ma sa feagai ma le manaʻoga e femalagaʻi faʻamatalaga mai le tasi fuifui i le isi e aunoa ma se taimi malolo.

Matou te manaʻomia lenei gaioiga i le itiiti ifo ma le lua tulaga:

  1. Fa'aliliuina o fa'amatalaga mai le RabbitMQ cluster e le o iai i Kubernetes i se fou - ua uma ona "kubernetized" (e pei o lo'o galue i K8s pods) - fa'aputu.
  2. Femalaga'iga a RabbitMQ i totonu o Kubernetes mai le tasi igoa avanoa i le isi (fa'ata'ita'iga, pe a fa'agata va'aiga e igoa avanoa, ona fa'aliliuina lea o atina'e mai le tasi matagaluega i le isi).

O le fua o loʻo faʻatulagaina i totonu o le tusiga e taulaʻi i tulaga (ae e le gata ia i latou) lea o loʻo i ai se fuifui tuai RabbitMQ (mo se faʻataʻitaʻiga, o le 3 nodes), o loʻo i ai i totonu o K8s poʻo luga o nisi o mea tuai. O se talosaga e faʻafeiloaʻi i Kubernetes (ua i ai iina poʻo le lumanaʻi) o loʻo galue ma ia:

Femalagaa'i sologa lelei a RabbitMQ i Kubernetes

... ma o loʻo matou feagai ma le galuega o le faimalaga atu i le gaosiga fou i Kubernetes.

Muamua, o le auala lautele o le femalagaiga lava ia o le a faʻamatalaina, ma a maeʻa ona faʻamatalaina faʻamatalaga faʻapitoa o lona faʻatinoga.

Algoritimi femalagaiga

O le mea muamua, muamua, laʻasaga aʻo leʻi faia se gaioiga o le siakiina o le maualuga avanoa avanoa e mafai ona faʻaogaina i le RabbitMQ tuai faʻapipiʻi (HA). E manino le mafuaʻaga - matou te le manaʻo e leiloa soʻo se faʻamatalaga. Ina ia faia lenei siaki, e mafai ona e alu i le RabbitMQ admin panel ma i le Admin → Policies tab ia mautinoa ua seti le tau. ha-mode: all:

Femalagaa'i sologa lelei a RabbitMQ i Kubernetes

O le isi laasaga o le faʻatupuina lea o se fuifui RabbitMQ fou i Kubernetes pods (i la matou tulaga, mo se faʻataʻitaʻiga, e aofia ai le 3 nodes, ae atonu e ese a latou numera).

A maeʻa lenei, matou tuʻufaʻatasia le tuai ma fou RabbitMQ fuifui, maua se tasi fuifui (o 6 nodes):

Femalagaa'i sologa lelei a RabbitMQ i Kubernetes

O le faʻagasologa o faʻamaumauga faʻamaumauga i le va o fuifui tuai ma fou RabbitMQ ua amataina. O le taimi lava e fa'amaopoopo uma ai fa'amaumauga i le va o nodes uma i le fuifui, e mafai ona tatou fesuia'i le talosaga e fa'aoga ai le fuifui fou:

Femalagaa'i sologa lelei a RabbitMQ i Kubernetes

A maeʻa nei taʻaloga, ua lava le aveese o nodes tuai mai le RabbitMQ cluster, ma o le gaioiga e mafai ona manatu ua maeʻa:

Femalagaa'i sologa lelei a RabbitMQ i Kubernetes

Ua matou faʻaaogaina lenei polokalame i le tele o taimi i le gaosiga. Ae ui i lea, mo lo matou lava faʻaogaina, matou te faʻatinoina i totonu o se faiga faʻapitoa e tufatufaina atu faʻasalalauga masani RMQ i le tele o fuifui Kubernetes. (mo i latou e fia iloa: o loʻo matou talanoa e uiga i addon-operatorlea tatou te talanoa ai talu ai nei na ta’u mai ai). Lalo o le a matou tuʻuina atu faʻatonuga taʻitasi e mafai e soʻo se tasi ona faʻaoga i luga o latou faʻapipiʻi e faʻataʻitaʻi ai le fofo fuafuaina i le gaioiga.

Tatou faataitai i le faatinoga

manaoga

O faʻamatalaga e matua faigofie lava:

  1. Kubernetes cluster (minikube o le a aoga foi);
  2. RabbitMQ fuifui (e mafai ona faʻapipiʻi i luga o uʻamea, ma faia pei o se fuifui masani i Kubernetes mai le siata Helm aloaia).

Mo le faʻataʻitaʻiga o loʻo i lalo, na ou faʻaogaina le RMQ i Kubernetes ma taʻua rmq-old.

Tutu sauniuni

1. La'u mai le siata o le Helm ma fa'asa'o teisi:

helm fetch --untar stable/rabbitmq-ha

Mo le faʻafaigofie, matou te setiina se faʻaupuga, ErlangCookie ma fai polokiki ha-allina ia le mafai ona faʻaogaina laina i le va o nodes uma o le RMQ 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. Fa'apipi'i le siata:

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

3. Alu i le RabbitMQ admin panel, fai se laina fou ma fa'aopoopo nisi fe'au. O le a manaʻomia ina ia mafai ona matou mautinoa o loʻo faʻasaoina uma faʻamaumauga ma matou te leʻi leiloa se mea:

Femalagaa'i sologa lelei a RabbitMQ i Kubernetes

Ua sauni le nofoa suʻega: o loʻo ia i matou le RabbitMQ "tuai" ma faʻamaumauga e manaʻomia ona faʻafeiloaʻi.

Si'itia se fuifui RabbitMQ

1. Muamua, tatou faʻapipiʻi le RabbitMQ fou i totonu uo igoa avanoa ma tutusa ErlangCookie ma upu faataga mo le tagata e faaaogāina. Ina ia faia lenei mea, o le a matou faia gaioiga o loʻo faʻamatalaina i luga, suia le poloaiga mulimuli mo le faʻapipiʻiina o le RMQ i mea nei:

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

2. O lea la e tatau ona e fa'afefiloi le fuifui fou ma le fuifui tuai. Ina ia faia lenei mea, alu i pusa taʻitasi fou RabbitMQ ma faʻatino poloaiga:

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

E fesuia'i OLD_RMQ e maua le tuatusi o se tasi o nodes tuai RMQ fuifui.

O nei poloaiga o le a taofia ai le node o loʻo iai nei fou RMQ fuifui, fa'apipi'i i le fuifui tuai ma toe fa'alauiloa.

3. RMQ fuifui o 6 nodes ua saunia:

Femalagaa'i sologa lelei a RabbitMQ i Kubernetes

E tatau ona e fa'atali a'o fa'amaopoopo fe'au i le va o nodes uma. E le faigata ona mateina o le taimi o le faʻamaopoopoina o feʻau e faʻalagolago i le gafatia o meafaigaluega o loʻo faʻapipiʻiina ai le fuifui ma le numera o feʻau. I le faʻataʻitaʻiga faʻamatalaina, e naʻo le 10 o latou, o lea na faʻapipiʻiina vave ai faʻamaumauga, ae faʻatasi ai ma se numera tele o feʻau, faʻatasi e mafai ona tumau mo itula.

O lea la, le tulaga o le synchronization:

Femalagaa'i sologa lelei a RabbitMQ i Kubernetes

o +5 o lona uiga o savali ua uma ona i totonu sili atu i luga o 5 nodes (sei vagana ai mea o loʻo faʻaalia i totonu o le fanua Node). O lea, na manuia le fa'amaopoopoina.

4. Pau lava le mea o loʻo totoe o le fesuiaʻiina lea o le tuatusi RMQ i le talosaga i le fuifui fou (o gaioiga faʻapitoa iinei e faʻalagolago i le faʻaputuga tekonolosi o loʻo e faʻaogaina ma isi faʻamatalaga faʻapitoa), a maeʻa ona e faʻafeiloaʻi i le mea tuai.

Mo le taotoga mulimuli (e. ua uma после fesuia'i le talosaga i se fuifui fou) alu i node ta'itasi tuai faʻapipiʻi ma faʻatino poloaiga:

rabbitmqctl stop_app
rabbitmqctl reset

O le fuifui "galo" e uiga i nodes tuai: e mafai ona e tapeina le RMQ tuai, i le taimi e maeʻa ai le gaioiga.

mataʻi: Afai e te faʻaaogaina le RMQ ma tusi faamaonia, ona leai lea o se suiga faʻavae - o le gaioiga o le a faia tutusa.

sailiiliga

Ole polokalame fa'amatala e talafeagai mo le toetoe lava o mataupu uma pe a tatou mana'omia le faimalaga i le RabbitMQ pe na o le siitia atu i se fuifui fou.

I lo matou tulaga, na o le tasi le taimi na tulai mai ai faigata, ina ua maua le RMQ mai le tele o nofoaga, ma matou te leʻi maua le avanoa e sui ai le tuatusi RMQ i se mea fou i soo se mea. Ona matou faʻalauiloaina lea o se RMQ fou i le igoa tutusa ma igoa tutusa ina ia pa'ū i lalo o auaunaga o loʻo i ai nei ma Ingresses, ma pe a faʻalauiloa le pod na matou faʻaogaina ia igoa i le lima, aveese i latou i le amataga ina ia le pa'ū talosaga i luga o le. gaogao RMQ, ma toe fa'aopoopo i tua pe a mae'a fa'atasi fe'au.

Na matou fa'aogaina le ta'iala lava e tasi pe a fa'afou le RabbitMQ i se fa'afou fou fa'atasi ai ma se suiga fa'atulagaina - o mea uma e galue pei o se uati.

SALA

I le avea ai o se faʻaauauga talafeagai o lenei mea, o loʻo matou saunia tala e uiga i MongoDB (malaga mai se masini komepiuta i Kubernetes) ma MySQL (faʻafefea ona matou saunia lenei DBMS i totonu o Kubernetes). O le a fa'asalalauina i masina a sau.

PPS

Faitau foi i la matou blog:

puna: www.habr.com

Faaopoopo i ai se faamatalaga