Fifindran'ny RabbitMQ tsy misy olana mankany Kubernetes

Fifindran'ny RabbitMQ tsy misy olana mankany Kubernetes

RabbitMQ dia mpanelanelana hafatra voasoratra ao Erlang izay ahafahanao mandamina kluster failover miaraka amin'ny famerenan'ny angon-drakitra feno manerana ireo node maro, izay ahafahan'ny node tsirairay manompo mamaky sy manoratra fangatahana. Manana vondron'olona Kubernetes maro amin'ny asa famokarana, manohana fametrahana RabbitMQ marobe izahay ary niatrika ny filΓ na mifindra angona avy amin'ny cluster iray mankany amin'ny iray hafa tsy misy fiatoana.

Nila ity fandidiana ity izahay tamin'ny tranga roa farafahakeliny:

  1. Famindrana angon-drakitra avy amin'ny kluster RabbitMQ izay tsy hita ao amin'ny Kubernetes mankany amin'ny cluster vaovao - efa "kubernetized" (izany hoe miasa amin'ny pods K8s).
  2. Fifindran'ny RabbitMQ ao anatin'ny Kubernetes avy amin'ny toeran'ny anarana iray mankany amin'ny iray hafa (ohatra, raha faritana amin'ny anaran'ny faritra ny faritra, dia hamindra fotodrafitrasa avy amin'ny faritra iray mankany amin'ny iray hafa).

Ny fomba fanamboarana natolotra ao amin'ny lahatsoratra dia mifantoka amin'ny toe-javatra (fa tsy voafetra ho azy ireo mihitsy) izay misy kluster RabbitMQ taloha (ohatra, amin'ny 3 nodes), izay efa ao amin'ny K8s na amin'ny mpizara taloha. Ny fampiharana nampiantranoina ao amin'ny Kubernetes (efa misy na ho avy) dia miara-miasa aminy:

Fifindran'ny RabbitMQ tsy misy olana mankany Kubernetes

... ary miatrika ny andraikitry ny fifindrana azy amin'ny famokarana vaovao ao Kubernetes isika.

Voalohany, holazaina ny fomba fiasa ankapobeny amin'ny fifindra-monina, ary aorian'izay dia holazaina ny antsipiriany ara-teknika amin'ny fampiharana azy.

Algorithm fifindra-monina

Ny dingana voalohany, mialoha, alohan'ny hetsika rehetra dia ny manamarina fa ny maodely avo lenta dia alefa amin'ny fametrahana RabbitMQ taloha (HA). Mazava ny antony - tsy te ho very data izahay. Mba hanatanterahana izany fisavana izany dia afaka mandeha any amin'ny tontolon'ny admin RabbitMQ ianao ary ao amin'ny tabilao Admin β†’ Policies ho azo antoka fa napetraka ny sanda. ha-mode: all:

Fifindran'ny RabbitMQ tsy misy olana mankany Kubernetes

Ny dingana manaraka dia ny fananganana cluster RabbitMQ vaovao ao amin'ny pods Kubernetes (amin'ny tranga misy antsika, ohatra, misy node 3, saingy mety ho hafa ny isany).

Aorian'izany dia manambatra ny cluster RabbitMQ taloha sy vaovao izahay, ka mahazo cluster tokana (amin'ny 6 nodes):

Fifindran'ny RabbitMQ tsy misy olana mankany Kubernetes

Ny dingan'ny fampifanarahana angon-drakitra eo amin'ny kluster RabbitMQ taloha sy vaovao dia natomboka. Raha vantany vao voarindra ny angon-drakitra rehetra eo amin'ny node rehetra ao amin'ny cluster, dia afaka manova ny fampiharana hampiasa ny cluster vaovao isika:

Fifindran'ny RabbitMQ tsy misy olana mankany Kubernetes

Aorian'ireo asa ireo dia ampy ny manaisotra ireo nodes taloha amin'ny cluster RabbitMQ, ary azo heverina ho feno ny hetsika:

Fifindran'ny RabbitMQ tsy misy olana mankany Kubernetes

Efa imbetsaka izahay no nampiasa io tetika io tamin'ny famokarana. Na izany aza, ho an'ny fahafahantsika manokana, dia nampiharina tao anatin'ny rafitra manokana iray izay mizara ny fanamafisam-peo RMQ mahazatra amin'ny vondrona Kubernetes maro. (ho an'izay te hahafanta-javatra: miresaka momba ny addon-operatormomba izay isika vao haingana no nolazaina). Eto ambany dia hanolotra torolalana ho an'ny tsirairay izay azon'ny olona ampiharina amin'ny fametrahana azy ireo izahay mba hanandrana ny vahaolana naroso.

Andeha isika hanandrana izany amin'ny fampiharana

fepetra takiana

Tsotra ny antsipiriany:

  1. Kubernetes cluster (minikube koa dia hiasa);
  2. Kluster RabbitMQ (azo apetraka amin'ny metaly miboridana, ary atao toy ny cluster mahazatra ao Kubernetes avy amin'ny tabilao Helm ofisialy).

Ho an'ny ohatra etsy ambany dia nametraka RMQ ho an'ny Kubernetes aho ary niantso azy io rmq-old.

Mijoroa fiomanana

1. Ampidino ny tabilao Helm ary ahitsio kely:

helm fetch --untar stable/rabbitmq-ha

Ho fanamorana dia nametraka tenimiafina izahay, ErlangCookie ary manao politika ha-allka amin'ny alΓ lan'ny default ny filaharana dia ampifandraisina eo anelanelan'ny nodes rehetra amin'ny cluster 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. Apetraho ny tabilao:

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

3. Mandehana any amin'ny tontolon'ny admin RabbitMQ, mamorona filaharana vaovao ary ampio hafatra maromaro. Ilaina izy ireo mba hahafahantsika mahazo antoka fa voatahiry ny angon-drakitra rehetra aorian'ny fifindra-monina ary tsy misy very na inona na inona:

Fifindran'ny RabbitMQ tsy misy olana mankany Kubernetes

Efa vonona ny dabilio fitsapana: manana ny RabbitMQ "antitra" miaraka amin'ny angona mila afindra isika.

Mamindra kluster RabbitMQ

1. Voalohany, andao hametraka ny RabbitMQ vaovao ao NAMANA namespace with IHANY ErlangCookie ary tenimiafina ho an'ny mpampiasa. Mba hanaovana izany dia hanao ny asa voalaza etsy ambony isika, hanova ny baiko farany amin'ny fametrahana RMQ amin'ireto manaraka ireto:

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

2. Ankehitriny dia mila manambatra ny cluster vaovao amin'ny taloha. Mba hanaovana izany, mandehana amin'ny tsirairay amin'ireo pods vaovao RabbitMQ ary tanteraho ny baiko:

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 hita ny adiresin'ny iray amin'ireo node antitra RMQ Cluster.

Ireo baiko ireo dia hampiato ny node ankehitriny vaovao RMQ cluster, ampidiro amin'ny cluster taloha ary atombohy indray.

3. RMQ cluster misy 6 nodes dia vonona:

Fifindran'ny RabbitMQ tsy misy olana mankany Kubernetes

Tsy maintsy miandry ianao raha ampifandraisina eo amin'ny nodes rehetra ny hafatra. Tsy sarotra ny maminavina fa ny fotoana fampifanarahana ny hafatra dia miankina amin'ny fahafahan'ny fitaovana izay ametrahana ny cluster sy ny isan'ny hafatra. Ao amin'ny scenario voalaza dia tsy misy afa-tsy 10 amin'izy ireo, noho izany dia narindra avy hatrany ny angon-drakitra, fa miaraka amin'ny hafatra be dia be, ny fampifanarahana dia afaka maharitra ora maro.

Noho izany, ny sata synchronization:

Fifindran'ny RabbitMQ tsy misy olana mankany Kubernetes

izany +5 midika hoe efa miditra ny hafatra More amin'ny 5 nodes (afa-tsy izay voalaza ao amin'ny saha Node). Noho izany dia nahomby ny fampifanarahana.

4. Ny hany sisa tavela dia ny mamadika ny adiresy RMQ ao amin'ny fampiharana amin'ny cluster vaovao (ny hetsika manokana eto dia miankina amin'ny stack teknolojia ampiasainao sy ny fampiharana manokana hafa), aorian'izay dia afaka manao veloma ny taloha ianao.

Ho an'ny fandidiana farany (izany hoe efa послС Mandehana any amin'ny node tsirairay ny fampiharana antitra cluster ary tanteraho ny baiko:

rabbitmqctl stop_app
rabbitmqctl reset

Ny cluster dia "manadino" momba ireo nodes taloha: azonao atao ny mamafa ny RMQ taloha, amin'izay fotoana izay dia ho vita ny hetsika.

fanamarihana: Raha mampiasa RMQ miaraka amin'ny mari-pankasitrahana ianao, dia tsy misy fiovana ifotony - ny dingana mihetsika dia hotanterahina mitovy.

hitany

Ny tetika voalaza dia mety amin'ny tranga rehetra rehefa mila mifindra monina amin'ny RabbitMQ isika na mifindra amina cluster vaovao fotsiny.

Aminay, indray mandeha ihany no nitranga ny fahasahiranana, rehefa nidirana avy amina toerana maro ny RMQ, ary tsy nanana fahafahana nanova ny adiresy RMQ ho vaovao na aiza na aiza izahay. Avy eo dia namoaka RMQ vaovao tao amin'ny namespace mitovy amin'ny etikety mitovy amin'izany izahay mba hianjera amin'ny serivisy efa misy sy ny Ingresses, ary rehefa nanokatra ny pod izahay dia nanodikodina ny etikety tamin'ny tanana, nesorinay tany am-piandohana mba tsy hianjera amin'ny fangatahana. RMQ foana, ary ampio izy ireo aorian'ny fampifanarahana ny hafatra.

Nampiasa tetika mitovy ihany izahay rehefa nanavao ny RabbitMQ amin'ny dikan-teny vaovao miaraka amin'ny fanovana fanovana - miasa toy ny famantaranandro ny zava-drehetra.

Sal

Ho fanohizana lojika an'ity fitaovana ity dia manomana lahatsoratra momba ny MongoDB (fifindra-monina avy amin'ny mpizara hardware mankany Kubernetes) sy MySQL (ny fomba hanomanana ity DBMS ity ao anatin'ny Kubernetes) izahay. Havoaka amin'ny volana ho avy izy ireo.

PPS

Vakio ihany koa ao amin'ny bilaoginay:

Source: www.habr.com

Add a comment