{"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":"Kompleksne RabbitMQ migratsioon Kubernetesesse","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Kompleksne RabbitMQ migratsioon Kubernetesesse\" src=\"\/wp-content\/uploads\/2019\/05\/32c491c8605e2488550efadbcb052320.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nRabbitMQ on Erlangi kirjutatud s\u00f5numibroker, mis v\u00f5imaldab organiseerida talitlush\u00e4ireteta klastrit t\u00e4ieliku andmete replikatsiooniga mitmele s\u00f5lmele, kus iga s\u00f5lm suudab teenindada lugemis- ja kirjutamissoove. Olles tootes mitmeid Kubernetes klastri, toetame suurt hulka RabbitMQ paigaldisi ja seisime silmitsi vajadusega migreerida andmed \u00fchest klastrist teise ilma seiskumiseta.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>See operatsioon oli vajalik meile v\u00e4hemalt kahe juhtumi puhul:<\/p>\n<ol>\n<li> Andmete \u00fcleviimine RabbitMQ klastrist, mis ei asu Kuberneteses, uude - juba \u201ekuberneeritud\u201c (st toimiv K8s pod'ides) - klastrisse.<\/li>\n<li> RabbitMQ migratsioon Kuberneteses \u00fche nimede ruumist teise (n\u00e4iteks, kui piirid on jagatud nimede ruumide kaudu, siis infrastruktuuri \u00fcleviimiseks \u00fchest piirist teise).<\/li>\n<\/ol>\n<p>\nArtiklis pakutud retsept on suunatud olukordadele (aga mitte ainult neile), kus on vana RabbitMQ klaster (n\u00e4iteks koosneb 3 s\u00f5lmest), mis asub kas K8s-is v\u00f5i m\u00f5nel vanemal serveril. Selle kallal t\u00f6\u00f6tab rakendus, mis on paigutatud Kubernetesesse (kas juba seal v\u00f5i perspektiivis):<\/p>\n<p><img decoding=\"async\" alt=\"Kompleksne RabbitMQ migratsioon 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 migreerida see uude produktsiooni Kubernetesesse.<\/p>\n<p>Esiteks kirjeldatakse \u00fcldist l\u00e4henemist migreerimisele, seej\u00e4rel tehnilisi \u00fcksikasju selle rakendamisest.<\/p>\n<h2>Migreerimise algoritm<\/h2>\n<p>\nEsimene, eelnev etapp enne igasuguseid tegevusi - kontrollimine, et vanas RabbitMQ paigalduses on aktiveeritud k\u00f5rge saadavuse re\u017eiim (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.rabbitmq.com\/ha.html\">HA<\/a><\/noindex>). P\u00f5hjus on ilmne - me ei soovi kaotada andmeid. Selle kontrollimiseks saab siseneda RabbitMQ administraatori paneeli ja vahekaardil Admin \u2192 Policies veenduda, et v\u00e4\u00e4rtus on seatud <code>ha-mode: all<\/code>:<\/p>\n<p><img decoding=\"async\" alt=\"Kompleksne RabbitMQ migratsioon Kubernetesesse\" src=\"\/wp-content\/uploads\/2019\/05\/2e37be2cd3685eb8cedfbc5949e5036f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJ\u00e4rgmine samm - t\u00f5stame \u00fcles uue RabbitMQ klastris pod'ides Kuberneteses (n\u00e4iteks koosnedes 3 s\u00f5lmest, kuid neid v\u00f5ib olla ka teisi).<\/p>\n<p>P\u00e4rast seda \u00fchendame vana ja uue RabbitMQ klastrid, saades \u00fche klastrisse (6 s\u00f5lme):<\/p>\n<p><img decoding=\"async\" alt=\"Kompleksne RabbitMQ migratsioon 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 klastrite vahel. P\u00e4rast seda, kui k\u00f5ik andmed s\u00fcnkroniseeritakse nii, et k\u00f5ik s\u00f5lmed klastris, saame rakenduse suunata kasutama uut klastrit:<\/p>\n<p><img decoding=\"async\" alt=\"Kompleksne RabbitMQ migratsioon Kubernetesesse\" src=\"\/wp-content\/uploads\/2019\/05\/8bf19d4176e38b4679e96e0f1b8b57c1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u00e4rast neid toiminguid piisab, kui v\u00f5tta RabbitMQ klastri vanad s\u00f5lmed v\u00e4lja ja kolimine v\u00f5ib lugeda l\u00f5petatuks:<\/p>\n<p><img decoding=\"async\" alt=\"Kompleksne RabbitMQ migratsioon Kubernetesesse\" src=\"\/wp-content\/uploads\/2019\/05\/bccc9b9fc8d6691d24195e9a97a0f88b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSeda me oleme korduvalt kasutanud meie tootmises. Kuid enda mugavuse huvides rakendasime selle spetsialiseeritud s\u00fcsteemi raames, mis levitab t\u00fc\u00fcpilisi RMQ konfiguratsioone paljudele Kubernetes klastritele. <i>(neile, kellel on huvi: r\u00e4\u00e4gime <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\/\">hiljuti r\u00e4\u00e4kisime.<\/a><\/noindex>)<\/i>Allpool on esitatud eraldi juhised, mida iga\u00fcks saab rakendada oma paigaldustes, et proovida pakutavat lahendust praktikas.<\/p>\n<h2>Proovime praktikas<\/h2>\n<p><\/p>\n<h3>N\u00f5uded<\/h3>\n<p>\nN\u00f5uded on v\u00e4ga lihtsad:<\/p>\n<ol>\n<li> Kubernetes klaster (sobib ka minikube);<\/li>\n<li> RabbitMQ klaster (v\u00f5ib olla paigaldatud bare metal'i peale v\u00f5i loodud tavaliseks klastri Kubernetes'is ametlikust Helm-keskkonnast).<\/li>\n<\/ol>\n<p>\nAllpool kirjeldatud n\u00e4ite jaoks paigaldasin RMQ Kubernetes'is ja nimetasime selle <code>rmq-old<\/code>.<\/p>\n<h3>Stendi ettevalmistamine<\/h3>\n<p>\n1. Laadime alla Helm-chart'i ja redigeerime seda veidi:<\/p>\n<pre><code class=\"bash\">helm fetch --untar stable\/rabbitmq-ha<\/code><\/pre>\n<p>\nMugavuse huvides m\u00e4\u00e4rame parooli, <code>ErlangCookie<\/code> ja loome poliitika <code>ha-all<\/code>, et vaikimisi j\u00e4rjekorrad s\u00fcnkroniseeritakse k\u00f5igi RMQ klastri 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. Paigaldame chart'i:<\/p>\n<pre><code class=\"bash\">helm install . --name rmq-old --namespace rmq-old<\/code><\/pre>\n<p>\n3. Siseneme RabbitMQ halduss\u00fcsteemi, loome uue j\u00e4rjekorra ja lisame paar s\u00f5numit. Need on vajalikud, et p\u00e4rast migratsiooni saaksime veenduda, et k\u00f5ik andmed on s\u00e4ilinud ja me ei ole midagi kaotanud:<\/p>\n<p><img decoding=\"async\" alt=\"Kompleksne RabbitMQ migratsioon Kubernetesesse\" src=\"\/wp-content\/uploads\/2019\/05\/b4b78ce622903dada396ced196c2ecce.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTeststend on valmis: meil on \u00abvana\u00bb RabbitMQ andmetega, mis tuleb \u00fcle kanda.<\/p>\n<h3>RabbitMQ klastrite migratsioon<\/h3>\n<p>\n1. Esiteks paigaldame uue RabbitMQ <b>teises<\/b> nimetuses sama <b>ja parooliga kasutajale. Selleks teeme \u00fclaltoodud toimingud, muutes RMQ paigaldamise l\u00f5ppk\u00e4sku j\u00e4rgmisele:<\/b> <code>ErlangCookie<\/code> helm install . --name rmq-new --namespace rmq-new<\/p>\n<pre><code class=\"bash\">2. N\u00fc\u00fcd tuleb \u00fchendada uus klaster vanaga. Selleks siseneme igasse pod'i<\/code><\/pre>\n<p>\nuue <b>RabbitMQ ja t\u00e4idame k\u00e4sud:<\/b> 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<\/p>\n<pre><code class=\"bash\">OLD_RMQ<\/code><\/pre>\n<p>\nMu variables <code>on \u00fche vana<\/code> RMQ klastris oleva s\u00f5lme aadress. <b>Need k\u00e4sud peatavad praeguse s\u00f5lme<\/b> RMQ klastri, \u00fchendavad selle vanasse klastrisse ja k\u00e4ivitavad uuesti.<\/p>\n<p>3. RMQ klaster, kus on 6 s\u00f5lme, on valmis: <b>RabbitMQ ja t\u00e4idame k\u00e4sud:<\/b> RMQ klaster, liidetakse vanale klasterile ja k\u00e4ivitatakse uuesti.<\/p>\n<p>3. RMQ klaster koosneb 6 s\u00f5lmest ja on valmis:<\/p>\n<p><img decoding=\"async\" alt=\"Kompleksne RabbitMQ migratsioon Kubernetesesse\" src=\"\/wp-content\/uploads\/2019\/05\/88f4655556c1146f7a6e54fd2fd798f4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPeate ootama, kuni s\u00f5numid s\u00fcnkroonitakse k\u00f5igi s\u00f5lmede vahel. Ei ole raske arvata, et s\u00f5numite s\u00fcnkroonimise aeg s\u00f5ltub klastrit k\u00e4itavast riistvarast ja s\u00f5numite arvust. Kirjeldatud stsenaariumis on neid ainult 10, seega andmed s\u00fcnkrooniti hetkega, kuid piisavalt suures s\u00f5numite arvus v\u00f5ib s\u00fcnkroonimine kesta tunde.<\/p>\n<p>Nii et, s\u00fcnkroonimise staatus:<\/p>\n<p><img decoding=\"async\" alt=\"Kompleksne RabbitMQ migratsioon Kubernetesesse\" src=\"\/wp-content\/uploads\/2019\/05\/1185591d8d5478634f35b7433ca75bbc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSiin <code>+5<\/code> t\u00e4hendab, et s\u00f5numid on juba <b>veel<\/b> 5 s\u00f5lmes (lisaks sellele, mis on m\u00e4rgitud v\u00e4ljale <code>Node<\/code>). Nii et, s\u00fcnkroonimine l\u00e4ks edukalt l\u00e4bi.<\/p>\n<p>4. J\u00e4\u00e4b vaid rakenduses RMQ aadress vahetada uuele klastrile (konkreetsed tegevused s\u00f5ltuvad teie kasutatavast tehnoloogiapaagist ja muudest rakenduse erip\u00e4radest), p\u00e4rast mida saab vanaga h\u00fcvasti j\u00e4tta.<\/p>\n<p>Viimase toimingu jaoks (st <b>p\u00e4rast<\/b> rakenduse m\u00f5nel uuele klastrile \u00fcleviimine) siseneme iga s\u00f5lme <b>Need k\u00e4sud peatavad praeguse s\u00f5lme<\/b> klastris ja t\u00e4idame k\u00e4sud:<\/p>\n<pre><code class=\"bash\">rabbitmqctl stop_app\nrabbitmqctl reset<\/code><\/pre>\n<p>\nKlastril on \"unustanud\" vanad s\u00f5lmed: vana RMQ-deleting ja kolimine on l\u00f5petatud.<\/p>\n<p><i><b>M\u00e4rkus<\/b>: Kui kasutate RMQ-d sertifikaatidega, siis p\u00f5him\u00f5tteliselt ei muutu midagi \u2014 kolimisprotsess toimub t\u00e4pselt samamoodi.<\/i><\/p>\n<h2>J\u00e4reldused<\/h2>\n<p>\nKirjeldatud skeem sobib praktiliselt k\u00f5ikides olukordades, kui peame RabbitMQ-d \u00fcleviima v\u00f5i lihtsalt uuele klastrile kolima.<\/p>\n<p>Meie puhul tekkisid raskused vaid \u00fcks kord, kui RMQ-d kasutati paljusid kohti, ja meil ei olnud v\u00f5imalust igal pool RMQ aadressi uuele vahetada. Siis k\u00e4ivitasime uue RMQ sama nimekirjaga samas nimes, nii et see vastaks juba olemasolevatele teenustele ja Ingress'idele, ja k\u00e4ivitasime pod'i k\u00e4sitsi m\u00e4rkide manipuleerimisega, eemaldades need alguses, et t\u00fchjad RMQ-le ei laekuks p\u00e4ringud, ja lisades need p\u00e4rast s\u00f5numite s\u00fcnkroonimist tagasi.<\/p>\n<p>Sarnast strateegiat kasutasime RabbitMQ versiooniuuendamiseks koos muudetud konfiguratsiooniga \u2014 k\u00f5ik t\u00f6\u00f6tas nagu kell.<\/p>\n<h2>P.S.<\/h2>\n<p>\nSelle teema loogilise j\u00e4tkuna valmistame ette artikleid MongoDB (migratsioon rauaserverist Kubernetesesse) ja MySQL (kuidas me seda andmebaasi Kuberneteses valmistame). 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 nipid: Suurendame suurte andmebaaside bootstrap'i kiirus.<\/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 5.0.1.1 - 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.\" \/>\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) 5.0.1.1\" \/>\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.\" \/>\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\udd47 Sujuv RabbitMQ migreerimine Kubernetesesse | ProHoster","description":"RabbitMQ \u2013 Erlangi keeles kirjutatud s\u00f5numite edastaja.","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.","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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"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}]}}