Geltendmachung von etcd 3.4

Behauptung von etcd 3.4Authors: Gyuho Lee (Amazon Web Companies, @gyuho), Jingyi Hu (Google, @jingyih) etcd 3.4 zeichnen sich durch Zuverlässigkeit, Leistung und Benutzerfreundlichkeit aus Verbesserungen des Speicher-Backends und des Client-Balancers. Machen Sie bitte CHANGELOG mit fleischigen Listen von Anpassungen durch. Besserer Speicher-Backendetcd v3.4 beinhaltet eine Konsequenz von Leistungsverbesserungen für Kubernetes-Workloads in beträchtlichem Umfang. Insbesondere etcd erfahrene Leistungselemente mit einer beträchtlichen Auswahl von gleichzeitigen Lesetransaktionen sogar wenn es selten zu Schreibvorgängen kommt (z. B. “Unterschiedliche Nur-Lese-Fragen von … haben zu lange gedauert, um sie zu erhalten”). Zuvor blockierte die Speicher-Backend-Commit-Operation für ausstehende Schreibvorgänge eingehende Lesetransaktionen, selbst wenn kein ausstehender Schreibvorgang stattgefunden hatte. Jetzt blockiert das Commit keine Lesevorgänge, wodurch die Leistung von Lesetransaktionen mit längeren Verarbeitungszeiten verbessert wird. Wir haben zusätzliche Backend-Lesetransaktionen erstellt, die vollständig gleichzeitig ablaufen. Zuvor blockierten andauernde Lesetransaktionen Schreibvorgänge und anstehende Lesevorgänge. Durch dieses Ersetzen wird der Schreibdurchsatz um 70% erhöht und die P 90 – Schreiblatenz um 97% verringert. in Gegenwart von längeren Lesevorgängen. Wir haben auch einen Kubernetes 5000 – Knotenskalierbarkeitstest auf GCE mit diesem Ersatz durchgeführt und die gleichen Verbesserungen festgestellt. Lassen Sie uns gleich zu Beginn des Tests ankündigen, dass es eine Reihe von LIST-Pods gibt, deren P 99 -Latenz durch 5000 verringert wird. . 4%. Diese nicht blockierende Lesetransaktion ist jetzt veraltet für die Komprimierung, was zusammen mit der verringerten Batchdimension für die Komprimierung die P 99 Server-Latenz im Verlauf der Komprimierung verringert. Es wurden weitere Verbesserungen vorgenommen leasing lagerung. Wir haben die Lease Expire / Revoke-Leistung verbessert, indem wir Lease-Objekte effektiver gespeichert haben, und haben dafür gesorgt, dass der Lease-Awareness-Betrieb mit dem aktuellen Lease Grant / Revoke-Betrieb nicht blockiert wird. Und mit etcd v3.4 wird der Lease-Checkpoint als experimentelles Feature eingeführt, um die verbleibende Zeit bis zum Erreichen der Lebenswerte im Konsens beizubehalten. Dies stellt sicher, dass kurzlebige Leasingobjekte nach der Wahl der Führung nicht automatisch verlängert werden. Auf diese Weise wird auch verhindert, dass sich Lease-Objekte häufen, wenn die Nutzungsdauer relativ hoch ist (z. B. 1 Stunde TTL unter den Bedingungen, die im Kubernetes-Übungsfall nicht abgelaufen sind). Verbessertes Raft-Vote-Casting Processetcd-Server implementiert den Raft-Konsensus-Algorithmus für die Dateireplikation. Raft ist ein Vorreiter-basiertes Protokoll. Recordsdata werden vom Leader zum Follower repliziert. Ein Anhänger leitet Vorschläge an einen Spitzenreiter weiter, und der Anführer entscheidet, was er festlegt oder jetzt nicht. Leader behält seinen Status bei und repliziert einen Eintrag, sobald dies vom Quorum des Clusters vereinbart wurde. Die Cluster-Leute wählen einen einzelnen Führer, und alle völlig unterschiedlichen Leute erweisen sich als Anhänger. Der gewählte Anführer sendet seinen Anhängern regelmäßig Herzschläge, um mit seiner Führung zu kämpfen, und erwartet, dass die Antworten jedes Anhängers mit der Musik seines Fortschritts konkurrieren. In seiner einfachsten Zusammensetzung senkt ein Floßanführer den Gesamtentwurf auf einen Anhänger, wenn er ihn erhält eine Nachricht mit besseren Sätzen, ohne dass zusätzliche Cluster-Riesen richtig getestet werden. Diese Gewohnheiten können sich auf die endgültige Verfügbarkeit des Clusters auswirken. Bei einem Ereignis fällt ein schuppiges (oder wieder beitretendes) Mitglied ein und aus und beginnt mit Marketing und Marketingkampagne. Dieses Mitglied erhält schließlich bessere Phrasen, ignoriert alle eingehenden Nachrichten mit reduzierten Phrasen und sendet Nachrichten mit besseren Phrasen. Wenn der Anführer diese Nachricht mit einem besseren Begriff erhält, wird die Hilfe zum Follower zurückgesetzt. Dies wird störender, wenn eine Netzwerkpartition vorhanden ist. Zu jeder Zeit, wenn der partitionierte Knoten seine Konnektivität wiedererlangt, wird er vermutlich den Ort der Wiederwahl des Anführers verlassen. Um diesem Problem zu begegnen, führt etcd Raft einen brandneuen Node-Assert-Pre-Candidate mit der Pre-Vote-Funktion ein. Der Pre-Kandidat fragt zunächst ganz andere Server, ob es aktuell genug ist, um Stimmen zu erhalten. Am besten, wenn es Stimmen von der Mehrheit bekommt, erhöht es seine Amtszeit und beginnt eine Wahl. Dieser zusätzliche Abschnitt verbessert die Robustheit bei der Wahl von Führungspersönlichkeiten. Und hilft dem Leader dabei, so lange wie möglich stabil zu bleiben, da er seine Konnektivität mit dem Quorum seiner Kollegen aufrechterhält. Ebenso kann die Verfügbarkeit von usw. möglicherweise beeinträchtigt werden, wenn ein neu startender Knoten nicht rechtzeitig die Herzschläge des Leaders erhält (z. B. aufgrund eines losen Netzwerks). , was die Führerwahl auslöst. Zuvor wurden bei der Zustellung des Servers schnelle Auswahlhäkchen gesetzt, mit dem Ziel, dass ein Häkchen für die Führerwahl übrig bleibt. Lassen Sie uns ankündigen, dass der Follower, wenn das Zeitlimit für die Wahlen 1-2 Tage beträgt, nur 100 ms vor Beginn einer Wahl auf Kontakte mit Führungskräften wartet. Dies beschleunigt die anfängliche Serverauslieferung, da jetzt keine Zeitüberschreitungen für die Wahlen anstehen müssen (z. B. wird die Wahl in 100 ms statt 1-2d veranlasst). Das Vorziehen von Wahlkreuzen ist auch für falsche Bereitstellungen von Rechenzentren mit besseren Zeitlimits für Wahlen erforderlich. Auf der anderen Seite ist das Angebot unter vielen Umständen überhöht als die Träne der ersten Führerwahl. Um die Verfügbarkeit mit wiederverbindenden Knoten definitiv zu erhöhen, passt etcd jetzt die Wahl-Ticks mit mehr als einem Tick an, so dass der Anführer mehr Zeit hat, einen störenden Neustart zu beenden. Casting-Mitglied ohne Stimme, AnfängerDas Thema bei der Neukonfiguration der Mitgliedschaft ist, dass es endlos endet Anpassungen der Quorumdimensionen, bei denen wahrscheinlich keine Cluster verfügbar sind. Auch wenn es das Quorum nicht ändert, haben Cluster mit Mitgliederaustausch üblicherweise die Tendenz, völlig andere zugrunde liegende Probleme zu lösen. Um die Zuverlässigkeit und das Selbstvertrauen bei der Neukonfiguration zu verbessern, wird in etcd 3.4 open ein brandneues Feature vorgestellt. Ein brandneues etcd-Mitglied tritt dem Cluster ohne erste Dateien bei und fragt nach allen historischen Updates vom Leader, bis es den aktuellen Stand erreicht hat Führer Protokolle. Dies bedeutet, dass das Netzwerk des Anführers mit größerer Wahrscheinlichkeit überlastet ist und die Herzschläge des Anführers für die Anhänger blockiert oder auslöst. Unter solchen Umständen kann ein Follower möglicherweise eine Zeitüberschreitung bei der Wahl seiner Fähigkeiten verzeichnen und eine markenunabhängige Führerwahl durchführen. Das heißt, ein Cluster mit einem markenunabhängigen Mitglied ist mit größerer Wahrscheinlichkeit führend. Sowohl die Wahl des Anführers als auch die anschließende Weitergabe der Aktualisierung an das eindeutige Mitglied können dazu führen, dass Klassen von Clustern nicht mehr verfügbar sind (Spy Resolve 1). Der schlimmste Fall ist eine falsch konfigurierte Mitgliedschaft. Die Neukonfiguration der Mitgliedschaft in etcd erfolgt in zwei Schritten: etcdctl member add with take in yarn URLs und das Starten einer eindeutigen Marke etcd, um die Hälfte des Clusters zu sein. Das heißt, das Mitglied add portray wird verwendet, unabhängig davon, ob die in Garn angegebene URL ungültig ist oder nicht. Wenn in Schritt 1 die ungültigen URLs angewendet und die Quorumdimension ersetzt werden sollen, kann es vorkommen, dass der Cluster das Quorum bereits verliert, bis der eindeutige Knoten eine Verbindung herstellt. Da der Knoten mit ungültigen URLs möglicherweise nicht mehr online ist und es keinen Anführer gibt, ist es unvorstellbar, die Ersetzung der Mitgliedschaft rückgängig zu machen (spy Resolve 2). Dies wird komplexer, wenn partitionierte Knoten vorhanden sind (spy the originate doc for more) .Um mit solchen Fehlermodi fertig zu werden, führt etcd eine brandneue Node-Assertion “Learner” ein, die dem Cluster als nicht stimmberechtigtes Mitglied beitritt, bis sie die Protokolle des Anführers einholt. Dies bedeutet, dass der Lernende alle Aktualisierungen vom Anführer erhält, während er nicht gegen das Quorum angerechnet wird, das vom Anführer als überholt erachtet wird, um die Garnaktivität zu berücksichtigen. Der Lernende dient nur als Standby-Knoten, bis er befördert wird. Diese gelockerten Anforderungen an das Quorum sorgen für eine höhere Verfügbarkeit im Zuge der Neukonfiguration der Mitglieder und der Betriebssicherheit (Spion Resolve 3). Wir werden die Flexibilität haben, die Robustheit der Lernenden zu verbessern und Mechanismen zur automatischen Werbung zu erforschen, um unkomplizierter und legitimer zu werden Operation. Bitte lesen Sie unsere Dokumentation zum Anfänger und die Dokumentation zur Laufzeitkonfiguration für einzelne Handbücher. Die neue Consumer Balancer-CD wurde entwickelt, um die unterschiedlichsten Absichten und Netzwerkfehler zu tolerieren. Obwohl ein Knoten ausfällt, “sieht” der Cluster von Anfang an so aus, als würde er normal funktionieren, indem eine logische Clusterüberwachung von mehr als einem Server bereitgestellt wird. Dies garantiert jedoch nicht die Lebendigkeit des Benutzers. Aus diesem Grund hat etcd client eine völlig andere Art der Speicherung komplexer Protokolle implementiert, um deren Richtigkeit und Hochverfügbarkeit unter unhöflichen Bedingungen zu gewährleisten. Historisch gesehen hat sich etcd client balancer bewusst auf eine archaische gRPC-Schnittstelle verlassen: Jede gRPC-Abhängigkeit verbessert die Kundengewohnheiten. Ein Großteil der Muster- und Fehlerbehebungsbemühungen war darauf gerichtet, die Anpassungen der Client-Gewohnheiten zu korrigieren. Infolgedessen hat sich die Implementierung als übermäßig komplex herausgestellt, und die Annahmen bezüglich der Serverkonnektivität sind irreführend. Der Hauptzweck wurde einst, um das Balancer-Failover zu vereinfachen. Anstatt eine Liste ungesunder Endpunkte zu deklarieren, die uneinheitlich sein sollen, wird der Client bei jeder Gelegenheit vom aktuellen Endpunkt getrennt. Endpoint Assert wird nicht aufgelöst. Daher ist keine komplexere Überwachung von Zusicherungen erforderlich. Darüber hinaus erstellt der eindeutige Client jetzt ein eigenes Paket mit Anmeldeinformationen, um das Balancer-Failover auf stabilen Endpunkten zu reparieren. Dies behebt den jahrelangen Wurm und der Ort, an dem kube-apiserver seine Konnektivität zum etcd-Cluster verliert, wenn der erste etcd-Server nicht mehr verfügbar ist. )

Euch gefällt was ihr seht? Nehmt euch doch einen kurzen Moment und unterstützt uns auf Patreon!
Geltendmachung von etcd 3.4 1