{"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\/de\/blog\/administrirovanie\/besprostojnaya-migratsiya-rabbitmq-v-kubernetes","title":{"rendered":"Komplexe Migration von RabbitMQ in Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Komplexe Migration von RabbitMQ in Kubernetes\" src=\"\/wp-content\/uploads\/2019\/05\/32c491c8605e2488550efadbcb052320.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nRabbitMQ \u2013 ein auf Erlang basierender Nachrichtenbroker, der es erm\u00f6glicht, ein ausfallsicheres Cluster mit vollst\u00e4ndiger Datenreplikation \u00fcber mehrere Knoten zu organisieren, wobei jeder Knoten Lese- und Schreibanfragen bedienen kann. Mit einer Vielzahl von Kubernetes-Clustern im Produktionsbetrieb unterst\u00fctzen wir zahlreiche RabbitMQ-Installationen und stehen vor der Herausforderung, Daten von einem Cluster zu einem anderen ohne Ausfallzeiten zu migrieren.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Diese Operation war f\u00fcr uns in mindestens zwei F\u00e4llen notwendig:<\/p>\n<ol>\n<li> Die \u00dcbertragung von Daten aus einem RabbitMQ-Cluster, das sich nicht in Kubernetes befindet, in ein neues, bereits \u201ekubernetisiertes\u201c Cluster (d.h. das in K8s-Pods funktioniert).<\/li>\n<li> Die Migration von RabbitMQ innerhalb von Kubernetes von einem Namespace in einen anderen (z.B. wenn die Grenzen durch Namensr\u00e4ume getrennt sind, um Infrastruktur von einem Bereich in einen anderen zu \u00fcbertragen).<\/li>\n<\/ol>\n<p>\nDas in diesem Artikel vorgeschlagene Rezept richtet sich an Situationen (aber ist keineswegs darauf beschr\u00e4nkt), in denen ein altes RabbitMQ-Cluster (z.B. aus 3 Knoten) vorhanden ist, das entweder bereits in K8s ist oder auf alten Servern l\u00e4uft. Damit arbeitet eine Anwendung, die in Kubernetes gehostet wird (bereits dort oder in der Zukunft):<\/p>\n<p><img decoding=\"async\" alt=\"Komplexe Migration von RabbitMQ in Kubernetes\" src=\"\/wp-content\/uploads\/2019\/05\/5fba162c90bc441978429288c59300ef.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u2026 und wir stehen vor der Aufgabe, diese in ein neues Produktionsumfeld in Kubernetes zu migrieren.<\/p>\n<p>Zun\u00e4chst wird der allgemeine Ansatz zur Migration beschrieben, gefolgt von den technischen Details zur Umsetzung.<\/p>\n<h2>Migrationsalgorithmus<\/h2>\n<p>\nDer erste, vorbereitende Schritt vor irgendwelchen Ma\u00dfnahmen ist die \u00dcberpr\u00fcfung, dass in der alten RabbitMQ-Installation der Hochverf\u00fcgbarkeitsmodus aktiviert ist (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.rabbitmq.com\/ha.html\">HA<\/a><\/noindex>). Der Grund ist offensichtlich \u2013 wir wollen schlie\u00dflich keine Daten verlieren. Um diese \u00dcberpr\u00fcfung durchzuf\u00fchren, kann man das RabbitMQ-Admin-Panel aufrufen und im Reiter Admin \u2192 Policies \u00fcberpr\u00fcfen, ob der Wert eingestellt ist. <code>ha-mode: all<\/code>:<\/p>\n<p><img decoding=\"async\" alt=\"Komplexe Migration von RabbitMQ in Kubernetes\" src=\"\/wp-content\/uploads\/2019\/05\/2e37be2cd3685eb8cedfbc5949e5036f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer n\u00e4chste Schritt besteht darin, ein neues RabbitMQ-Cluster in K8s-Pods einzurichten (in unserem Fall zum Beispiel aus 3 Knoten, aber die Anzahl kann auch anders sein).<\/p>\n<p>Anschlie\u00dfend verbinden wir das alte und das neue RabbitMQ-Cluster zu einem einzigen Cluster (aus 6 Knoten):<\/p>\n<p><img decoding=\"async\" alt=\"Komplexe Migration von RabbitMQ in Kubernetes\" src=\"\/wp-content\/uploads\/2019\/05\/52204b814f0ba73a20c4854e990c4059.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer Prozess der Datensynchronisierung zwischen dem alten und dem neuen RabbitMQ-Cluster wird initiiert. Nachdem alle Daten zwischen allen Knoten im Cluster synchronisiert sind, k\u00f6nnen wir die Anwendung auf das neue Cluster umschalten:<\/p>\n<p><img decoding=\"async\" alt=\"Komplexe Migration von RabbitMQ in Kubernetes\" src=\"\/wp-content\/uploads\/2019\/05\/8bf19d4176e38b4679e96e0f1b8b57c1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNach diesen Vorg\u00e4ngen gen\u00fcgt es, die alten Knoten aus dem RabbitMQ-Cluster zu entfernen, und der Umzug kann als abgeschlossen betrachtet werden:<\/p>\n<p><img decoding=\"async\" alt=\"Komplexe Migration von RabbitMQ in Kubernetes\" src=\"\/wp-content\/uploads\/2019\/05\/bccc9b9fc8d6691d24195e9a97a0f88b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDieses Schema haben wir mehrfach in unserer Produktion angewendet. F\u00fcr unsere eigene Bequemlichkeit haben wir es jedoch im Rahmen eines spezialisierten Systems implementiert, das Standardkonfigurationen von RMQ auf vielen Kubernetes-Clustern verteilt. <i>(f\u00fcr diejenigen, die es interessiert: es geht um <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\">Addon-Operator<\/a><\/noindex>, \u00fcber die wir <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/449096\/\">vor kurzem haben wir berichtet<\/a><\/noindex>)<\/i>. Im Folgenden werden einzeln ausgew\u00e4hlte Anweisungen pr\u00e4sentiert, die jeder auf seinen Installationen anwenden kann, um die vorgeschlagene L\u00f6sung in der Praxis auszuprobieren.<\/p>\n<h2>Praktischer Versuch<\/h2>\n<p><\/p>\n<h3>Anforderungen<\/h3>\n<p>\nDie Voraussetzungen sind sehr einfach:<\/p>\n<ol>\n<li> Kubernetes-Cluster (minikube ist auch geeignet);<\/li>\n<li> RabbitMQ-Cluster (kann sowohl auf Bare Metal als auch als gew\u00f6hnlicher Cluster in Kubernetes aus dem offiziellen Helm-Chart bereitgestellt werden).<\/li>\n<\/ol>\n<p>\nF\u00fcr das nachfolgend beschriebene Beispiel habe ich RMQ in Kubernetes bereitgestellt und es \" <code>rmq-old<\/code>.<\/p>\n<h3>\" genannt.<\/h3>\n<p>\nStandausbereitung<\/p>\n<pre><code class=\"bash\">1. Wir laden das Helm-Chart herunter und bearbeiten es ein wenig:<\/code><\/pre>\n<p>\nhelm fetch --untar stable\/rabbitmq-ha <code>F\u00fcr die Bequemlichkeit setzen wir das Passwort,<\/code> ErlangCookie <code>und erstellen eine Policy<\/code>ha-all, um sicherzustellen, dass die Warteschlangen standardm\u00e4\u00dfig zwischen allen Knoten des RMQ-Clusters synchronisiert werden:<\/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. Wir installieren das Chart:<\/p>\n<pre><code class=\"bash\">helm install . --name rmq-old --namespace rmq-old<\/code><\/pre>\n<p>\n3. Wir gehen ins RabbitMQ-Adminpanel, erstellen eine neue Warteschlange und f\u00fcgen einige Nachrichten hinzu. Diese werden ben\u00f6tigt, um sicherzustellen, dass nach der Migration alle Daten erhalten geblieben sind und nichts verloren gegangen ist:<\/p>\n<p><img decoding=\"async\" alt=\"Komplexe Migration von RabbitMQ in Kubernetes\" src=\"\/wp-content\/uploads\/2019\/05\/b4b78ce622903dada396ced196c2ecce.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer Teststand ist bereit: Wir haben ein \"altes\" RabbitMQ mit den Daten, die migriert werden m\u00fcssen.<\/p>\n<h3>Migration des RabbitMQ-Clusters<\/h3>\n<p>\n1. Zun\u00e4chst lassen wir ein neues RabbitMQ im <b>Freund beraten<\/b> Namespace mit <b>denselben<\/b> <code>F\u00fcr die Bequemlichkeit setzen wir das Passwort,<\/code> Und Passwort f\u00fcr den Benutzer. Dazu f\u00fchren wir die oben beschriebenen Schritte aus und \u00e4ndern den Endbefehl zur Installation von RMQ auf den folgenden:<\/p>\n<pre><code class=\"bash\">helm install . --name rmq-new --namespace rmq-new<\/code><\/pre>\n<p>\n2. Jetzt m\u00fcssen wir das neue Cluster mit dem alten verbinden. Dazu gehen wir in jeden der Pods <b>neu<\/b> von RabbitMQ und f\u00fchren die folgenden Befehle aus:<\/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>\nIn der Variablen <code>OLD_RMQ<\/code> ist die Adresse eines der Knoten <b>des alten<\/b> RMQ-Clusters.<\/p>\n<p>Diese Befehle stoppen den aktuellen Knoten <b>neu<\/b> des RMQ-Clusters, f\u00fcgen ihn dem alten Cluster hinzu und starten ihn erneut.<\/p>\n<p>3. Das RMQ-Cluster mit 6 Knoten ist bereit:<\/p>\n<p><img decoding=\"async\" alt=\"Komplexe Migration von RabbitMQ in Kubernetes\" src=\"\/wp-content\/uploads\/2019\/05\/88f4655556c1146f7a6e54fd2fd798f4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs ist notwendig, zu warten, bis die Nachrichten zwischen allen Knoten synchronisiert sind. Es ist nicht schwer zu erraten, dass die Zeit f\u00fcr die Nachrichtensynchronisierung von der Hardwareleistung des Clusters abh\u00e4ngt und von der Anzahl der Nachrichten. In dem beschriebenen Szenario gibt es insgesamt 10 Nachrichten, daher wurden die Daten sofort synchronisiert, aber bei einer ausreichend hohen Anzahl von Nachrichten kann die Synchronisierung Stunden dauern.<\/p>\n<p>Also, der Synchronisierungsstatus:<\/p>\n<p><img decoding=\"async\" alt=\"Komplexe Migration von RabbitMQ in Kubernetes\" src=\"\/wp-content\/uploads\/2019\/05\/1185591d8d5478634f35b7433ca75bbc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHier <code>+5<\/code> bedeutet, dass die Nachrichten bereits <b>noch<\/b> auf 5 Knoten (au\u00dfer dem, der im Feld angegeben ist <code>Node<\/code>). Somit war die Synchronisation erfolgreich.<\/p>\n<p>4. Es bleibt nur, die Adresse RMQ in der Anwendung auf das neue Cluster umzuschalten (die spezifischen Schritte h\u00e4ngen hier von dem Tech-Stack ab, den Sie verwenden, und anderen Besonderheiten der Anwendung), danach k\u00f6nnen Sie sich von der alten verabschieden.<\/p>\n<p>F\u00fcr den letzten Schritt (d.h. das <b>nach<\/b> Umschalten der Anwendung auf das neue Cluster) gehen wir auf jeden Knoten <b>des alten<\/b> des Clusters und f\u00fchren die Befehle aus:<\/p>\n<pre><code class=\"bash\">rabbitmqctl stop_app\nrabbitmqctl reset<\/code><\/pre>\n<p>\nDer Cluster hat die alten Knoten \"vergessen\": der alte RMQ kann entfernt werden, damit der Umzug abgeschlossen ist.<\/p>\n<p><i><b>Hinweis<\/b>: Wenn Sie RMQ mit Zertifikaten verwenden, \u00e4ndert sich grundlegend nichts \u2014 der Umzug erfolgt genau so.<\/i><\/p>\n<h2>Das DBMS Tarantool ist ein attraktives, zukunftstr\u00e4chtiges Produkt zur Erstellung von hochbelasteten Anwendungen.<\/h2>\n<p>\nDas beschriebene Schema passt praktisch f\u00fcr alle F\u00e4lle, in denen wir RabbitMQ \u00fcbertragen oder einfach in ein neues Cluster umziehen m\u00fcssen.<\/p>\n<p>In unserem Fall gab es Schwierigkeiten nur einmal, als auf RMQ von vielen Stellen zugegriffen wurde und wir nicht die M\u00f6glichkeit hatten, \u00fcberall die RMQ-Adresse auf die neue zu \u00e4ndern. In diesem Fall starteten wir den neuen RMQ im gleichen Namensraum mit denselben Labels, damit er unter bestehenden Diensten und Ingresses erfasst wurde, und beim manuellen Starten des Pods manipulierten wir die Labels, indem wir sie zu Beginn entfernten, damit keine Anfragen an den leeren RMQ gesendet wurden, und f\u00fcgten sie nach der Synchronisierung der Nachrichten wieder hinzu.<\/p>\n<p>Die gleiche Strategie wandten wir bei der Aktualisierung von RabbitMQ auf eine neue Version mit ge\u00e4nderter Konfiguration an \u2013 alles funktionierte wie am Schn\u00fcrchen.<\/p>\n<h2>P.S.<\/h2>\n<p>\nAls logische Fortsetzung dieses Materials bereiten wir Artikel \u00fcber MongoDB (Migration von einem physischen Server nach Kubernetes) und MySQL (wie wir diese DB innerhalb von Kubernetes vorbereiten) vor. Sie werden in den kommenden Monaten ver\u00f6ffentlicht.<\/p>\n<h2>P.P.S.<\/h2>\n<p>\nLesen Sie auch in unserem Blog:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/431500\/\">Datenbanken und Kubernetes (\u00dcberblick und Video-Pr\u00e4sentation)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/417509\/\">K8s Tipps &amp; Tricks: Schnellstart gro\u00dfer Datenbanken<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Quelle: <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\/de\/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=\"de_DE\" \/>\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\/de\/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\udd47Einfache Migration von RabbitMQ in Kubernetes | ProHoster","description":"RabbitMQ ist ein Broker, der in der Sprache Erlang geschrieben ist.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/besprostojnaya-migratsiya-rabbitmq-v-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/33075","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=33075"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/33075\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/24827"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=33075"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=33075"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=33075"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}