{"id":33075,"date":"2019-10-31T21:50:35","date_gmt":"2019-10-31T18:50:35","guid":{"rendered":"https:\/\/prohoster.info\/blog\/besprostojnaya-migratsiya-rabbitmq-v-kubernetes\/"},"modified":"2019-10-31T21:50:35","modified_gmt":"2019-10-31T18:50:35","slug":"besprostojnaya-migratsiya-rabbitmq-v-kubernetes","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/besprostojnaya-migratsiya-rabbitmq-v-kubernetes","title":{"rendered":"Ainulaadne RabbitMQ migreerimine Kubernetesesse","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Ainulaadne RabbitMQ migreerimine Kubernetesesse\" src=\"\/wp-content\/uploads\/2019\/05\/32c491c8605e2488550efadbcb052320.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nRabbitMQ \u2013 Erlang keeles kirjutatud s\u00f5numite vahetaja, mis v\u00f5imaldab luua usaldusv\u00e4\u00e4rse klastriga, millel on t\u00e4ielik andmete replikatsioon mitmel s\u00f5lmel, kus iga s\u00f5lm suudab teenindada lugemis- ja kirjutamissoove. Tootmiskeskkonnas oleme haldanud mitmeid Kubernetes klastri, mis t\u00e4hendab, et toetame suurt hulka RabbitMQ paigaldusi ning oleme silmitsi seisnud vajadusega migratsioonida andmeid \u00fchest klastrist teise katkestusteta.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>See operatsioon oli vajalik meile v\u00e4hemalt kahes olukorras:<\/p>\n<ol>\n<li> Andmete edastamine RabbitMQ klastrist, mis ei asunud Kuberneteses, uude \u2013 n\u00fc\u00fcd juba \"kuberiseeritud\" (st K8s pod'ides t\u00f6\u00f6tav) \u2013 klastrisse.<\/li>\n<li> RabbitMQ migratsioon Kuberneteses \u00fche nimeduse alt teise (n\u00e4iteks kui piirid on jaotatud nimede j\u00e4rgi, siis infrastruktuuri edastamiseks \u00fchest piirist teise).<\/li>\n<\/ol>\n<p>\nArtiklis pakutud retsept on suunatud olukordadele (aga mitte ainult nendele), kus on olemas vana RabbitMQ klaster (n\u00e4iteks 3 s\u00f5lmega), mis asub kas juba K8s-is v\u00f5i mingitel vanadel serveritel. Sellega t\u00f6\u00f6tatakse rakendusega, mis on paigutatud Kubernetesesse (kas juba seal v\u00f5i tulevikus):<\/p>\n<p><img decoding=\"async\" alt=\"Ainulaadne RabbitMQ migreerimine Kubernetesesse\" src=\"\/wp-content\/uploads\/2019\/05\/5fba162c90bc441978429288c59300ef.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u2026 ja meie ees on \u00fclesanne migratsiooni tegemiseks uude production keskkonda Kubernetes'is.<\/p>\n<p>Esmalt kirjeldatakse \u00fcldiselt migratsiooni l\u00e4henemist, seej\u00e4rel jagatakse tehnilisi detaile selle rakendamise kohta.<\/p>\n<h2>Migratsioonialgoritm<\/h2>\n<p>\nEsimene, etapp enne mis tahes toimingute tegemist \u2014 kontrollida, et vana RabbitMQ installatsioonis on sisse l\u00fclitatud k\u00f5rge k\u00e4ttesaadavuse re\u017eiim (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.rabbitmq.com\/ha.html\">HA<\/a><\/noindex>). P\u00f5hjus on ilmne \u2014 me ei taha ju andmeid kaotada. Selle kontrollimiseks saab minna RabbitMQ adminpaneelile ja vahekaardil Admin \u2192 Policies veenduda, et v\u00e4\u00e4rtus on seadistatud <code>ha-mode: all<\/code>:<\/p>\n<p><img decoding=\"async\" alt=\"Ainulaadne RabbitMQ migreerimine Kubernetesesse\" src=\"\/wp-content\/uploads\/2019\/05\/2e37be2cd3685eb8cedfbc5949e5036f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJ\u00e4rgmine samm \u2014 t\u00f5stame \u00fcles uue RabbitMQ klastrite Kubernetes'i pod'id (meie puhul n\u00e4iteks koosnedes 3 s\u00f5lmest, kuid nende arv v\u00f5ib olla ka erinev).<\/p>\n<p>P\u00e4rast seda \u00fchendame vana ja uue RabbitMQ klastri, saades \u00fche klastrina (6 s\u00f5lmega):<\/p>\n<p><img decoding=\"async\" alt=\"Ainulaadne RabbitMQ migreerimine Kubernetesesse\" src=\"\/wp-content\/uploads\/2019\/05\/52204b814f0ba73a20c4854e990c4059.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAlgatatakse andmete s\u00fcnkroonimise protsess vana ja uue RabbitMQ klastri vahel. P\u00e4rast seda, kui k\u00f5ik andmed on k\u00f5igi s\u00f5lmede vahel klastris s\u00fcnkroonitud, saame rakenduse suunata uue klastri kasutamisele:<\/p>\n<p><img decoding=\"async\" alt=\"Ainulaadne RabbitMQ migreerimine Kubernetesesse\" src=\"\/wp-content\/uploads\/2019\/05\/8bf19d4176e38b4679e96e0f1b8b57c1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u00e4rast neid toiminguid piisab, kui eemaldada RabbitMQ klastrist vanad s\u00f5lmed, ja migratsioon on l\u00f5petatud:<\/p>\n<p><img decoding=\"async\" alt=\"Ainulaadne RabbitMQ migreerimine Kubernetesesse\" src=\"\/wp-content\/uploads\/2019\/05\/bccc9b9fc8d6691d24195e9a97a0f88b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMe oleme seda skeemi korduvalt kasutanud oma tootmises. K\u00fcll aga oleme enda mugavuse huvides realiseerinud selle spetsialiseeritud s\u00fcsteemi raames, mis jagab t\u00fc\u00fcpilisi RMQ konfiguratsioone paljude Kubernetes klastrite vahel. <i>(neile, keda huvitab: on juttu <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\">addon-operator<\/a><\/noindex>, millest me <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/449096\/\">just hiljuti r\u00e4\u00e4kisime<\/a><\/noindex>)<\/i>. Allpool on esitatud eraldi juhised, mida iga\u00fcks saab oma installatsioonides rakendada, et proovida ettepanekut praktikas.<\/p>\n<h2>Proovime praktikas<\/h2>\n<p><\/p>\n<h3>N\u00f5uded<\/h3>\n<p>\nAndmed on v\u00e4ga lihtsad:<\/p>\n<ol>\n<li> Kubernetes klaster (sobib ka minikube);<\/li>\n<li> RabbitMQ klaster (see v\u00f5ib olla \u00fcles seatud nii bare metalil kui ka tavalisena Kubernetesis ametlikust Helm-chart'ist).<\/li>\n<\/ol>\n<p>\nAllpool kirjeldatud n\u00e4ite jaoks olen ma seadistanud RMQ Kubernetesis ja kutsunud seda <code>rmq-old<\/code>.<\/p>\n<h3>Stendi ettevalmistamine<\/h3>\n<p>\n1. Lae alla Helm-chart ja tee sellest veidi muudatusi:<\/p>\n<pre><code class=\"bash\">helm fetch --untar stable\/rabbitmq-ha<\/code><\/pre>\n<p>\nMugavuse m\u00f5ttes seadistame parooli, <code>ErlangCookie<\/code> ja teeme poliitika <code>ha-all<\/code>, et vaikimisi oleksid j\u00e4rjekorrad s\u00fcnkroonitud k\u00f5igi RMQ klastriga seotud s\u00f5lmede vahel:<\/p>\n<pre><code class=\"plaintext\">rabbitmqPassword: guest\nrabbitmqErlangCookie: mae9joopaol7aiVu3eechei2waiGa2we\ndefinitions:\npolicies: |-\n  {\n    \"name\": \"ha-all\",\n    \"pattern\": \".*\",\n    \"vhost\": \"\\\/\",\n    \"definition\": {\n      \"ha-mode\": \"all\",\n      \"ha-sync-mode\": \"automatic\",\n      \"ha-sync-batch-size\": 81920\n    }\n  }<\/code><\/pre>\n<p>\n2. Seame diagramm:<\/p>\n<pre><code class=\"bash\">helm install . --name rmq-old --namespace rmq-old<\/code><\/pre>\n<p>\n3. Logi RabbitMQ admin paneeli, loo uus j\u00e4rjekord ja lisa m\u00f5ned s\u00f5numid. Neid on vaja, et p\u00e4rast migreerimist saaksime veenduda, et k\u00f5ik andmed on alles ja me midagi ei kaotanud:<\/p>\n<p><img decoding=\"async\" alt=\"Ainulaadne RabbitMQ migreerimine Kubernetesesse\" src=\"\/wp-content\/uploads\/2019\/05\/b4b78ce622903dada396ced196c2ecce.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTestkeskkond on valmis: meil on \"vana\" RabbitMQ andmetega, mis tuleb \u00fcle kanda.<\/p>\n<h3>RabbitMQ klastrite migreerimine<\/h3>\n<p>\n1. Alustame uue RabbitMQ k\u00e4ivitamisega <b>s\u00f5braga<\/b> nimede ruumis <b>samade<\/b> <code>ErlangCookie<\/code> ja kasutaja parooliga. Selleks teeme \u00fclaltoodud operatsioonid, muutes RMQ installimise l\u00f5ppk\u00e4sku j\u00e4rgmisega:<\/p>\n<pre><code class=\"bash\">helm install . --name rmq-new --namespace rmq-new<\/code><\/pre>\n<p>\n2. N\u00fc\u00fcd tuleb \u00fchendada uus klaster vanaga. Selleks logime iga podi <b>uue<\/b> RabbitMQ sisse ja t\u00e4idame j\u00e4rgmised k\u00e4sklused:<\/p>\n<pre><code class=\"bash\">export OLD_RMQ=rabbit@rmq-old-rabbitmq-ha-0.rmq-old-rabbitmq-ha-discovery.rmq-old.svc.cluster.local &amp;&amp; \n  rabbitmqctl stop_app &amp;&amp; \n  rabbitmqctl join_cluster $OLD_RMQ &amp;&amp; \n  rabbitmqctl start_app<\/code><\/pre>\n<p>\nMuutujas <code>OLD_RMQ<\/code> on \u00fche vana <b>RMQ klastrite s\u00f5lme aadress.<\/b> Need k\u00e4sklused peatavad praeguse<\/p>\n<p>RMQ klastris s\u00f5lme, liidavad selle vana klastriga ja k\u00e4ivitavad uuesti. <b>uue<\/b> 3. RMQ klaster, mis koosneb 6 s\u00f5lmest, on valmis:<\/p>\n<p>3. \u041a\u043b\u0430\u0441\u0442\u0435\u0440 RMQ \u0438\u0437 6 \u0443\u0437\u043b\u043e\u0432 \u0433\u043e\u0442\u043e\u0432:<\/p>\n<p><img decoding=\"async\" alt=\"Ainulaadne RabbitMQ migreerimine Kubernetesesse\" src=\"\/wp-content\/uploads\/2019\/05\/88f4655556c1146f7a6e54fd2fd798f4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPeab ootama, kuni s\u00f5numid s\u00fcnkroniseeritakse k\u00f5igi s\u00f5lmpunktide vahel. Pole raske arvata, et s\u00f5numite s\u00fcnkroniseerimise aeg s\u00f5ltub riistvara v\u00f5imsusest, millel klaster on rajatud, ja s\u00f5numite arvust. Kirjeldatud stsenaariumi puhul on neid vaid 10, seega andmed s\u00fcnkroniseerusid kohe, kuid piisavalt suurte s\u00f5numite arvu korral v\u00f5ib s\u00fcnkroniseerimine kesta tunde.<\/p>\n<p>Nii et s\u00fcnkroniseerimise staatus:<\/p>\n<p><img decoding=\"async\" alt=\"Ainulaadne RabbitMQ migreerimine Kubernetesesse\" src=\"\/wp-content\/uploads\/2019\/05\/1185591d8d5478634f35b7433ca75bbc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSiit <code>+5<\/code> t\u00e4hendab, et s\u00f5numid on juba <b>veel<\/b> 5 s\u00f5lmpunktis (v\u00e4lja arvatud see, mis on n\u00e4idatud v\u00e4ljal <code>S\u00f5lm<\/code>). Seega on s\u00fcnkroniseerimine \u00f5nnestunud.<\/p>\n<p>4. J\u00e4\u00e4b vaid rakenduses RMQ aadress uuele klastrile \u00fcle l\u00fclitada (konkreetsed toimingud s\u00f5ltuvad siin teie kasutatavast tehnoloogiamaastikust ja rakenduse muudest erip\u00e4radest), p\u00e4rast mida saab vanast lahkuda.<\/p>\n<p>Viimase operatsiooni jaoks (st <b>p\u00e4rast<\/b> rakenduse uuele klastrile \u00fcleminek) siseneme iga s\u00f5lmpunkti <b>RMQ klastrite s\u00f5lme aadress.<\/b> klastris ja t\u00e4idame k\u00e4sklused:<\/p>\n<pre><code class=\"bash\">rabbitmqctl stop_app\nrabbitmqctl reset<\/code><\/pre>\n<p>\nKlaster on \"unustanud\" vanad s\u00f5lmed: vana RMQ v\u00f5ib eemaldada, millega kolimine on l\u00f5petatud.<\/p>\n<p><i><b>M\u00e4rkus<\/b>: Kui kasutate RMQ-d koos sertifikaatidega, ei muutu p\u00f5him\u00f5tteliselt midagi \u2014 migratsiooniprotsess toimub t\u00e4pselt nii nagu tavaliselt.<\/i><\/p>\n<h2>J\u00e4reldused<\/h2>\n<p>\nKirjeldatud skeem sobib peaaegu k\u00f5ikidele juhtumitele, kus peame RabbitMQ-d migreerima v\u00f5i lihtsalt uude klastrisse liikuma.<\/p>\n<p>Meie juhul tekkis probleeme ainult \u00fcks kord, kui RMQ-le p\u00f6\u00f6rduti paljusid kohti, kuid meil ei olnud v\u00f5imalust adresseerida RMQ-d k\u00f5ikjal. Sel juhul k\u00e4ivitasime uue RMQ sama nimelises ruumis sama etikettidega, et see satuks juba olemasolevate teenuste ja Ingress\u2019ite alla ning pod\u2019i k\u00e4sitsi k\u00e4ivitamisel manipuleerisime etiketiga, eemaldades need alguses, et t\u00fchja RMQ-le ei satuks p\u00e4ringud, ja lisades need tagasi p\u00e4rast s\u00f5numite s\u00fcnkroneerimist.<\/p>\n<p>Sama strateegiat rakendasime RabbitMQ uuendamisel uue versiooniga, millel oli muudetud konfiguratsioon \u2014 k\u00f5ik toimis nagu kellav\u00e4rk.<\/p>\n<h2>P.S.<\/h2>\n<p>\nSelle materjali loogilise j\u00e4tkuna valmistame ette artikleid MongoDB (migreerimine rauaserverist Kubernetesesse) ja MySQL (kuidas valmistame ette seda andmebaasi Kuberneteses). Need avaldatakse l\u00e4hikuudel.<\/p>\n<h2>P.P.S.<\/h2>\n<p>\nLugege ka meie blogist:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/431500\/\">Andmebaasid ja Kubernetes (\u00fclevaade ja video ettekandest)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/417509\/\">K8s n\u00e4pun\u00e4ited ja trikid: Suurte andmebaaside bootstrap'i kiirendamine<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/450662\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>RabbitMQ \u2013 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Erlang \u0431\u0440\u043e\u043a\u0435\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0441 \u043f\u043e\u043b\u043d\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0437\u043b\u043e\u0432, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0443\u0437\u0435\u043b \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c. \u0418\u043c\u0435\u044f \u0432 production-\u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 Kubernetes, \u043c\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0439 RabbitMQ \u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0431\u0435\u0437 \u043f\u0440\u043e\u0441\u0442\u043e\u044f. \u0414\u0430\u043d\u043d\u0430\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24827,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-33075","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"RabbitMQ \u2013 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Erlang \u0431\u0440\u043e\u043a\u0435\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0441 \u043f\u043e\u043b\u043d\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0437\u043b\u043e\u0432, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0443\u0437\u0435\u043b \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c. \u0418\u043c\u0435\u044f \u0432 production-\u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 Kubernetes, \u043c\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0439 RabbitMQ \u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0431\u0435\u0437 \u043f\u0440\u043e\u0441\u0442\u043e\u044f. \u0414\u0430\u043d\u043d\u0430\u044f\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/besprostojnaya-migratsiya-rabbitmq-v-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0411\u0435\u0441\u043f\u0440\u043e\u0441\u0442\u043e\u0439\u043d\u0430\u044f \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044f RabbitMQ \u0432 Kubernetes | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"RabbitMQ \u2013 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Erlang \u0431\u0440\u043e\u043a\u0435\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0441 \u043f\u043e\u043b\u043d\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0437\u043b\u043e\u0432, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0443\u0437\u0435\u043b \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c. \u0418\u043c\u0435\u044f \u0432 production-\u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 Kubernetes, \u043c\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0439 RabbitMQ \u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0431\u0435\u0437 \u043f\u0440\u043e\u0441\u0442\u043e\u044f. \u0414\u0430\u043d\u043d\u0430\u044f\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/besprostojnaya-migratsiya-rabbitmq-v-kubernetes\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:50:35+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:50:35+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Seisakuvaba RabbitMQ migratsioon Kuberneteses | ProHoster","description":"RabbitMQ \u2013 Erlang keeles kirjutatud s\u00f5numibroker, mis v\u00f5imaldab luua t\u00f5rkeotsinguv\u00f5imelise klastrite s\u00fcsteemi, millel on t\u00e4ielik andmete replikatsioon mitmele s\u00f5lmele, kus iga s\u00f5lm saab teenindada lugemis- ja kirjutamisotstarbelisi p\u00e4ringuid. Aastaid Kubernetes'i tootmises kasutamisel toetame suurt hulka RabbitMQ paigaldusi ja oleme pidanud silmitsi seisma vajadusega migreerida andmeid \u00fchelt klastrilt teisele ilma seisakuteta. K\u00e4esolev","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/besprostojnaya-migratsiya-rabbitmq-v-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0411\u0435\u0441\u043f\u0440\u043e\u0441\u0442\u043e\u0439\u043d\u0430\u044f \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044f RabbitMQ \u0432 Kubernetes | ProHoster","og:description":"RabbitMQ \u2013 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Erlang \u0431\u0440\u043e\u043a\u0435\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0441 \u043f\u043e\u043b\u043d\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0437\u043b\u043e\u0432, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0443\u0437\u0435\u043b \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c. \u0418\u043c\u0435\u044f \u0432 production-\u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 Kubernetes, \u043c\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0439 RabbitMQ \u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0431\u0435\u0437 \u043f\u0440\u043e\u0441\u0442\u043e\u044f. \u0414\u0430\u043d\u043d\u0430\u044f","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/besprostojnaya-migratsiya-rabbitmq-v-kubernetes","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:50:35+00:00","article:modified_time":"2019-10-31T18:50:35+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"33075","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 13:51:33","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:47:28","updated":"2026-01-21 13:51:33"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/33075","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=33075"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/33075\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/24827"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=33075"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=33075"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=33075"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}