{"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 thjesht\u00eb i RabbitMQ n\u00eb Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Migrimi i thjesht\u00eb 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 t\u00eb q\u00ebndruesh\u00ebm me replikim t\u00eb plot\u00eb t\u00eb t\u00eb dh\u00ebnave n\u00eb disa nyje, ku \u00e7do nyje mund t\u00eb sh\u00ebrbej\u00eb k\u00ebrkesat p\u00ebr lexim dhe shkrim. Duke pasur n\u00eb eksploatimin e production shum\u00eb klaster\u00eb Kubernetes, mb\u00ebshtesim nj\u00eb num\u00ebr t\u00eb madh instalimesh RabbitMQ dhe jemi p\u00ebrballur me nevoj\u00ebn p\u00ebr t\u00eb migruar t\u00eb dh\u00ebna nga nj\u00eb klaster n\u00eb tjet\u00ebr pa ndales\u00eb.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Kjo operacion ishte i nevojsh\u00ebm p\u00ebr ne n\u00eb dy raste t\u00eb pakt\u00ebn:<\/p>\n<ol>\n<li> Transferimi i t\u00eb dh\u00ebnave nga klasteri RabbitMQ, i cili nuk \u00ebsht\u00eb n\u00eb Kubernetes, n\u00eb nj\u00eb t\u00eb ri \u2013 tashm\u00eb \"kubernetizuar\" (pra, q\u00eb funksionon n\u00eb pod\u2019\u00eb K8s) \u2013 klaster.<\/li>\n<li> Migroja e RabbitMQ brenda Kubernetes nga nj\u00eb namespace n\u00eb tjet\u00ebr (p\u00ebr shembull, n\u00ebse konturat jan\u00eb t\u00eb ndara p\u00ebrmes hap\u00ebsirave t\u00eb emrave, at\u00ebher\u00eb p\u00ebr t\u00eb transferuar infrastruktur\u00ebn nga nj\u00eb kontur n\u00eb tjetrin).<\/li>\n<\/ol>\n<p>\nRecepti i propozuar n\u00eb k\u00ebt\u00eb artikull \u00ebsht\u00eb t\u00eb orientuar p\u00ebr situata (por aspak i kufizuar n\u00eb to), ku ka nj\u00eb klaster t\u00eb vjet\u00ebr RabbitMQ (p.sh., me 3 nyje), q\u00eb \u00ebsht\u00eb tashm\u00eb n\u00eb K8s, ose n\u00eb disa servera t\u00eb vjet\u00ebr. Nj\u00eb aplikacion e p\u00ebrdor at\u00eb, t\u00eb vendosur n\u00eb Kubernetes (apo n\u00eb perspektiv\u00eb):<\/p>\n<p><img decoding=\"async\" alt=\"Migrimi i thjesht\u00eb 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 p\u00ebrpara nesh \u00ebsht\u00eb detyra e migrimit t\u00eb tij n\u00eb nj\u00eb production t\u00eb ri n\u00eb Kubernetes.<\/p>\n<p>S\u00eb pari do t\u00eb p\u00ebrshkruhet qasja e p\u00ebrgjithshme p\u00ebr vet\u00eb migrimin, dhe m\u00eb pas \u2013 detajet teknike p\u00ebr implementimin e tij.<\/p>\n<h2>Algoritmi i migrimit<\/h2>\n<p>\nHapi i par\u00eb, paraprak, p\u00ebrpara ndonj\u00eb veprime \u2013 kontrolli q\u00eb n\u00eb instalimin e vjet\u00ebr t\u00eb RabbitMQ \u00ebsht\u00eb aktivizuar moda e disponueshm\u00ebris\u00eb s\u00eb lart\u00eb (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.rabbitmq.com\/ha.html\">HA<\/a><\/noindex>). Arsyja \u00ebsht\u00eb e qart\u00eb \u2013 ne nuk duam t\u00eb humbasim ndonj\u00eb t\u00eb dh\u00ebn\u00eb. P\u00ebr t\u00eb realizuar k\u00ebt\u00eb kontroll, mund t\u00eb hyni n\u00eb administrat\u00ebn e RabbitMQ dhe n\u00eb seksionin Admin \u2192 Policies t\u00eb siguroheni q\u00eb \u00ebsht\u00eb vendosur vlera <code>ha-mode: all<\/code>:<\/p>\n<p><img decoding=\"async\" alt=\"Migrimi i thjesht\u00eb 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 \u2013 ngrisim nj\u00eb klaster t\u00eb ri RabbitMQ n\u00eb pod\u2019\u00eb Kubernetes (n\u00eb rastin ton\u00eb, p\u00ebr shembull, p\u00ebrb\u00ebr\u00eb nga 3 nyje, por numri i tyre mund t\u00eb jet\u00eb edhe tjet\u00ebr).<\/p>\n<p>Pas k\u00ebsaj, ne bashkojm\u00eb klasterin e vjet\u00ebr dhe at\u00eb t\u00eb ri t\u00eb RabbitMQ, duke formuar nj\u00eb klaster t\u00eb vet\u00ebm (me 6 nyje):<\/p>\n<p><img decoding=\"async\" alt=\"Migrimi i thjesht\u00eb i RabbitMQ n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2019\/05\/52204b814f0ba73a20c4854e990c4059.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIniciatet procesi i sinkronizimit t\u00eb t\u00eb dh\u00ebnave midis klasterit t\u00eb vjet\u00ebr dhe atij t\u00eb ri t\u00eb RabbitMQ. Pas p\u00ebrfundimit t\u00eb sinkronizimit t\u00eb t\u00eb gjitha t\u00eb dh\u00ebnave midis t\u00eb gjitha nyjeve n\u00eb klaster, mund ta \u00e7elim aplikacionin p\u00ebr t\u00eb p\u00ebrdorur klasterin e ri:<\/p>\n<p><img decoding=\"async\" alt=\"Migrimi i thjesht\u00eb 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 veprimeve, mjafton t\u00eb heqim nga klasteri RabbitMQ nyjet e vjetra, dhe mund t\u00eb konsiderohet se migroja \u00ebsht\u00eb p\u00ebrfunduar:<\/p>\n<p><img decoding=\"async\" alt=\"Migrimi i thjesht\u00eb 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 prodhimin ton\u00eb. Megjithat\u00eb, p\u00ebr leht\u00ebsin\u00eb ton\u00eb, e kemi realizuar brenda nj\u00eb sistemi t\u00eb specializuar q\u00eb shp\u00ebrndan konfiguracione standarde RMQ n\u00eb grupe t\u00eb shumta Kubernetes. <i>(p\u00ebr ata q\u00eb jan\u00eb kurioz\u00eb: b\u00ebhet fjal\u00eb 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\/\">s\u00eb fundmi kemi treguar<\/a><\/noindex>)<\/i>. M\u00eb posht\u00eb do t\u00eb paraqiten udh\u00ebzime t\u00eb ve\u00e7anta, t\u00eb cilat secili mund t'i zbatoj\u00eb n\u00eb instalimet e tij, p\u00ebr t\u00eb provuar zgjidhjen e propozuar n\u00eb veprim.<\/p>\n<h2>Provojm\u00eb n\u00eb praktik\u00eb<\/h2>\n<p><\/p>\n<h3>K\u00ebrkesat<\/h3>\n<p>\nRrethanat jan\u00eb shum\u00eb t\u00eb thjeshta:<\/p>\n<ol>\n<li> Kluster Kubernetes (i p\u00ebrshtatsh\u00ebm edhe p\u00ebr minikube);<\/li>\n<li> Klastri RabbitMQ (mund t\u00eb jet\u00eb i instaluar n\u00eb bare metal, ose t\u00eb krijohet si nj\u00eb klastri normal n\u00eb Kubernetes nga nj\u00eb helm-chart zyrtar).<\/li>\n<\/ol>\n<p>\nP\u00ebr shembullin e p\u00ebrshkruar m\u00eb posht\u00eb, un\u00eb kam instaluar RMQ n\u00eb Kubernetes dhe e kam quajtur <code>rmq-old<\/code>.<\/p>\n<h3>P\u00ebrgatitja e sken\u00ebs<\/h3>\n<p>\n1. Do t\u00eb shkarkojm\u00eb helm-chart dhe do ta redaktojm\u00eb pak:<\/p>\n<pre><code class=\"bash\">helm fetch --untar stable\/rabbitmq-ha<\/code><\/pre>\n<p>\nP\u00ebr leht\u00ebsi, p\u00ebrcaktojm\u00eb fjal\u00ebkalimin, <code>ErlangCookie<\/code> dhe krijojm\u00eb politik\u00ebn <code>ha-all<\/code>, q\u00eb me default t\u00eb sinkronizohen radh\u00ebt nd\u00ebrmjet t\u00eb gjith\u00eb nod\u00ebve t\u00eb klastri 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. Instalo \u00e7artin:<\/p>\n<pre><code class=\"bash\">helm install . --name rmq-old --namespace rmq-old<\/code><\/pre>\n<p>\n3. Hyni n\u00eb admin panelin e RabbitMQ, krijoni nj\u00eb radh\u00eb t\u00eb re dhe shtoni disa mesazhe. K\u00ebto do t\u00eb nevojiten q\u00eb pas migrimit t\u00eb mund t\u00eb sigurohemi se t\u00eb gjitha t\u00eb dh\u00ebnat jan\u00eb ruajtur dhe nuk kemi humbur asgj\u00eb:<\/p>\n<p><img decoding=\"async\" alt=\"Migrimi i thjesht\u00eb i RabbitMQ n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2019\/05\/b4b78ce622903dada396ced196c2ecce.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSkena testuese \u00ebsht\u00eb gati: kemi \"RabbitMQ t\u00eb vjet\u00ebr\" me t\u00eb dh\u00ebna q\u00eb duhet t\u00eb transferohen.<\/p>\n<h3>Migrimi i klastri RabbitMQ<\/h3>\n<p>\n1. Fillimisht, do t\u00eb instalojm\u00eb nj\u00eb RabbitMQ t\u00eb ri n\u00eb <b>tjet\u00ebr<\/b> hap\u00ebsir\u00ebn em\u00ebrtuese me <b>t\u00eb nj\u00ebjtat<\/b> <code>ErlangCookie<\/code> dhe fjal\u00ebkalim p\u00ebr p\u00ebrdoruesin. P\u00ebr k\u00ebt\u00eb do t\u00eb kryejm\u00eb operacionet e p\u00ebrshkruara m\u00eb lart, duke ndryshuar komand\u00ebn p\u00ebr instalimin e 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 k\u00ebrkohet t\u00eb bashkohet klasteri i ri me at\u00eb t\u00eb vjet\u00ebr. P\u00ebr k\u00ebt\u00eb, hyjm\u00eb n\u00eb secilin nga pod-et <b>t\u00eb reja<\/b> RabbitMQ dhe ekzekutojm\u00eb 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 variablin <code>OLD_RMQ<\/code> \u00ebsht\u00eb adresa e nj\u00eb prej nod\u00ebve <b>t\u00eb vjetra<\/b> klastri RMQ.<\/p>\n<p>K\u00ebto komanda do t\u00eb ndalojn\u00eb nodin aktual <b>t\u00eb reja<\/b> t\u00eb klastri RMQ, do ta bashkojn\u00eb at\u00eb me klastri e vjet\u00ebr dhe do ta rinasin.<\/p>\n<p>3. Klasteri RMQ me 6 nod\u00eb \u00ebsht\u00eb gati:<\/p>\n<p><img decoding=\"async\" alt=\"Migrimi i thjesht\u00eb i RabbitMQ n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2019\/05\/88f4655556c1146f7a6e54fd2fd798f4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDuhet pritur derisa mesazhet t\u00eb sinkronizohen midis t\u00eb gjith\u00eb nodelave. Nuk \u00ebsht\u00eb e v\u00ebshtir\u00eb t\u00eb kuptohet se koha e sinkronizimit t\u00eb mesazheve varet nga fuqia e harduerit ku \u00ebsht\u00eb vendosur klasteri dhe nga numri i mesazheve. N\u00eb skenarin e p\u00ebrshkruar, ka vet\u00ebm 10 prej tyre, k\u00ebshtu q\u00eb t\u00eb dh\u00ebnat u sinkronizuan menj\u00ebher\u00eb, por n\u00ebse numri i mesazheve \u00ebsht\u00eb mjaft i madh, sinkronizimi mund t\u00eb zgjas\u00eb or\u00eb t\u00eb t\u00ebra.<\/p>\n<p>Pra, statusi i sinkronizimit:<\/p>\n<p><img decoding=\"async\" alt=\"Migrimi i thjesht\u00eb 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 tashm\u00eb jan\u00eb <b>p\u00ebrgjigjesha<\/b> n\u00eb 5 nodelat (p\u00ebrve\u00e7 asaj q\u00eb \u00ebsht\u00eb e sh\u00ebnuar n\u00eb fush\u00ebn <code>Nyja<\/code>). K\u00ebshtu, sinkronizimi arriti me sukses.<\/p>\n<p>4. E vetmja gj\u00eb e mbetur \u00ebsht\u00eb t\u00eb kaloni n\u00eb aplikacion adres\u00ebn RMQ n\u00eb klasterin e ri (veprimet specifike k\u00ebtu varen nga stoku i teknologjis\u00eb q\u00eb po p\u00ebrdorni dhe nga specifika tjet\u00ebr e aplikacionit), pas t\u00eb cilit mund t\u00eb despedoni nga i vjetri.<\/p>\n<p>P\u00ebr operacionin e fundit (dmth, tashm\u00eb <b>pas<\/b> kalimi i aplikacionit n\u00eb klasterin e ri), shkojm\u00eb n\u00eb secil\u00ebn nod\u00eb <b>t\u00eb vjetra<\/b> t\u00eb klasterit dhe ekzekutojm\u00eb komandat:<\/p>\n<pre><code class=\"bash\">rabbitmqctl stop_app\nrabbitmqctl reset<\/code><\/pre>\n<p>\nKlasteri \"e harroi\" p\u00ebr nodelat e vjetra: mund t\u00eb fshijm\u00eb RMQ-n\u00eb e vjet\u00ebr, duke e p\u00ebrfunduar k\u00ebshtu migrimin.<\/p>\n<p><i><b>Sh\u00ebnim<\/b>: N\u00ebse po p\u00ebrdorni RMQ me certifikata, at\u00ebher\u00eb principi \u00ebsht\u00eb n\u00eb fakt i nj\u00ebjt\u00eb \u2014 procesi i migrimit do t\u00eb realizohet sakt\u00ebsisht nj\u00ebsoj.<\/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 na nevojitet t\u00eb transferojm\u00eb RabbitMQ ose thjesht t\u00eb migriojm\u00eb n\u00eb nj\u00eb klaster t\u00eb ri.<\/p>\n<p>N\u00eb rastin ton\u00eb, v\u00ebshtir\u00ebsit\u00eb ndodh\u00ebn vet\u00ebm nj\u00eb her\u00eb, kur RMQ ishte shqyrtuar nga shum\u00eb vende, dhe ne nuk kishim mund\u00ebsi t\u00eb ndryshonim adres\u00ebn RMQ n\u00eb t\u00eb gjith\u00eb. At\u00ebher\u00eb ne e d\u00ebgjonim RMQ-n\u00eb e re n\u00eb t\u00eb nj\u00ebjtin em\u00ebr me etiketat e nj\u00ebjta, p\u00ebr t\u00eb r\u00ebn\u00eb n\u00ebn sh\u00ebrbimet dhe Ingress-\u00ebt ekzistues, dhe gjat\u00eb nisjes s\u00eb pod-it manipuluam etiketat me duar, duke i hequr ato fillimisht q\u00eb k\u00ebrkesat t\u00eb mos shkonin n\u00eb RMQ-n\u00eb bosh, dhe duke i shtuar p\u00ebrs\u00ebri pas sinkronizimit t\u00eb mesazheve.<\/p>\n<p>T\u00eb nj\u00ebjt\u00ebn strategji e kemi p\u00ebrdorur edhe n\u00eb p\u00ebrmir\u00ebsimin e RabbitMQ n\u00eb nj\u00eb version t\u00eb ri me konfigurim t\u00eb ndryshuar \u2014 gjith\u00e7ka funksionoi si\u00e7 pritej.<\/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 n\u00eb harduer 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 referatit)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/417509\/\">K8s k\u00ebshilla &amp; truket: Shpejtojm\u00eb bootstrap-in e bazave t\u00eb m\u00ebdha t\u00eb dh\u00ebnash<\/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.2 - 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\/sq\/blog\/administrirovanie\/besprostojnaya-migratsiya-rabbitmq-v-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\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.\" \/>\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\udd47Migrim pa probleme i RabbitMQ n\u00eb Kubernetes | ProHoster","description":"RabbitMQ \u2013 nj\u00eb broker i shkruar n\u00eb gjuh\u00ebn Erlang.","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.","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}]}}