Inconsutilem RabbitMQ ad Kubernetes migrationis

Inconsutilem RabbitMQ ad Kubernetes migrationis

RabbitMQ nuntium sectorem Erlang scriptum est qui permittit te glomerari defectivum cum plena replicatione data per plures nodi ordinare, ubi quisque nodi petitiones legere et scribere potest. Multis racemis Kubernetes in operatione productionis habentes, magnum numerum RabbitMQ officinarum sustinemus et ob necessitatem datae ex botro in alterum sine downtime migrandi erant.

In duobus saltem casibus hac operatione opus est nobis:

  1. Notitia transferens ex botro RabbitMQ quod in Kubernetes ad novum - iam "kubernetizatum" (i.e. siliquis K8s operantibus) botrum positum est.
  2. Migratio RabbitMQ intra Kubernetes ab uno spatio ad aliud (exempli gratia, si circuitus nominibus spatiis circumscribantur, deinde ad infrastructuram ab uno in alium ambitum transferendum).

Recipe in articulo proposita ad condiciones (sed ad eas minime circumscriptas) in quibus est botrus vetus RabbitMQ (exempli gratia 3 nodi), vel iam in K8s vel in aliquibus servientibus antiquis sita. Applicatio in Kubernetes (iam ibi vel in futuro) operatur cum ea:

Inconsutilem RabbitMQ ad Kubernetes migrationis

... et coram sumus munere eam migrandi ad novam productionem in Kubernetes.

Primum, generalis accessus ad ipsam migrationem describetur, deinde singula technicae suae exsecutionis describentur.

Donec adipiscing algorithmus

Primus, praeliminarius, scaena ante quamlibet actionem inspicienda est modus ille summus disponibilitatis per veterem RabbitMQ institutionem (.HA). Causa manifesta est - notitias quaslibet perdere non volumus. Ad hanc perscriptio exsequendam, ad RabbitMQ admin tabulam ire potes et in Admin β†’ Politiae tab fac ut valor sit positus ha-mode: all:

Inconsutilem RabbitMQ ad Kubernetes migrationis

Proximum est ut novum RabbitMQ botrum in siliquis Kubernetes excitet (in nostro casu, exempli gratia, ex 3 nodis constans, sed numerus eorum diversus est).

Post hoc confunduntur racemi veteres et novi RabbitMQ, obtinentes unum botrum (cf. 6 nodi);

Inconsutilem RabbitMQ ad Kubernetes migrationis

Processus notitiae synchronisationum inter racemos veteres et novos RabbitMQ initiatur. Cum omnes notitiae inter omnes nodi in botro synchronisedantur, possumus applicationem uti novo botro;

Inconsutilem RabbitMQ ad Kubernetes migrationis

Post has operationes, satis est veteres nodos a RabbitMQ amovere, et motus perfecti considerari possunt;

Inconsutilem RabbitMQ ad Kubernetes migrationis

Hoc schema saepe in productione usi sumus. Tamen, ad nostrum commodum, illud implevimus intra systema speciale quod vexillum RMQ distribuit configurationes per multiplices racemos Kubernetes. (Pro his qui curiosi sunt, loquimur addon operatorde quo nos sicut nuper nuntiavit). Infra singula praecipiemus ut quisque suas institutiones adhibere possit ad solutionem in actione propositam experiri.

Experiamur in usu

commodum

Singula admodum simplicia sunt;

  1. Botrus Kubernetes (minikube erit et labor);
  2. Botrus RabbitMQ (in nudo metallo explicari potest et factus sicut botrus regularis in Kubernetes e chartula officiali Helm).

Ad exemplum infra, RMQ ad Kubernetes perstrinxi et vocavi rmq-old.

Praeparatio sta

1. Volutpat Helm chart et paulum edit illud;

helm fetch --untar stable/rabbitmq-ha

Nam commodo in tortor posuere, ErlangCookie ut rei publicae ha-allut queues defaltam inter omnes nodos botri RMQ synchronisedos;

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. Instrue chartula:

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

3. Vade ad RabbitMQ admin tabulam, novam queue crea et plures nuntios adde. Erunt opus ut post migrationem certo servare possimus omnia notitia servata nihil amisisse;

Inconsutilem RabbitMQ ad Kubernetes migrationis

Probatio scamnum est paratum: habemus "vetus" RabbitMQ cum notitia quae transferri debet.

Migrans RabbitMQ botrus

1. Primum explicemus novum RabbitMQ in alium spatio nominali cum idem ErlangCookie et password pro user. Ad hoc perficiemus operationes supra scriptas, mutato mandato finali RMQ ad sequentia insertis:

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

2. Nunc opus est botrum cum veteri iungi novo. Quodlibet siliquam facere novum RabbitMQ& mandata exequi;

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 variabilis OLD_RMQ oratio unius e nodis invenitur vetus Botrus RMQ.

Haec mandata hodiernam nodi prohibere novum Botrus RMQ, pone botrum antiquum, et deduc iterum.

Botrus 3. RMQ 6 nodi paratus;

Inconsutilem RabbitMQ ad Kubernetes migrationis

Exspectare debes dum nuntia inter omnes nodos synchronised. Haud difficile est suspicari nuntium synchronisationi temporis dependere ex capacitate ferramentorum quibus glomerus explicatur et in numero nuntiorum. In missione descripta, tantum 10 ex eis sunt, ut statim notitia synchronizata est, sed cum satis numeroso nuntiorum synchronisatio perdurare potest per horas.

Ita, synchronisation status;

Inconsutilem RabbitMQ ad Kubernetes migrationis

est +5 significat nuntios iam More in 5 nodis (praeter id quod significatur in agro Node). Ita synchronisatio obtinuit.

4. Reliquum est ut inscriptionis RMQ mutandae in applicatione ad novum botrum (actiones specificae hic pendent a acervo technologiae, quam uteris et aliis specialibus applicationis), post quam ad veterem vale dicere potes.

Ad ultimam operationem (i.e послС commutandi applicationis ad novum botrum portassent) ire ad invicem nodi vetus Botrum exercent mandata;

rabbitmqctl stop_app
rabbitmqctl reset

Botrus "oblitus" de veteribus nodis: delere potes veterem RMQ, in quo puncto motus complebitur.

illud: Si RMQ cum libellis uteris, nihil fundamentaliter mutatur - processus movens eadem prorsus perficietur.

Inventiones

Schema descriptum aptum est omnibus fere casibus cum opus est RabbitMQ migrandum vel simpliciter ad novum botrum migrandum.

In casu nostro semel tantum difficultates ortae sunt, cum RMQ e multis locis accessisset et occasionem RMQ ad novam ubique mutandam non habuimus. Tunc novum RMQ in eodem spatio nominali cum eisdem pittaciis inmisimus ut sub servitiis existentibus et Ingressibus caderet, et, deductis vasculum, manu pittacia tractavimus, ab initio removentes ne petitiones caderent in vacua RMQ, et post epistulas eas additis synchronised.

Eodem consilio usi sumus cum adaequationis RabbitMQ novam versionem cum configuratione mutata - omnia sicut horologii operata sunt.

PS

Ut logica continuatio huius materiae, articulos de MongoDB paramus (migrationem ab ferramento ad Kubernetes) et MySQL (quomodo hoc DBMS intra Kubernetes paramus). Edentur in mensibus venturis.

PPS

Lege etiam in nostro diario:

Source: www.habr.com