{"id":56387,"date":"2020-02-12T00:00:00","date_gmt":"2020-02-11T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/service-discovery-v-raspredelennyh-sistemah-na-primere-consul-aleksandr-sigachev"},"modified":"2020-02-18T14:04:39","modified_gmt":"2020-02-18T11:04:39","slug":"service-discovery-v-raspredelennyh-sistemah-na-primere-consul-aleksandr-sigachev","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/service-discovery-v-raspredelennyh-sistemah-na-primere-consul-aleksandr-sigachev","title":{"rendered":"Service Discovery in verteilten Systemen am Beispiel von Consul. Alexander Sigachev","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><strong>Ich lade Sie ein, sich mit der Transkription des Berichts von Alexander Sigachev \u00fcber Service Discovery in verteilten Systemen am Beispiel von Consul vertraut zu machen.<\/strong><\/p>\n<p><\/p>\n<p>Service Discovery wurde entwickelt, um ein neues Anwendung mit minimalen Kosten in unsere bestehende Umgebung einzuf\u00fcgen. Durch die Nutzung von Service Discovery k\u00f6nnen wir entweder einen Container in Form von Docker oder einen virtuellen Dienst maximal von der Umgebung trennen, in der er ausgef\u00fchrt wird. <\/p>\n<p>\n<center><div class=\"youtube-placeholder\" data-id=\"IYWsZ8HFrCw\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/IYWsZ8HFrCw\/hqdefault.jpg\" alt=\"Video abspielen\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Ich gr\u00fc\u00dfe alle! Ich bin Alexander Sigachev, arbeite bei der Firma Inventos. Heute m\u00f6chte ich Ihnen ein Konzept wie Service Discovery vorstellen. Wir betrachten Service Discovery am Beispiel von Consul.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Service Discovery in verteilten Systemen am Beispiel von Consul. Alexander Sigachev\" src=\"\/wp-content\/uploads\/2020\/02\/8078ef6ee7af4e52e977deed5f1f42ab.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Welche Probleme l\u00f6st Service Discovery? Service Discovery wurde entwickelt, um ein neues Anwendung mit minimalen Kosten in unsere bestehende Umgebung einzuf\u00fcgen. Durch die Nutzung von Service Discovery k\u00f6nnen wir entweder einen Container in Form von Docker oder einen virtuellen Dienst maximal von der Umgebung trennen, in der er ausgef\u00fchrt wird. <\/p>\n<p><\/p>\n<p>Wie sieht das aus? Am klassischen Beispiel im Web \u2013 es gibt ein Frontend, das die Benutzeranfrage entgegennimmt. Danach leitet es sie an das Backend weiter. In diesem Beispiel balanciert der Load-Balancer zwischen zwei Backends.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Service Discovery in verteilten Systemen am Beispiel von Consul. Alexander Sigachev\" src=\"\/wp-content\/uploads\/2020\/02\/10d23c4c51543161fc2034145776461b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hier sehen wir, dass wir eine dritte Instanz der Anwendung starten. Wenn die Anwendung gestartet wird, registriert sie sich bei Service Discovery. Service Discovery benachrichtigt den Load-Balancer. Der Load-Balancer \u00e4ndert automatisch seine Konfiguration, und das neue Backend wird bereits in Betrieb genommen. Auf diese Weise k\u00f6nnen Backends hinzugef\u00fcgt oder umgekehrt aus dem Betrieb ausgeschlossen werden.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Service Discovery in verteilten Systemen am Beispiel von Consul. Alexander Sigachev\" src=\"\/wp-content\/uploads\/2020\/02\/88a768894d79449ffb06fbbfa5cd32a8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Was kann man noch bequem mit Service Discovery tun? In Service Discovery k\u00f6nnen Konfigurationen f\u00fcr nginx, Zertifikate und eine Liste aktiver Backend-Server gespeichert werden.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Service Discovery in verteilten Systemen am Beispiel von Consul. Alexander Sigachev\" src=\"\/wp-content\/uploads\/2020\/02\/8ebfb5f1c8cf44999904159af9695da9.jpeg\" style=\"display:block;margin: 0 auto;\" \/>Au\u00dferdem erm\u00f6glicht Service Discovery die Erkennung von Ausf\u00e4llen und St\u00f6rungen. Welche m\u00f6glichen Schemen gibt es bei der Erkennung von St\u00f6rungen?<\/p>\n<p><\/p>\n<ul>\n<li>Diese Anwendung, die wir entwickelt haben, benachrichtigt Service Discovery selbst, dass sie weiterhin funktionsf\u00e4hig ist. <\/li>\n<li>Service Discovery fragt seinerseits die Anwendung \u00fcber die Verf\u00fcgbarkeit ab.<\/li>\n<li>Oder es wird ein externes Skript oder eine Anwendung verwendet, die unsere Anwendung auf ihre Verf\u00fcgbarkeit \u00fcberpr\u00fcft und Service Discovery benachrichtigt, dass alles in Ordnung ist und weiterarbeiten kann, oder umgekehrt, dass alles schlecht ist und diese Instanz der Anwendung aus der Lastverteilung ausgeschlossen werden muss.<\/li>\n<\/ul>\n<p><\/p>\n<p>Jedes der Schemas kann abh\u00e4ngig von der verwendeten Software angewendet werden. Wenn wir beispielsweise gerade ein neues Projekt entwickeln, k\u00f6nnen wir problemlos ein Schema implementieren, bei dem unsere Anwendung Service Discovery benachrichtigt. Alternativ k\u00f6nnen wir auch annehmen, dass Service Discovery die \u00dcberpr\u00fcfung durchf\u00fchrt.<\/p>\n<p><\/p>\n<p>Wenn die Anwendung jedoch von uns \u00fcbernommen wurde oder von einem Dritten entwickelt wurde, passt hier die dritte Option, bei der wir einen Handler schreiben, und dies automatisiert in unsere Arbeit eingef\u00fcgt wird.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Service Discovery in verteilten Systemen am Beispiel von Consul. Alexander Sigachev\" src=\"\/wp-content\/uploads\/2020\/02\/ce4c5b452d526058b552a65926b9de58.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Das ist eines der Beispiele. Der Load Balancer in Form von nginx wird neu gestartet. Das ist ein zus\u00e4tzliches Tool, das zusammen mit Consul bereitgestellt wird. Das nennt sich consul-template. Wir beschreiben eine Regel. Wir geben an, dass wir eine Vorlage verwenden (Template Engine von Golang). Bei Ereignissen, bei Benachrichtigungen \u00fcber \u00c4nderungen, wird es neu generiert, und Service Discovery erh\u00e4lt den Befehl \u201ereload\u201c. Ein einfaches Beispiel ist, dass nginx bei einem Ereignis neu konfiguriert und neu gestartet wird.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Service Discovery in verteilten Systemen am Beispiel von Consul. Alexander Sigachev\" src=\"\/wp-content\/uploads\/2020\/02\/d829f882a52c97420750893f78bacc18.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Was ist Consul?<\/p>\n<p><\/p>\n<ul>\n<li>\n<p>Zun\u00e4chst einmal ist es Service Discovery. <\/p>\n<p>\n<\/li>\n<li>\n<p>Es verf\u00fcgt \u00fcber einen Verf\u00fcgbarkeitspr\u00fcfungsmechanismus \u2013 Health Checking.<\/p>\n<p>\n<\/li>\n<li>\n<p>Au\u00dferdem verf\u00fcgt es \u00fcber einen KV Store.<\/p>\n<p>\n<\/li>\n<li>\n<p>Und es ist in der Lage, Multi-Datacenter zu unterst\u00fctzen.<\/p>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<p>Wozu kann all dies verwendet werden? Im KV Store k\u00f6nnen wir Konfigurationsbeispiele speichern. Mit Health Checking k\u00f6nnen wir lokale Dienste \u00fcberpr\u00fcfen und Benachrichtigungen senden. Multi-Datacenter wird verwendet, um eine Karte von Diensten zu erstellen. Zum Beispiel hat Amazon mehrere Zonen und leitet den Verkehr optimal um, um \u00fcberfl\u00fcssige Anfragen zwischen den Rechenzentren zu vermeiden, die separat vom lokalen Verkehr abgerechnet werden und dementsprechend k\u00fcrzere Verz\u00f6gerungen aufweisen. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Service Discovery in verteilten Systemen am Beispiel von Consul. Alexander Sigachev\" src=\"\/wp-content\/uploads\/2020\/02\/7594fcb0dfd05193d95214d9694c39e8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Lassen Sie uns ein wenig mit den Begriffen vertrautmachen, die in Consul verwendet werden. <\/p>\n<p><\/p>\n<ul>\n<li>Consul ist ein Dienst, der in Go geschrieben wurde. Ein Vorteil von Programmen in Go ist die 1-Binary-Datei, die Sie einfach herunterladen. Sie k\u00f6nnen von jedem Ort starten, und es gibt keine Abh\u00e4ngigkeiten. <\/li>\n<li>Weiterhin k\u00f6nnen wir diesen Dienst mit Schl\u00fcsseln entweder im Client- oder im Servermodus starten. <\/li>\n<li>Au\u00dferdem erlaubt das Attribut \u201edatacenter\u201c das Setzen eines Flags, zu welchem Rechenzentrum dieser Server geh\u00f6rt. <\/li>\n<li>Konsens basiert auf dem Raft-Protokoll. Wer Interesse hat, kann mehr dar\u00fcber auf der Consul-Website nachlesen. Es handelt sich um ein Protokoll, das es erm\u00f6glicht, einen F\u00fchrer zu bestimmen und festzustellen, welche Daten als g\u00fcltig und verf\u00fcgbar gelten.<\/li>\n<li>Gossip \u2013 ein Protokoll, das die Interaktion zwischen Knoten erm\u00f6glicht. Dieses System ist dezentralisiert. Innerhalb eines Rechenzentrums kommunizieren alle Knoten mit ihren Nachbarn. Entsprechend wird die jeweils aktuelle Information untereinander ausgetauscht. Man k\u00f6nnte sagen, es sind Klatschgeschichten zwischen Nachbarn. <\/li>\n<li>LAN Gossip \u2013 lokaler Datenaustausch zwischen Nachbarn innerhalb eines Rechenzentrums. <\/li>\n<li>WAN Gossip \u2013 wird verwendet, wenn wir Informationen zwischen zwei Rechenzentren synchronisieren m\u00fcssen. Die Informationen werden zwischen Knoten ausgetauscht, die als Server markiert sind. <\/li>\n<li>RPC \u2013 erm\u00f6glicht es, Anfragen \u00fcber den Client an den Server zu senden. <\/li>\n<\/ul>\n<p><\/p>\n<p>Beschreibung von RPC. Angenommen, auf einer virtuellen Maschine oder einem physischen Server l\u00e4uft Consul als Client. Wir greifen lokal darauf zu. Der lokale Client fragt dann Informationen vom Server an und synchronisiert sich. Je nach Einstellung k\u00f6nnen die Informationen entweder aus dem lokalen Cache bereitgestellt oder mit dem F\u00fchrenden, dem Master-Server, synchronisiert werden. <\/p>\n<p><\/p>\n<p>Diese beiden Ans\u00e4tze haben sowohl Vor- als auch Nachteile. Wenn wir mit dem lokalen Cache arbeiten, geht es schnell. Arbeiten wir jedoch mit Daten, die auf dem Server gespeichert sind, dauert es l\u00e4nger, daf\u00fcr erhalten wir aktuellere Informationen.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Service Discovery in verteilten Systemen am Beispiel von Consul. Alexander Sigachev\" src=\"\/wp-content\/uploads\/2020\/02\/6ab034093708c0b1739af21015e50742.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Grafisch dargestellt zeigt sich folgendes Bild der Seite. Wir sehen, dass drei Master aktiv sind. Einer ist mit einem Stern als F\u00fchrer gekennzeichnet. In diesem Beispiel gibt es drei Clients, die lokal Informationen \u00fcber UDP\/TCP austauschen. Die Informationen zwischen den Rechenzentren werden zwischen den Servern \u00fcbertragen. Hier interagieren die Clients lokal miteinander. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Service Discovery in verteilten Systemen am Beispiel von Consul. Alexander Sigachev\" src=\"\/wp-content\/uploads\/2020\/02\/24a8f749195447c54e4405ad0be5728e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Welche API bietet Consul? Um Informationen zu erhalten, gibt es zwei Arten von APIs bei Consul.<\/p>\n<p><\/p>\n<p>Das DNS API. Standardm\u00e4\u00dfig wird Consul auf Port 8600 gestartet. Wir k\u00f6nnen die Anfrage-Proxys einrichten und \u00fcber lokales DNS zug\u00e4nglich machen. Wir k\u00f6nnen eine Anfrage \u00fcber die Domain starten und erhalten als Antwort die Informationen zur IP-Adresse.<\/p>\n<p><\/p>\n<p>HTTP API \u2013 alternativ k\u00f6nnen wir lokal auf Port 8500 Informationen \u00fcber einen bestimmten Dienst anfordern und erhalten eine JSON-Antwort, welche IP der Server hat, welcher Host genutzt wird und welcher Port registriert ist. Zus\u00e4tzliche Informationen k\u00f6nnen \u00fcber ein Token \u00fcbermittelt werden.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Service Discovery in verteilten Systemen am Beispiel von Consul. Alexander Sigachev\" src=\"\/wp-content\/uploads\/2020\/02\/6af7cc95a392c5d2fe278131245b8f5d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Was ben\u00f6tigt man, um Consul zu starten?<\/p>\n<p><\/p>\n<p>Im ersten Modus geben wir im Entwicklermodus das Flag an, dass dies der Entwicklermodus ist. Der Agent startet als Server und f\u00fchrt die gesamte Funktionalit\u00e4t bereits selbstst\u00e4ndig auf einer Maschine aus. Praktisch, schnell und ohne dass f\u00fcr den ersten Start zus\u00e4tzliche Einstellungen erforderlich sind.<\/p>\n<p><\/p>\n<p>Der zweite Modus ist der Start im Produktionsmodus. Hier wird der Start etwas komplizierter. Wenn wir keine Version des Konsuls haben, m\u00fcssen wir die erste Maschine \u00fcber das Bootstrap einrichten, d. h. diese Maschine \u00fcbernimmt die Aufgaben des Leaders. Wir heben sie an, dann heben wir eine zweite Serverinstanz an und \u00fcbermitteln ihr die Informationen, wo sich unser Master befindet. Dann starten wir die dritte. Nachdem wir drei Maschinen hochgefahren haben, starten wir die erste Maschine aus dem gestarteten Bootstrap im normalen Modus neu. Die Daten werden synchronisiert, und der anf\u00e4ngliche Cluster ist bereits bereit. <\/p>\n<p><\/p>\n<p>Es wird empfohlen, zwischen drei und sieben Instanzen im Servermodus zu betreiben. Das liegt daran, dass die Zeit f\u00fcr die Synchronisation von Informationen zwischen den Servern steigt, wenn deren Anzahl w\u00e4chst. Die Anzahl der Knoten sollte ungerade sein, um ein Quorum zu gew\u00e4hrleisten. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Service Discovery in verteilten Systemen am Beispiel von Consul. Alexander Sigachev\" src=\"\/wp-content\/uploads\/2020\/02\/6d0a230bd31980d78e73041cbac3496f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Wie werden die Health Checks sichergestellt? Im Konfigurationsverzeichnis f\u00fcr Consul schreiben wir eine \u00dcberpr\u00fcfungsregel im JSON-Format. Die erste Variante ist die Verf\u00fcgbarkeit der Domain google.com in diesem Beispiel. Wir geben an, dass alle 30 Sekunden diese \u00dcberpr\u00fcfung durchgef\u00fchrt werden soll. Auf diese Weise \u00fcberpr\u00fcfen wir, ob unser Knoten Zugang zum externen Netzwerk hat.<\/p>\n<p><\/p>\n<p>Die zweite Variante ist die Selbstpr\u00fcfung. Wir verwenden curl, um localhost \u00fcber den angegebenen Port alle 10 Sekunden anzusprechen. <\/p>\n<p><\/p>\n<p>Diese \u00dcberpr\u00fcfungen werden summiert und gehen in die Service Discovery ein. Basierend auf der Verf\u00fcgbarkeit werden diese Knoten entweder ausgeschlossen oder erscheinen in der Liste der verf\u00fcgbaren und korrekt funktionierenden Maschinen. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Service Discovery in verteilten Systemen am Beispiel von Consul. Alexander Sigachev\" src=\"\/wp-content\/uploads\/2020\/02\/551d98ded7111f48afd0a6406b83cba0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Au\u00dferdem bietet Consul eine Benutzeroberfl\u00e4che, die mit einem zus\u00e4tzlichen Flag gestartet wird und auf der Maschine verf\u00fcgbar ist. Dies erm\u00f6glicht es, Informationen einzusehen und einige \u00c4nderungen vorzunehmen. <\/p>\n<p><\/p>\n<p>In diesem Beispiel ist der Tab \"Service\" ge\u00f6ffnet. Es wird angezeigt, dass drei Dienste laufen, einer davon ist Consul. Die Anzahl der durchgef\u00fchrten Pr\u00fcfungen wird angezeigt. Au\u00dferdem gibt es drei Rechenzentren, in denen sich die Maschinen befinden.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Service Discovery in verteilten Systemen am Beispiel von Consul. Alexander Sigachev\" src=\"\/wp-content\/uploads\/2020\/02\/cd684146191a7b262df76d1b88f7df7c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dies ist ein Beispiel f\u00fcr die Registerkarte \u201eNodes\u201c. Wir sehen, dass sie zusammengesetzte Namen mit den Rechenzentren enthalten. Hier wird auch angezeigt, welche Dienste gestartet sind, d. h. wir sehen, dass keine Tags zugewiesen sind. In diesen zus\u00e4tzlichen Tags k\u00f6nnen Sie Informationen angeben, die der Entwickler zur Angabe zus\u00e4tzlicher Parameter verwenden kann. <\/p>\n<p><\/p>\n<p>Es ist auch m\u00f6glich, Informationen \u00fcber den Status der Festplatten und die durchschnittliche Auslastung an Consul zu \u00fcbermitteln.<\/p>\n<p><\/p>\n<p>Fragen<\/p>\n<p><\/p>\n<p>Frage: Wir haben einen Docker-Container, wie k\u00f6nnen wir ihn mit Consul verwenden?<\/p>\n<p><\/p>\n<p>Antwort: F\u00fcr den Docker-Container gibt es mehrere Ans\u00e4tze. Einer der g\u00e4ngigsten besteht darin, einen externen Docker-Container zu verwenden, der f\u00fcr die Registrierung verantwortlich ist. Beim Start wird ihm der Docker-Socket \u00fcbergeben. Alle Ereignisse der Registrierung und Deregistrierung des Containers werden in Consul aufgezeichnet.<\/p>\n<p><\/p>\n<p>Frage: Das hei\u00dft, Consul startet selbst den Docker-Container?<\/p>\n<p><\/p>\n<p>Antwort: Nein. Wir starten den Docker-Container. Und bei der Konfiguration geben wir an \u2013 h\u00f6re auf diesen Socket. Das ist ungef\u00e4hr so, wie es bei einem Zertifikat funktioniert, wenn wir Informationen \u00fcbergeben, wo und was wir haben. <\/p>\n<p><\/p>\n<p>Frage: Das bedeutet, dass innerhalb des Docker-Containers, den wir mit Service Discovery verbinden m\u00f6chten, eine Logik vorhanden sein sollte, die in der Lage ist, Daten an Consul zu \u00fcbermitteln?<\/p>\n<p><\/p>\n<p>Antwort: Nicht ganz. Wenn er startet, \u00fcbergeben wir \u00fcber die Umgebungsvariablen die Variablen. Zum Beispiel den Dienstnamen, den Dienstport. Der Registrierungsdienst h\u00f6rt auf diese Informationen und tr\u00e4gt sie in Consul ein.<\/p>\n<p><\/p>\n<p>Frage: Ich habe noch eine Frage zur Benutzeroberfl\u00e4che. Wir haben die Benutzeroberfl\u00e4che beispielsweise auf einem Produktionsserver bereitgestellt. Wie steht es um die Sicherheit? Wo werden die Daten gespeichert? Kann man Daten irgendwie sammeln?<\/p>\n<p><\/p>\n<p>Antwort: In der Benutzeroberfl\u00e4che stammen die Daten aus der Datenbank und aus der Service Discovery. Die Passw\u00f6rter setzen wir in den Einstellungen selbst. <\/p>\n<p><\/p>\n<p>Frage: Kann man das im Internet ver\u00f6ffentlichen?<\/p>\n<p><\/p>\n<p>Antwort: Standardm\u00e4\u00dfig startet Consul auf localhost. Um es im Internet zu ver\u00f6ffentlichen, muss ein Proxy eingerichtet werden. F\u00fcr die Sicherheitsregeln sind wir selbst verantwortlich.<\/p>\n<p><\/p>\n<p>Frage: Liefert es historische Daten standardm\u00e4\u00dfig? Es w\u00e4re interessant, Statistiken zu den Health Checks zu sehen. Man k\u00f6nnte Probleme diagnostizieren, wenn der Server h\u00e4ufig ausf\u00e4llt.<\/p>\n<p><\/p>\n<p>Antwort: Ich bin mir nicht sicher, ob dort Einzelheiten zu den Pr\u00fcfvorg\u00e4ngen vorhanden sind. <\/p>\n<p><\/p>\n<p>Frage: Es ist nicht so wichtig, wie der aktuelle Zustand ist, sondern wie die Dynamik ist.<\/p>\n<p><\/p>\n<p>Antwort: F\u00fcr die Analyse \u2013 ja.<\/p>\n<p><\/p>\n<p>Frage: Sollte man Service Discovery f\u00fcr Docker nicht besser mit Consul verwenden?<\/p>\n<p><\/p>\n<p>Antwort: Ich w\u00fcrde nicht empfehlen, es zu verwenden. Ziel des Berichts ist es, das Konzept vorzustellen. Historisch gesehen hat es, meiner Meinung nach, seinen Weg bis zur ersten Version zur\u00fcckgelegt. Jetzt gibt es bereits vollst\u00e4ndigere L\u00f6sungen, wie Kubernetes, das all dies unter der Haube hat. Im Bereich der Kubernetes-Service-Discovery steht es hinter Etcd zur\u00fcck. Aber ich bin nicht so vertraut damit wie mit Consul. Daher habe ich mich entschieden, die Service Discovery am Beispiel von Consul zu erl\u00e4utern.<\/p>\n<p><\/p>\n<p>Frage: Verz\u00f6gert das Schema mit dem Leader-Server den gesamten Start des Anwendungsprogramms? Und wie bestimmt Consul einen neuen Leader, wenn dieser ausf\u00e4llt?<\/p>\n<p><\/p>\n<p>Antwort: Sie haben ein ganzes Protokoll beschrieben. Wenn es interessant ist, kann man es nachlesen.<\/p>\n<p><\/p>\n<p>Frage: Agiert Consul als vollwertiger Server und fliegen alle Anfragen \u00fcber ihn?<\/p>\n<p><\/p>\n<p>Antwort: Er fungiert nicht als vollwertiger Server, sondern \u00fcbernimmt einen bestimmten Bereich. Dieser endet in der Regel mit service.consul. Und weiter gehen wir schon nach Logik. Wir verwenden in der Produktion keine Domainnamen, sondern nutzen die interne Infrastruktur, die normalerweise hinter dem Cache des Servers versteckt ist, wenn wir \u00fcber DNS arbeiten.<\/p>\n<p><\/p>\n<p>Frage: D. h., wenn wir auf die Datenbank zugreifen wollen, m\u00fcssen wir auf jeden Fall Consul anfragen, um zuerst diese Datenbank zu finden, richtig?<\/p>\n<p><\/p>\n<p>Antwort: Ja. Wenn wir \u00fcber DNS arbeiten, funktioniert das wie ohne Consul, wenn wir DNS-Namen verwenden. Moderne Anwendungen fragen normalerweise nicht bei jedem Aufruf den Domainnamen an, weil wir die Verbindung hergestellt haben; alles funktioniert und in naher Zukunft nutzen wir das praktisch nicht mehr. Wenn die Verbindung unterbrochen wird, dann \u2013 ja, fragen wir wieder, wo sich unsere Datenbank befindet und gehen zu ihr.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/ru_hashicorp\">Chat zu den Produkten von Hashicorp<\/a><\/noindex> \u2014 Benutzer-Chat f\u00fcr Hashicorp: Consul, Nomad, Terraform<\/p>\n<p><\/p>\n<p>P.S. Zum Thema Health Checks. In Consul wie auch in Kubernetes wird dasselbe System zur \u00dcberpr\u00fcfung des Status der Serviceverf\u00fcgbarkeit auf Grundlage des Statuscodes verwendet.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">200 OK f\u00fcr gesund\n503 Dienst nicht verf\u00fcgbar f\u00fcr ungesund<\/code><\/pre>\n<p><\/p>\n<p>Quellen:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.consul.io\/docs\/agent\/checks.html\">https:\/\/www.consul.io\/docs\/agent\/checks.html<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/configure-pod-container\/configure-liveness-readiness-startup-probes\/\">https:\/\/kubernetes.io\/docs\/tasks\/configure-pod-container\/configure-liveness-readiness-startup-probes\/<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/thoslin.github.io\/microservice-health-check-in-kubernetes\/\">https:\/\/thoslin.github.io\/microservice-health-check-in-kubernetes\/<\/a><\/noindex><\/p>\n<p>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/487706\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440\u0430 \u0421\u0438\u0433\u0430\u0447\u0435\u0432\u0430 Service Discovery \u0432 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Consul. Service Discovery \u0441\u043e\u0437\u0434\u0430\u043d \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0437\u0430\u0442\u0440\u0430\u0442\u0430\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u043d\u0430\u0448\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Service Discovery, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u043b\u0438\u0431\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0432 \u0432\u0438\u0434\u0435 \u0434\u043e\u043a\u0435\u0440\u0430, \u043b\u0438\u0431\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u043e\u0442 \u0442\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d \u0437\u0430\u043f\u0443\u0449\u0435\u043d. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-56387","post","type-post","status-publish","format-standard","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=\"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440\u0430 \u0421\u0438\u0433\u0430\u0447\u0435\u0432\u0430 Service Discovery \u0432 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Consul. Service Discovery \u0441\u043e\u0437\u0434\u0430\u043d \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438.\" \/>\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\/service-discovery-v-raspredelennyh-sistemah-na-primere-consul-aleksandr-sigachev\" \/>\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\udd47Service Discovery \u0432 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Consul. \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440 \u0421\u0438\u0433\u0430\u0447\u0435\u0432 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440\u0430 \u0421\u0438\u0433\u0430\u0447\u0435\u0432\u0430 Service Discovery \u0432 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Consul. Service Discovery \u0441\u043e\u0437\u0434\u0430\u043d \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/service-discovery-v-raspredelennyh-sistemah-na-primere-consul-aleksandr-sigachev\" \/>\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=\"2020-02-11T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:04:39+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\udd47Service Discovery in verteilten Systemen am Beispiel von Consul. Alexandr Sigachev | ProHoster","description":"Ich empfehle, sich mit der Erl\u00e4uterung von Alexandr Sigachev \u00fcber Service Discovery in verteilten Systemen am Beispiel von Consul vertraut zu machen. Service Discovery wurde geschaffen, um mit minimalen.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/service-discovery-v-raspredelennyh-sistemah-na-primere-consul-aleksandr-sigachev","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\udd47Service Discovery \u0432 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Consul. \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440 \u0421\u0438\u0433\u0430\u0447\u0435\u0432 | ProHoster","og:description":"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440\u0430 \u0421\u0438\u0433\u0430\u0447\u0435\u0432\u0430 Service Discovery \u0432 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Consul. Service Discovery \u0441\u043e\u0437\u0434\u0430\u043d \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438.","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/service-discovery-v-raspredelennyh-sistemah-na-primere-consul-aleksandr-sigachev","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":"2020-02-11T21:00:00+00:00","article:modified_time":"2020-02-18T11:04:39+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"56387","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:25:40","updated":"2022-10-01 05:49:52","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\/56387","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=56387"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/56387\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=56387"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=56387"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=56387"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}