{"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\/sq\/blog\/administrirovanie\/besprostojnaya-migratsiya-rabbitmq-v-kubernetes","title":{"rendered":"Migrimi i pap\u00ebrmbajtsh\u00ebm i RabbitMQ n\u00eb Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Migrimi i pap\u00ebrmbajtsh\u00ebm i RabbitMQ n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2019\/05\/32c491c8605e2488550efadbcb052320.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nRabbitMQ \u2013 nj\u00eb broker mesazhesh i shkruar n\u00eb gjuh\u00ebn Erlang, q\u00eb mund\u00ebson organizimin e nj\u00eb klasteri q\u00eb ka q\u00ebndrueshm\u00ebri ndaj d\u00ebshtimeve me replika t\u00eb plot\u00eb t\u00eb t\u00eb dh\u00ebnave n\u00eb disa nyje, ku secila nyje mund t\u00eb sh\u00ebrbej\u00eb k\u00ebrkesat p\u00ebr lexim dhe shkwrite. Duke pasur n\u00eb prodhim shum\u00eb klastera Kubernetes, mb\u00ebshtesim nj\u00eb num\u00ebr t\u00eb madh instalimesh RabbitMQ dhe kemi hasur nevoj\u00ebn p\u00ebr migrimin e t\u00eb dh\u00ebnave nga nj\u00eb klaster n\u00eb tjetrin pa ndalim.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Kjo operacion ishte e nevojshme p\u00ebr ne t\u00eb pakt\u00ebn n\u00eb dy raste:<\/p>\n<ol>\n<li> Transferimi i t\u00eb dh\u00ebnave nga nj\u00eb klaster RabbitMQ, q\u00eb nuk ndodhet n\u00eb Kubernetes, n\u00eb nj\u00eb t\u00eb ri \u2014 tashm\u00eb \u00abkubernetizuar\u00bb (dmth. q\u00eb funksionon n\u00eb pod\u2019 a K8s) \u2014 klaster.<\/li>\n<li> Migrimi i RabbitMQ brenda Kubernetes nga nj\u00eb namespace n\u00eb tjetrin (p\u00ebr shembull, n\u00ebse kufijt\u00eb jan\u00eb t\u00eb ndara nga hap\u00ebsirat e emrave, at\u00ebher\u00eb p\u00ebr t\u00eb transferuar infrastruktur\u00ebn nga nj\u00eb kufi n\u00eb tjetrin).<\/li>\n<\/ol>\n<p>\nReceta e propozuar n\u00eb k\u00ebt\u00eb artikull \u00ebsht\u00eb orientuar n\u00eb situata (por aspak e kufizuar n\u00eb to), ku ka nj\u00eb klaster t\u00eb vjet\u00ebr RabbitMQ (p\u00ebr shembull, prej 3 nyjesh), q\u00eb ndodhet ose tashm\u00eb n\u00eb K8s, ose n\u00eb ndonj\u00eb server t\u00eb vjet\u00ebr. Me t\u00eb punon nj\u00eb aplikacion, i vendosur n\u00eb Kubernetes (tashm\u00eb atje ose n\u00eb perspektiv\u00eb):<\/p>\n<p><img decoding=\"async\" alt=\"Migrimi i pap\u00ebrmbajtsh\u00ebm i RabbitMQ n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2019\/05\/5fba162c90bc441978429288c59300ef.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u2026 dhe para nesh q\u00ebndron detyra e migrimit t\u00eb tij n\u00eb production t\u00eb ri n\u00eb Kubernetes.<\/p>\n<p>M\u00eb par\u00eb do t\u00eb p\u00ebrshkruhet qasja e p\u00ebrgjithshme p\u00ebr migrimin, dhe m\u00eb pas do t\u00eb vijn\u00eb detajet teknike p\u00ebr implementimin e saj.<\/p>\n<h2>Algoritmi i migrimit<\/h2>\n<p>\nHapi i par\u00eb, paraprak, para \u00e7do veprimi \u2014 verifikimi q\u00eb n\u00eb instalimin e vjet\u00ebr t\u00eb RabbitMQ \u00ebsht\u00eb aktivizuar moda e disponibilitetit t\u00eb lart\u00eb (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.rabbitmq.com\/ha.html\">HA<\/a><\/noindex>). Arsyeja \u00ebsht\u00eb e qart\u00eb \u2014 ne nuk duam t\u00eb humbim asnj\u00eb t\u00eb dh\u00ebn\u00eb. P\u00ebr t\u00eb realizuar k\u00ebt\u00eb verifikim, mund t\u00eb hyni n\u00eb panelin administrativ t\u00eb RabbitMQ dhe n\u00eb skedarin Admin \u2192 Policies t\u00eb siguroheni q\u00eb vlera e vendosur \u00ebsht\u00eb <code>ha-mode: all<\/code>:<\/p>\n<p><img decoding=\"async\" alt=\"Migrimi i pap\u00ebrmbajtsh\u00ebm i RabbitMQ n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2019\/05\/2e37be2cd3685eb8cedfbc5949e5036f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHapi tjet\u00ebr \u2014 ngritja e nj\u00eb klasteri t\u00eb ri t\u00eb RabbitMQ n\u00eb pod-at e Kubernetes (n\u00eb rastin ton\u00eb, p\u00ebr shembull, duke p\u00ebrfshir\u00eb 3 node, por numri i tyre mund t\u00eb jet\u00eb ndryshe).<\/p>\n<p>Pas k\u00ebsaj, ne bashkojm\u00eb klasterin e vjet\u00ebr dhe at\u00eb t\u00eb ri t\u00eb RabbitMQ, duke marr\u00eb nj\u00eb klaster t\u00eb vet\u00ebm (nga 6 node):<\/p>\n<p><img decoding=\"async\" alt=\"Migrimi i pap\u00ebrmbajtsh\u00ebm i RabbitMQ n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2019\/05\/52204b814f0ba73a20c4854e990c4059.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIniciuhet procesi i sinkronizimit t\u00eb t\u00eb dh\u00ebnave midis klastereve t\u00eb vjet\u00ebr dhe t\u00eb ri t\u00eb RabbitMQ. Pas p\u00ebrfundimit t\u00eb sinkronizimit t\u00eb t\u00eb gjitha t\u00eb dh\u00ebnave midis t\u00eb gjith\u00eb node-ve n\u00eb klaster, ne mund t\u00eb kalojm\u00eb aplikacionin n\u00eb p\u00ebrdorimin e klasterit t\u00eb ri:<\/p>\n<p><img decoding=\"async\" alt=\"Migrimi i pap\u00ebrmbajtsh\u00ebm i RabbitMQ n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2019\/05\/8bf19d4176e38b4679e96e0f1b8b57c1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPas k\u00ebtyre operacioneve, mjafton t\u00eb nxjerrim nga klasteri t\u00eb vjetrit t\u00eb RabbitMQ, dhe kalimi mund t\u00eb konsiderohet i p\u00ebrfunduar:<\/p>\n<p><img decoding=\"async\" alt=\"Migrimi i pap\u00ebrmbajtsh\u00ebm i RabbitMQ n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2019\/05\/bccc9b9fc8d6691d24195e9a97a0f88b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nK\u00ebt\u00eb skem\u00eb e kemi aplikuar disa her\u00eb n\u00eb produkcion. Megjithat\u00eb, p\u00ebr komoditetin ton\u00eb, e realizuam at\u00eb brenda nj\u00eb sistemi t\u00eb specializuar, q\u00eb shp\u00ebrndan konfigurime standart RMQ n\u00eb shum\u00eb klaster\u00eb Kubernetes. <i>(p\u00ebr ata q\u00eb jan\u00eb kurioz: po flasim p\u00ebr <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\">addon-operator<\/a><\/noindex>, p\u00ebr t\u00eb cilin ne <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/449096\/\">m\u00eb s\u00eb fundmi fol\u00ebm<\/a><\/noindex>)<\/i>. M\u00eb posht\u00eb do t\u00eb paraqiten udh\u00ebzime t\u00eb ve\u00e7anta q\u00eb secili mund t\u00eb aplikoj\u00eb n\u00eb instalimet e tij p\u00ebr t\u00eb provuar zgjidhjen e propozuar n\u00eb veprim.<\/p>\n<h2>T\u00eb provojm\u00eb n\u00eb praktik\u00eb<\/h2>\n<p><\/p>\n<h3>K\u00ebrkesat<\/h3>\n<p>\nDetajet jan\u00eb shum\u00eb t\u00eb thjeshta:<\/p>\n<ol>\n<li> Kluster Kubernetes (minikube \u00ebsht\u00eb gjithashtu n\u00eb rregull);<\/li>\n<li> Kluster RabbitMQ (mund t\u00eb vendoset gjithashtu n\u00eb bare metal, si edhe t\u00eb b\u00ebhet si nj\u00eb kluster i zakonsh\u00ebm n\u00eb Kubernetes nga Helm-chart zyrtar).<\/li>\n<\/ol>\n<p>\nP\u00ebr shembullin e p\u00ebrshkruar m\u00eb posht\u00eb, un\u00eb kam vendosur RMQ n\u00eb Kubernetes dhe e quajta <code>rmq-old<\/code>.<\/p>\n<h3>P\u00ebrgatitja e sken\u00ebs<\/h3>\n<p>\n1. Do t\u00eb shkarkojm\u00eb Helm-chart dhe pak do ta redaktojm\u00eb at\u00eb:<\/p>\n<pre><code class=\"bash\">helm fetch --untar stable\/rabbitmq-ha<\/code><\/pre>\n<p>\nP\u00ebr leht\u00ebsim, do t\u00eb caktuam fjal\u00ebkalimin, <code>ErlangCookie<\/code> dhe do t\u00eb krijojm\u00eb politik\u00ebn <code>ha-all<\/code>, n\u00eb m\u00ebnyr\u00eb q\u00eb rreshtat t\u00eb sinkronizohen automatikisht midis t\u00eb gjitha nyjeve t\u00eb klustrit RMQ:<\/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. Instaloni grafik\u00ebn:<\/p>\n<pre><code class=\"bash\">helm install . --name rmq-old --namespace rmq-old<\/code><\/pre>\n<p>\n3. Hyni n\u00eb panelin administrativ t\u00eb RabbitMQ, krijoni nj\u00eb radh\u00eb t\u00eb re dhe shtoni disa mesazhe. Ato do t\u00eb nevojiten p\u00ebr t\u00eb siguruar q\u00eb, pas migrimit, t\u00eb gjitha t\u00eb dh\u00ebnat t\u00eb ruhen dhe asgj\u00eb t\u00eb mos humbas\u00eb:<\/p>\n<p><img decoding=\"async\" alt=\"Migrimi i pap\u00ebrmbajtsh\u00ebm i RabbitMQ n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2019\/05\/b4b78ce622903dada396ced196c2ecce.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nStendi i testit \u00ebsht\u00eb gati: kemi nj\u00eb RabbitMQ \"t\u00eb vjet\u00ebr\" me t\u00eb dh\u00ebna q\u00eb duhet t\u00eb transferohen.<\/p>\n<h3>Migrimi i grupit t\u00eb RabbitMQ<\/h3>\n<p>\n1. Fillimisht, do t\u00eb vendosim nj\u00eb RabbitMQ t\u00eb ri n\u00eb <b>nj\u00eb tjet\u00ebr<\/b> hap\u00ebsir\u00eb emri me <b>t\u00eb nj\u00ebjtat<\/b> <code>ErlangCookie<\/code> dhe fjal\u00ebkalim p\u00ebr p\u00ebrdoruesin. Prandaj, do t\u00eb kryejm\u00eb operacionet e p\u00ebrshkruara m\u00eb sip\u00ebr, duke ndryshuar komand\u00ebn p\u00ebrfundimtare t\u00eb instalimit t\u00eb RMQ n\u00eb k\u00ebt\u00eb:<\/p>\n<pre><code class=\"bash\">helm install . --name rmq-new --namespace rmq-new<\/code><\/pre>\n<p>\n2. Tani \u00ebsht\u00eb e nevojshme t\u00eb kombinohet grupi i ri me at\u00eb t\u00eb vjet\u00ebr. P\u00ebr t\u00eb b\u00ebr\u00eb k\u00ebt\u00eb, hyni n\u00eb secilin nga pod\u00ebt <b>e reja<\/b> RabbitMQ dhe kryeni komandat:<\/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>\nN\u00eb variabl\u00ebn <code>OLD_RMQ<\/code> \u00ebsht\u00eb adresa e nj\u00ebrit nga node-t <b>e vjet\u00ebr<\/b> grupi RMQ.<\/p>\n<p>K\u00ebto komandat do t\u00eb ndalojn\u00eb nodin aktual <b>e reja<\/b> e grupit RMQ, do ta bashkojn\u00eb at\u00eb me grupin e vjet\u00ebr dhe do ta fillojn\u00eb p\u00ebrs\u00ebri.<\/p>\n<p>3. Grupe RMQ me 6 node \u00ebsht\u00eb gati:<\/p>\n<p><img decoding=\"async\" alt=\"Migrimi i pap\u00ebrmbajtsh\u00ebm i RabbitMQ n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2019\/05\/88f4655556c1146f7a6e54fd2fd798f4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDuhet t\u00eb prisni, derisa mesazhet t\u00eb sinkronizohen midis t\u00eb gjith\u00eb nyjeve. Nuk \u00ebsht\u00eb e v\u00ebshtir\u00eb t\u00eb kuptohet se koha e sinkronizimit t\u00eb mesazheve varet nga kapacitetet e harduerit mbi t\u00eb cilin \u00ebsht\u00eb vendosur klusteri, si dhe nga numri i mesazheve. N\u00eb skenarin e p\u00ebrshkruar, ka vet\u00ebm 10, prandaj t\u00eb dh\u00ebnat u sinkronizuan menj\u00ebher\u00eb, por me nj\u00eb num\u00ebr t\u00eb mjaftuesh\u00ebm mesazhesh, sinkronizimi mund t\u00eb zgjas\u00eb p\u00ebr or\u00eb t\u00eb t\u00ebra.<\/p>\n<p>Pra, statusi i sinkronizimit:<\/p>\n<p><img decoding=\"async\" alt=\"Migrimi i pap\u00ebrmbajtsh\u00ebm i RabbitMQ n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2019\/05\/1185591d8d5478634f35b7433ca75bbc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nK\u00ebtu <code>+5<\/code> do t\u00eb thot\u00eb se mesazhet jan\u00eb tashm\u00eb <b>ende<\/b> n\u00eb 5 nyje (p\u00ebrve\u00e7 asaj q\u00eb \u00ebsht\u00eb e specifikuar n\u00eb fush\u00ebn <code>Node<\/code>). K\u00ebshtu, sinkronizimi kaloi me sukses.<\/p>\n<p>4. Vet\u00ebm duhet t\u00eb nd\u00ebrroni n\u00eb aplikacion adres\u00ebn RMQ n\u00eb klusterin e ri (veprimet specifike k\u00ebtu varet nga pena e teknologjis\u00eb q\u00eb p\u00ebrdorni dhe specifika t\u00eb tjera t\u00eb aplikacionit), pas s\u00eb cil\u00ebs mund t\u00eb despedoni nga i vjetri.<\/p>\n<p>P\u00ebr operacionin e fundit (dmth tashm\u00eb <b>pas<\/b> nd\u00ebrrimin e aplikacionit n\u00eb klusterin e ri) hyjm\u00eb n\u00eb \u00e7do nyj\u00eb <b>e vjet\u00ebr<\/b> t\u00eb klusterit dhe ekzekutojm\u00eb komandat:<\/p>\n<pre><code class=\"bash\">rabbitmqctl stop_app\nrabbitmqctl reset<\/code><\/pre>\n<p>\nKlusteri \u00abe ka harruar\u00bb nyjet e vjetra: mund t\u00eb largoni RMQ-n\u00eb e vjet\u00ebr, duke p\u00ebrfunduar k\u00ebshtu migrimin.<\/p>\n<p><i><b>Sh\u00ebnim<\/b>: N\u00ebse po p\u00ebrdorni RMQ me certifikata, at\u00ebher\u00eb asgj\u00eb nuk ndryshon thelb\u00ebsisht \u2014 procesi i migrimit do t\u00eb zhvillohet pik\u00ebrisht ashtu si\u00e7 \u00ebsht\u00eb.<\/i><\/p>\n<h2>P\u00ebrfundimet<\/h2>\n<p>\nSkema e p\u00ebrshkruar \u00ebsht\u00eb e p\u00ebrshtatshme praktikisht p\u00ebr t\u00eb gjitha rastet kur duhet t\u00eb transferojm\u00eb RabbitMQ ose thjesht t\u00eb kalojm\u00eb n\u00eb nj\u00eb klaster t\u00eb ri.<\/p>\n<p>N\u00eb rastin ton\u00eb, v\u00ebshtir\u00ebsit\u00eb u shfaq\u00ebn vet\u00ebm nj\u00eb her\u00eb, kur RMQ u k\u00ebrkua nga shum\u00eb vende, dhe ne nuk kishim mund\u00ebsi t\u00eb ndryshonim adres\u00ebn e RMQ n\u00eb t\u00eb gjith\u00eb vendet. At\u00ebher\u00eb ne nis\u00ebm nj\u00eb RMQ t\u00eb ri n\u00eb t\u00eb nj\u00ebjtin hap\u00ebsir\u00eb emri me etiketat e nj\u00ebjta, n\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb p\u00ebrfshiheshin n\u00eb sh\u00ebrbimet dhe Ingress-at ekzistues, dhe kur nisim pod-in manualisht, manipuluam etiketat, duke i hequr ato n\u00eb fillim, p\u00ebr t\u00eb siguruar q\u00eb k\u00ebrkesat t\u00eb mos kalonin n\u00eb RMQ-n\u00eb e zbraz\u00ebt dhe duke i shtuar p\u00ebrs\u00ebri pas sinkronizimit t\u00eb mesazheve.<\/p>\n<p>Ne kemi aplikuar t\u00eb nj\u00ebjt\u00ebn strategji kur azhurnuam RabbitMQ n\u00eb nj\u00eb version t\u00eb ri me konfigurim t\u00eb ndryshuar \u2014 gjith\u00e7ka funksionoi pa probleme.<\/p>\n<h2>P.S.<\/h2>\n<p>\nSi nj\u00eb vazhdim logjik i k\u00ebtij materiali, ne po p\u00ebrgatisim artikuj p\u00ebr MongoDB (migrimi nga serveri fizik n\u00eb Kubernetes) dhe MySQL (si e p\u00ebrgatisim k\u00ebt\u00eb DBMS brenda Kubernetes). Ato do t\u00eb publikohen n\u00eb muajt e ardhsh\u00ebm.<\/p>\n<h2>P.P.S.<\/h2>\n<p>\nLexoni gjithashtu n\u00eb blogun ton\u00eb:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/431500\/\">Baza t\u00eb dh\u00ebnash dhe Kubernetes (p\u00ebrmbledhje dhe video e prezantimit)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/417509\/\">K8s tips &amp; tricks: Accelerating the bootstrap of large databases<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Burimi: <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.0.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 \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\/sq\/blog\/administrirovanie\/besprostojnaya-migratsiya-rabbitmq-v-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\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\/sq\/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\udd47Migrimi pa nd\u00ebrprerje i RabbitMQ n\u00eb Kubernetes | ProHoster","description":"RabbitMQ \u2013 nj\u00eb broker i mesazheve i shkruar n\u00eb gjuh\u00ebn Erlang, i cili mund\u00ebson organizimin e nj\u00eb klasteri t\u00eb q\u00ebndruesh\u00ebm me replikim t\u00eb plot\u00eb t\u00eb t\u00eb dh\u00ebnave n\u00eb disa nyje, ku secila nyje mund t\u00eb sh\u00ebrbej\u00eb k\u00ebrkesat p\u00ebr lexim dhe shkrim. Duke pasur n\u00eb prodhim shum\u00eb klaster\u00eb Kubernetes, mbajm\u00eb nj\u00eb num\u00ebr t\u00eb madh instalimesh RabbitMQ dhe jemi p\u00ebrballur me nevoj\u00ebn e migrimit t\u00eb t\u00eb dh\u00ebnave nga nj\u00eb klaster n\u00eb nj\u00eb tjet\u00ebr pa nd\u00ebrprerje. Ky","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/besprostojnaya-migratsiya-rabbitmq-v-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","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\/sq\/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\/sq\/wp-json\/wp\/v2\/posts\/33075","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=33075"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/33075\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/24827"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=33075"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=33075"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=33075"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}