{"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":"Herausfordernde Migration von RabbitMQ in Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Herausfordernde 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 in Erlang geschriebener Nachrichtendienst, der es erm\u00f6glicht, ein fehlertolerantes Cluster mit vollst\u00e4ndiger Datenreplikation \u00fcber mehrere Knoten zu organisieren, wobei jeder Knoten Lese- und Schreibanfragen bedienen kann. Mit zahlreichen Kubernetes-Clustern in der Produktionsnutzung unterst\u00fctzen wir eine Vielzahl von RabbitMQ-Installationen und standen vor der Notwendigkeit, Daten von einem Cluster in ein anderes zu migrieren, ohne dabei Ausfallzeiten zu verursachen.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Diese Operation war f\u00fcr uns mindestens in 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 \u2013 bereits \u201ekubernetisiertes\u201c (d.h. funktionierend in K8s-Pods) \u2013 Cluster.<\/li>\n<li> Die Migration von RabbitMQ innerhalb von Kubernetes von einem Namespace in einen anderen (zum Beispiel, wenn die Umgebungen durch Namensr\u00e4ume voneinander getrennt sind, um die Infrastruktur von einer Umgebung in eine andere zu verschieben).<\/li>\n<\/ol>\n<p>\nDas in diesem Artikel vorgeschlagene Rezept richtet sich an Situationen (ist aber nicht darauf beschr\u00e4nkt), in denen ein altes RabbitMQ-Cluster (zum Beispiel aus 3 Knoten) entweder bereits in K8s oder auf \u00e4lteren Servern betrieben wird. Es arbeitet mit einer Anwendung, die in Kubernetes platziert ist (bereits dort oder perspektivisch):<\/p>\n<p><img decoding=\"async\" alt=\"Herausfordernde 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, es in die neue Produktion in Kubernetes zu migrieren.<\/p>\n<p>Zuerst wird der allgemeine Ansatz f\u00fcr die Migration selbst beschrieben, gefolgt von den technischen Details zur Umsetzung.<\/p>\n<h2>Migrationsalgorithmus<\/h2>\n<p>\nDer erste, vorbereitende Schritt vor jeglichen 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 m\u00f6chten schlie\u00dflich keine Daten verlieren. Um diese \u00dcberpr\u00fcfung durchzuf\u00fchren, kann man das Admin-Panel von RabbitMQ aufrufen und im Tab Admin \u2192 Policies sicherstellen, dass der Wert gesetzt ist. <code>ha-mode: all<\/code>:<\/p>\n<p><img decoding=\"async\" alt=\"Herausfordernde 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, einen neuen RabbitMQ-Cluster in den Pods von Kubernetes zu starten (in unserem Fall beispielsweise bestehend aus 3 Knoten, aber ihre Anzahl kann auch variieren).<\/p>\n<p>Danach verbinden wir den alten und den neuen RabbitMQ-Cluster, um einen einzigen Cluster (bestehend aus 6 Knoten) zu erhalten:<\/p>\n<p><img decoding=\"async\" alt=\"Herausfordernde 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 Datensynchronisation zwischen dem alten und dem neuen RabbitMQ-Cluster wird initiiert. Nachdem alle Daten zwischen den Knoten im Cluster synchronisiert sind, k\u00f6nnen wir die Anwendung auf den neuen Cluster umschalten:<\/p>\n<p><img decoding=\"async\" alt=\"Herausfordernde 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 reicht es aus, die alten Knoten aus dem RabbitMQ-Cluster zu entfernen, und der Umzug kann als abgeschlossen betrachtet werden:<\/p>\n<p><img decoding=\"async\" alt=\"Herausfordernde 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 Produktionsumgebung verwendet. F\u00fcr unseren eigenen Komfort haben wir es jedoch in einem spezialisierten System implementiert, das Standardkonfigurationen von RMQ auf mehrere Kubernetes-Cluster verteilt. <i>(f\u00fcr die Neugierigen: es geht um <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\">addon-operator<\/a><\/noindex>, \u00fcber das wir <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/449096\/\">vor Kurzem haben wir erz\u00e4hlt<\/a><\/noindex>)<\/i>. Im Folgenden werden einige Anleitungen pr\u00e4sentiert, die jeder auf seinen Installationen anwenden kann, um die vorgeschlagene L\u00f6sung in der Praxis auszuprobieren.<\/p>\n<h2>Praktisch testen<\/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 bereitgestellt werden als auch als herk\u00f6mmlicher Cluster in Kubernetes aus dem offiziellen Helm-Chart erstellt werden).<\/li>\n<\/ol>\n<p>\nF\u00fcr das unten beschriebene Beispiel habe ich RMQ in Kubernetes bereitgestellt und es \" <code>rmq-old<\/code>.<\/p>\n<h3>\" genannt.<\/h3>\n<p>\nStandvorbereitung<\/p>\n<pre><code class=\"bash\">1. Laden Sie das Helm-Chart herunter und bearbeiten Sie es ein wenig:<\/code><\/pre>\n<p>\nhelm fetch --untar stable\/rabbitmq-ha <code>Zur Vereinfachung setzen wir ein Passwort,<\/code> ErlangCookie <code>und erstellen die Policy<\/code>, damit 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. Chart installieren:<\/p>\n<pre><code class=\"bash\">helm install . --name rmq-old --namespace rmq-old<\/code><\/pre>\n<p>\n3. Melden Sie sich im RabbitMQ-Adminbereich an, erstellen Sie eine neue Warteschlange und f\u00fcgen Sie einige Nachrichten hinzu. Diese werden ben\u00f6tigt, um nach der Migration sicherzustellen, dass alle Daten erhalten geblieben sind und nichts verloren ging:<\/p>\n<p><img decoding=\"async\" alt=\"Herausfordernde Migration von RabbitMQ in Kubernetes\" src=\"\/wp-content\/uploads\/2019\/05\/b4b78ce622903dada396ced196c2ecce.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDie Testumgebung ist bereit: Wir haben ein \u201ealtes\u201c RabbitMQ mit den Daten, die migriert werden m\u00fcssen.<\/p>\n<h3>Migration des RabbitMQ-Clusters<\/h3>\n<p>\n1. Zuerst setzen wir ein neues RabbitMQ auf in <b>einem Freund gesprochen<\/b> dem Namensraum mit <b>den gleichen<\/b> <code>Zur Vereinfachung setzen wir ein Passwort,<\/code> Benutzerdaten und Passwort. Dazu f\u00fchren wir die oben beschriebenen Schritte durch und \u00e4ndern den Installationsbefehl f\u00fcr RMQ wie folgt:<\/p>\n<pre><code class=\"bash\">helm install . --name rmq-new --namespace rmq-new<\/code><\/pre>\n<p>\n2. Jetzt ist es erforderlich, das neue Cluster mit dem alten zu verbinden. Gehen Sie dazu in jeden der Pods <b>des neuen<\/b> RabbitMQ und f\u00fchren Sie 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> befindet sich die Adresse eines der Knoten <b>des alten<\/b> RMQ-Clusters.<\/p>\n<p>Diese Befehle stoppen den aktuellen Knoten <b>des neuen<\/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=\"Herausfordernde 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 leicht zu erraten, dass die Zeit f\u00fcr die Nachrichtensynchronisation von der Hardware-Performance des Clusters und der Anzahl der Nachrichten abh\u00e4ngt. In dem beschriebenen Szenario gibt es nur 10 Nachrichten, sodass die Daten sofort synchronisiert wurden, aber bei einer ausreichend hohen Anzahl von Nachrichten kann die Synchronisation Stunden in Anspruch nehmen.<\/p>\n<p>Also, der Synchronisierungsstatus:<\/p>\n<p><img decoding=\"async\" alt=\"Herausfordernde 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>Knoten<\/code>). Somit war die Synchronisation erfolgreich.<\/p>\n<p>4. Es bleibt nur noch, die RMQ-Adresse in der Anwendung auf den neuen Cluster umzuschalten (konkrete Schritte h\u00e4ngen hier von Ihrem verwendeten Technologie-Stack und spezifischen Eigenschaften der Anwendung ab), danach k\u00f6nnen Sie sich vom alten verabschieden.<\/p>\n<p>F\u00fcr den letzten Schritt (d.h. das <b>nach<\/b> Umschalten der Anwendung auf den neuen 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 \u201evergessen\u201c: Sie k\u00f6nnen den alten RMQ l\u00f6schen, womit der Umzug abgeschlossen ist.<\/p>\n<p><i><b>Hinweis<\/b>: Wenn Sie RMQ mit Zertifikaten verwenden, bleibt alles prinzipiell unver\u00e4ndert \u2013 der Migrationsprozess erfolgt genau wie zuvor.<\/i><\/p>\n<h2>Fazit<\/h2>\n<p>\nDas beschriebene Schema eignet sich praktisch f\u00fcr alle Szenarien, in denen wir RabbitMQ umziehen oder einfach in ein neues Cluster wechseln m\u00fcssen.<\/p>\n<p>In unserem Fall gab es nur einmal Schwierigkeiten, als RMQ von vielen Stellen gleichzeitig angesprochen wurde, und wir nicht \u00fcberall die RMQ-Adresse auf die neue \u00e4ndern konnten. In diesem Fall haben wir RMQ im gleichen Namensraum mit denselben Labels gestartet, damit es unter die bestehenden Dienste und Ingresses fiel, und bei der manuellen Pod-Bereitstellung haben wir die Labels vor\u00fcbergehend entfernt, sodass keine Anfragen an das leere RMQ gingen, und sie nach der Synchronisierung der Nachrichten wieder hinzugef\u00fcgt.<\/p>\n<p>Die gleiche Strategie haben wir bei der Aktualisierung von RabbitMQ auf eine neue Version mit ge\u00e4nderter Konfiguration angewendet \u2013 alles lief einwandfrei.<\/p>\n<h2>P.S.<\/h2>\n<p>\nAls logische Fortsetzung dieses Materials bereiten wir Artikel \u00fcber MongoDB (Migration von einem physischen Server zu Kubernetes) und MySQL (wie wir dieses DBMS innerhalb von Kubernetes vorbereiten) vor. Diese werden in den n\u00e4chsten 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 des Vortrags)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/417509\/\">K8s Tipps &amp; Tricks: Beschleunigung des Bootstraps 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 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"RabbitMQ \u2013 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Erlang \u0431\u0440\u043e\u043a\u0435\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0441 \u043f\u043e\u043b\u043d\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0437\u043b\u043e\u0432, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0443\u0437\u0435\u043b \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c. \u0418\u043c\u0435\u044f \u0432 production-\u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 Kubernetes, \u043c\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0439 RabbitMQ \u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0431\u0435\u0437 \u043f\u0440\u043e\u0441\u0442\u043e\u044f. \u0414\u0430\u043d\u043d\u0430\u044f\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/besprostojnaya-migratsiya-rabbitmq-v-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"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 \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\/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\udd47Ausfallfreie Migration von RabbitMQ in Kubernetes | ProHoster","description":"RabbitMQ ist ein auf Erlang basierender Nachrichtenbroker, der eine ausfallsichere Cluster-Architektur mit vollst\u00e4ndiger Datenreplikation \u00fcber mehrere Knoten erm\u00f6glicht, wobei jeder Knoten Lese- und Schreibanfragen bedienen kann. Mit vielen in der Produktion laufenden Kubernetes-Clustern unterst\u00fctzen wir eine gro\u00dfe Anzahl an RabbitMQ-Installationen und sehen uns der Herausforderung gegen\u00fcber, Daten ohne Ausfallzeiten von einem Cluster in einen anderen zu migrieren. Diese","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 \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\/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"},"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}]}}