Dies ist die mehrseitige Druckansicht dieses Abschnitts. .
Entwicklerhandbuch
- 1: Protokoll des Discovery-Dienstes
- 2: Einen lokalen Cluster einrichten
- 3: Mit etcd arbeiten
- 4: Warum ein gRPC-Gateway
- 5: gRPC-Namensauflösung und Discovery
- 6: etcd in eine Go-Anwendung einbetten
- 7: Systemgrenzen
- 8: etcd-Funktionen
- 9: API-Referenz
- 10: API-Referenz: Nebenläufigkeit
1 - Protokoll des Discovery-Dienstes
Diese Seite dokumentiert das ältere v2-Discovery-Protokoll, das in etcd 3.7 entfernt wurde. Für eine neue v3.7-Installation das v3-Discovery-Protokoll verwenden.
Das Protokoll des Discovery-Dienstes hilft einem neuen etcd-Mitglied, während der Clusterinitialisierung alle anderen Mitglieder über eine gemeinsame Discovery-URL zu finden.
Das Protokoll des Discovery-Dienstes wird nur während der Clusterinitialisierung verwendet. Es kann nicht zur Neukonfiguration im laufenden Betrieb oder zur Clusterüberwachung genutzt werden.
Das Protokoll verwendet ein neues Discovery-Token, um einen eindeutigen etcd-Cluster zu initialisieren. Ein Discovery-Token kann nur einen etcd-Cluster repräsentieren. Sobald das Discovery-Protokoll mit diesem Token startet, darf es nicht zur Initialisierung eines anderen etcd-Clusters verwendet werden, auch wenn der Vorgang auf halbem Weg fehlschlägt.
Der Rest dieses Artikels erläutert den Discovery-Ablauf anhand von Beispielen für einen selbst betriebenen Discovery-Cluster. Der öffentliche Discovery-Dienst discovery.etcd.io funktioniert ebenso, bietet jedoch eine zusätzliche Schicht, die unübersichtliche URLs verbirgt, UUIDs automatisch erzeugt und einen gewissen Schutz vor übermäßig vielen Anfragen bietet. Im Kern verwendet auch der öffentliche Discovery-Dienst einen etcd-Cluster als Datenspeicher, wie in diesem Dokument beschrieben.
Protokollablauf
Das Discovery-Protokoll nutzt einen internen etcd-Cluster, um die Initialisierung eines neuen Clusters zu koordinieren. Zuerst kommunizieren alle neuen Mitglieder mit dem Discovery-Dienst und helfen dabei, die erwartete Mitgliederliste zu erstellen. Anschließend initialisiert jedes neue Mitglied seinen Server anhand dieser Liste. Sie erfüllt dieselbe Funktion wie die Option -initial-cluster.
Im folgenden Beispielablauf wird jeder Protokollschritt zur Veranschaulichung im curl-Format dargestellt.
Das etcd-Discovery-Protokoll verwendet vereinbarungsgemäß das Schlüsselpräfix _etcd/registry. Wenn unter http://example.com ein etcd-Cluster für den Discovery-Dienst läuft, lautet die vollständige URL zum Discovery-Schlüsselraum http://example.com/v2/keys/_etcd/registry. Sie wird im Beispiel als URL-Präfix verwendet.
Ein neues Discovery-Token erstellen
Ein eindeutiges Token erzeugen, das den neuen Cluster identifiziert. In den folgenden Schritten dient es als eindeutiges Präfix im Discovery-Schlüsselraum. Mit uuidgen lässt es sich einfach erzeugen:
Die erwartete Clustergröße angeben
Für das Discovery-Token muss eine Clustergröße angegeben werden. Anhand dieser Größe erkennt der Discovery-Dienst, wann er alle Mitglieder gefunden hat, die den Cluster anfänglich bilden sollen.
Üblicherweise beträgt die Clustergröße 3, 5 oder 7. Weitere Einzelheiten enthält der Abschnitt zur optimalen Clustergröße .
etcd-Prozesse starten
Die Discovery-URL mit der Option -discovery angeben und die etcd-Prozesse starten. Jeder etcd-Prozess führt intern die folgenden Schritte aus, wenn die Option -discovery angegeben ist.
Selbstregistrierung
Zuerst registriert sich der etcd-Prozess unter der Discovery-URL als Mitglied. Dazu legt er die Mitglieds-ID als Schlüssel unter der Discovery-URL an.
Status prüfen
Er prüft die erwartete Clustergröße und den Registrierungsstatus unter der Discovery-URL und entscheidet dann über den nächsten Schritt.
Wenn noch nicht genügend Mitglieder registriert sind, wartet er auf die übrigen Mitglieder.
Wenn die Anzahl registrierter Mitglieder die erwartete Größe N übersteigt, gelten die ersten N registrierten Mitglieder als Mitgliederliste des Clusters. Ist das Mitglied selbst in dieser Liste enthalten, ist der Discovery-Vorgang erfolgreich, und es ermittelt alle Peers anhand der Mitgliederliste. Ist es nicht enthalten, endet der Discovery-Vorgang mit der Fehlermeldung, dass der Cluster bereits voll ist.
In der etcd-Implementierung kann das Mitglied den Clusterstatus bereits vor seiner Registrierung prüfen. So kann es frühzeitig mit einem Fehler abbrechen, wenn der Cluster bereits voll ist.
Auf alle Mitglieder warten
Der Wartevorgang ist in der etcd-API-Dokumentation ausführlich beschrieben.
Er wartet, bis alle Mitglieder gefunden sind.
Öffentlicher Discovery-Dienst
CoreOS Inc. betreibt unter https://discovery.etcd.io/ einen öffentlichen Discovery-Dienst mit einigen Funktionen, die die Nutzung erleichtern.
Schlüsselpräfix verbergen
Der öffentliche Discovery-Dienst leitet https://discovery.etcd.io/${UUID} zum dahinterliegenden etcd-Cluster auf den Schlüssel unter /v2/keys/_etcd/registry um. Er verbirgt das Registrierungsschlüsselpräfix, damit die Discovery-URL kurz und lesbar bleibt.
Neues Token abrufen
Der Erzeugungsvorgang im Dienst folgt den Schritten von Ein neues Discovery-Token erstellen bis Die erwartete Clustergröße angeben .
Discovery-Status prüfen
Der Status dieses Discovery-Tokens einschließlich der registrierten Rechner lässt sich durch Abfragen des Werts der UUID prüfen.
Open-Source-Repository
Das Repository befindet sich unter https://github.com/coreos/discovery.etcd.io . Damit lässt sich ein eigener Discovery-Dienst erstellen.
2 - Einen lokalen Cluster einrichten
Für Test- und Entwicklungsumgebungen ist die Konfiguration eines lokalen Clusters der schnellste und einfachste Weg. Für eine produktive Bereitstellung siehe den Abschnitt Cluster einrichten .
Lokaler eigenständiger Cluster
Einen Cluster starten
Mit folgendem Befehl wird ein eigenständiger etcd-Cluster bereitgestellt:
Wenn die Binärdatei etcd nicht im aktuellen Arbeitsverzeichnis liegt, befindet sie sich möglicherweise unter $GOPATH/bin/etcd oder /usr/local/bin/etcd. Den Befehl entsprechend ausführen.
Das laufende etcd-Mitglied nimmt unter localhost:2379 Client-Anfragen entgegen.
Mit dem Cluster arbeiten
Mit etcdctl lässt sich mit dem laufenden Cluster arbeiten:
-
Ein beispielhaftes Schlüssel-Wert-Paar im Cluster speichern:
Wenn OK ausgegeben wird, wurde das Schlüssel-Wert-Paar erfolgreich gespeichert.
-
Den Wert von
fooabrufen:Wenn
barzurückgegeben wird, funktioniert die Interaktion mit dem etcd-Cluster wie erwartet.
Lokaler Cluster mit mehreren Mitgliedern
Einen Cluster starten
Im Stammverzeichnis des etcd-Git-Repositorys liegt eine Procfile, mit der sich ein lokaler Cluster mit mehreren Mitgliedern einfach konfigurieren lässt. Zum Starten eines solchen Clusters in das Stammverzeichnis des etcd-Quellbaums wechseln und Folgendes ausführen:
-
goremaninstallieren, um auf Procfile basierende Anwendungen zu steuern: -
Einen Cluster mit
goremanund der mitgelieferten Procfile von etcd starten:Die Mitglieder starten. Sie nehmen Client-Anfragen unter
localhost:2379,localhost:22379beziehungsweiselocalhost:32379entgegen.
Mit dem Cluster arbeiten
Mit etcdctl lässt sich mit dem laufenden Cluster arbeiten:
-
Die Mitgliederliste ausgeben:
Die Liste der etcd-Mitglieder wird wie folgt angezeigt:
-
Ein beispielhaftes Schlüssel-Wert-Paar im Cluster speichern:
Wenn OK ausgegeben wird, wurde das Schlüssel-Wert-Paar erfolgreich gespeichert.
Fehlertoleranz testen
Um die Fehlertoleranz von etcd zu testen, ein Mitglied beenden und versuchen, den Schlüssel abzurufen.
-
Den Prozessnamen des Mitglieds ermitteln, das angehalten werden soll.
Die
Procfileenthält die Eigenschaften des Clusters mit mehreren Mitgliedern. Als Beispiel dient das Mitglied mit dem Prozessnamenetcd2. -
Das Mitglied anhalten:
-
Einen Schlüssel speichern:
-
Den im vorherigen Schritt gespeicherten Schlüssel abrufen:
-
Einen Schlüssel vom angehaltenen Mitglied abrufen:
Der Befehl sollte wegen der fehlgeschlagenen Verbindung eine Fehlermeldung anzeigen:
-
Das angehaltene Mitglied neu starten:
-
Den Schlüssel vom neu gestarteten Mitglied abrufen:
Der Neustart des Mitglieds stellt die Verbindung wieder her.
etcdctlkann den Schlüssel nun erfolgreich abrufen. Weitere Informationen zur Arbeit mit etcd enthält der Abschnitt Mit etcd arbeiten .
3 - Mit etcd arbeiten
Benutzer arbeiten mit etcd meist, indem sie den Wert eines Schlüssels schreiben oder lesen. Dieser Abschnitt beschreibt dies anhand von etcdctl, einem Befehlszeilenwerkzeug zur Interaktion mit dem etcd-Server. Die erläuterten Konzepte sollten auch für die gRPC-APIs und die APIs der Client-Bibliotheken gelten.
etcdctl v3.7 verwendet die v3-API. Die v2-API und die Versionsauswahl über ETCDCTL_API wurden entfernt.
Die folgenden Beispiele enthalten historische Befehlsausgaben; die angezeigten Versionsnummern können daher von Ihrer Installation abweichen. Frühere etcd-Versionen hielten v2- und v3-Schlüssel in getrennten Speichern. Migrieren Sie vorhandene v2-Daten vor dem Upgrade auf v3.7.
Versionen ermitteln
Die etcdctl-Version und die API-Version des Servers helfen dabei, die passenden Befehle für verschiedene etcd-Operationen zu bestimmen.
Mit folgendem Befehl lassen sich die Versionen ermitteln:
Einen Schlüssel schreiben
Anwendungen speichern Schlüssel im etcd-Cluster, indem sie Werte unter diesen Schlüsseln schreiben. Jeder gespeicherte Schlüssel wird über das Raft-Protokoll auf alle Mitglieder des etcd-Clusters repliziert, um Konsistenz und Zuverlässigkeit zu gewährleisten.
Mit folgendem Befehl wird der Wert des Schlüssels foo auf bar gesetzt:
Ein Schlüssel kann durch Zuordnen einer Lease auch für einen festgelegten Zeitraum gesetzt werden.
Mit folgendem Befehl wird der Wert des Schlüssels foo1 für 10s auf bar1 gesetzt.
Die Lease-ID 1234abcd im obigen Befehl ist die ID, die beim Erstellen der Lease mit 10s Laufzeit zurückgegeben wird. Diese ID kann anschließend dem Schlüssel zugeordnet werden.
Schlüssel lesen
Anwendungen können Schlüsselwerte aus einem etcd-Cluster lesen. Abfragen können einen einzelnen Schlüssel oder einen Schlüsselbereich lesen.
Angenommen, im etcd-Cluster sind folgende Schlüssel gespeichert:
Mit folgendem Befehl wird der Wert des Schlüssels foo gelesen:
Mit folgendem Befehl wird der Wert des Schlüssels foo im Hexadezimalformat gelesen:
Mit folgendem Befehl wird nur der Wert des Schlüssels foo gelesen:
Mit folgendem Befehl werden die Schlüssel von foo bis foo3 abgefragt:
foo3 ist ausgeschlossen, da der Bereich dem halboffenen Intervall [foo, foo3) entspricht, das foo3 nicht enthält.
Mit folgendem Befehl werden alle Schlüssel mit dem Präfix foo abgefragt:
Mit folgendem Befehl werden alle Schlüssel mit dem Präfix foo abgefragt und die Ergebnisse auf 2 begrenzt:
Mit folgendem Befehl werden alle Schlüssel mit dem Präfix foo über den RPC RangeStream
abgefragt. Das Ergebnis ist mit dem eines unären Range-Aufrufs identisch:
--stream unterstützt weder --order noch --sort-by noch Revisionsfilter.
Frühere Schlüsselversionen lesen
Anwendungen möchten möglicherweise ersetzte Versionen eines Schlüssels lesen. Beispielsweise kann eine Anwendung durch Zugriff auf eine frühere Schlüsselversion zu einer alten Konfiguration zurückkehren. Oder sie kann durch den Schlüsselverlauf über mehrere Anfragen hinweg eine konsistente Sicht auf mehrere Schlüssel erhalten. Da jede Änderung am Schlüssel-Wert-Speicher des etcd-Clusters dessen globale Revision erhöht, kann eine Anwendung ersetzte Schlüssel durch Angabe einer älteren etcd-Revision lesen.
Angenommen, im etcd-Cluster sind bereits folgende Schlüssel gespeichert:
Das folgende Beispiel zeigt den Zugriff auf frühere Schlüsselversionen:
Schlüssel lesen, deren Bytewert größer oder gleich dem angegebenen Schlüssel ist
Anwendungen möchten möglicherweise Schlüssel lesen, deren Bytewert größer oder gleich dem des angegebenen Schlüssels ist.
Angenommen, im etcd-Cluster sind bereits folgende Schlüssel gespeichert:
Mit folgendem Befehl werden Schlüssel gelesen, deren Bytewert größer oder gleich dem des Schlüssels b ist:
Schlüssel löschen
Anwendungen können einen einzelnen Schlüssel oder einen Schlüsselbereich aus einem etcd-Cluster löschen.
Angenommen, im etcd-Cluster sind bereits folgende Schlüssel gespeichert:
Mit folgendem Befehl wird der Schlüssel foo gelöscht:
Mit folgendem Befehl werden die Schlüssel von foo bis foo9 gelöscht:
Mit folgendem Befehl wird der Schlüssel zoo gelöscht und das gelöschte Schlüssel-Wert-Paar zurückgegeben:
Mit folgendem Befehl werden Schlüssel mit dem Präfix zoo gelöscht:
Mit folgendem Befehl werden Schlüssel gelöscht, deren Bytewert größer oder gleich dem des Schlüssels b ist:
Schlüsseländerungen beobachten
Anwendungen können einen Schlüssel oder einen Schlüsselbereich beobachten, um sämtliche Aktualisierungen zu überwachen.
Mit folgendem Befehl wird der Schlüssel foo beobachtet:
Mit folgendem Befehl wird der Schlüssel foo im Hexadezimalformat beobachtet:
Mit folgendem Befehl wird der Schlüsselbereich von foo bis foo9 beobachtet:
Mit folgendem Befehl werden Schlüssel mit dem Präfix foo beobachtet:
Mit folgendem Befehl werden die beiden Schlüssel foo und zoo beobachtet:
Historische Schlüsseländerungen beobachten
Anwendungen möchten möglicherweise historische Änderungen an Schlüsseln in etcd beobachten. Beispielsweise kann eine Anwendung alle Änderungen eines Schlüssels empfangen wollen. Solange sie mit etcd verbunden bleibt, genügt dafür watch. Fällt jedoch die Anwendung oder etcd aus, kann während des Ausfalls eine Änderung auftreten, die die Anwendung nicht in Echtzeit empfängt. Um die Zustellung der Aktualisierung zu garantieren, muss die Anwendung historische Schlüsseländerungen beobachten können. Dazu kann sie wie beim Lesen früherer Schlüsselversionen eine historische Revision für einen Watch angeben.
Angenommen, die folgende Folge von Operationen wurde ausgeführt:
Das folgende Beispiel zeigt die Beobachtung historischer Änderungen:
Das folgende Beispiel beobachtet erst ab der letzten historischen Änderung:
Watch-Fortschritt
Anwendungen möchten möglicherweise den Fortschritt eines Watches prüfen, um die Aktualität seines Streams zu bestimmen. Wird ein Watch beispielsweise zur Aktualisierung eines Caches verwendet, kann es hilfreich sein zu wissen, ob der Cache gegenüber der Revision eines Quorum-Lesezugriffs veraltet ist.
In einer interaktiven Watch-Sitzung kann mit dem Befehl “progress” eine Fortschrittsanfrage gestellt werden. Sie fordert den etcd-Server auf, eine Fortschrittsbenachrichtigung im Watch-Stream zu senden:
Die Revisionsnummer in der Fortschrittsantwort stammt vom lokalen etcd-Serverknoten, mit dem der Watch-Stream verbunden ist. Ist dieser Knoten durch eine Netzwerkpartition abgetrennt und nicht Teil des Quorums, kann diese Revision niedriger sein als die Revision eines Quorum-Lesezugriffs auf einen nicht abgetrennten etcd-Serverknoten.
Kompaktierte Revisionen
Wie erwähnt, bewahrt etcd Revisionen auf, damit Anwendungen frühere Schlüsselversionen lesen können. Damit sich jedoch kein unbegrenzt großer Verlauf ansammelt, ist es wichtig, frühere Revisionen zu kompaktieren. Nach der Kompaktierung entfernt etcd historische Revisionen und gibt Ressourcen für die spätere Nutzung frei. Alle ersetzten Daten mit Revisionen vor der Kompaktierungsrevision sind dann nicht mehr verfügbar.
Mit folgendem Befehl werden die Revisionen kompaktiert:
Die aktuelle Revision des etcd-Servers lässt sich mit einem get-Befehl im JSON-Format für einen beliebigen vorhandenen oder nicht vorhandenen Schlüssel ermitteln. Das folgende Beispiel verwendet mykey, das im etcd-Server nicht existiert:
Leases gewähren
Anwendungen können vom etcd-Cluster Leases für Schlüssel anfordern. Wird ein Schlüssel einer Lease zugeordnet, ist seine Lebensdauer an die der Lease gebunden, die ihrerseits durch eine Time-to-live (TTL) bestimmt wird. Jede Lease hat eine Mindest-TTL, die die Anwendung bei der Anforderung angibt. Ihre tatsächliche TTL ist mindestens so groß wie die Mindest-TTL und wird vom etcd-Cluster gewählt. Sobald sie verstrichen ist, läuft die Lease ab, und alle zugeordneten Schlüssel werden gelöscht.
Mit folgendem Befehl wird eine Lease gewährt:
Leases widerrufen
Anwendungen widerrufen Leases anhand ihrer Lease-ID. Dabei werden alle der Lease zugeordneten Schlüssel gelöscht.
Angenommen, die folgende Folge von Operationen wurde ausgeführt:
Mit folgendem Befehl wird dieselbe Lease widerrufen:
Leases am Leben halten
Anwendungen können eine Lease am Leben halten, indem sie deren TTL erneuern und so ihren Ablauf verhindern.
Angenommen, die folgende Folge von Operationen wurde ausgeführt:
Mit folgendem Befehl wird dieselbe Lease am Leben gehalten:
Lease-Informationen abrufen
Anwendungen möchten möglicherweise Informationen über Leases abrufen, um sie zu erneuern oder zu prüfen, ob eine Lease noch existiert oder bereits abgelaufen ist. Sie möchten möglicherweise auch wissen, welchen Schlüsseln eine bestimmte Lease zugeordnet ist.
Angenommen, die folgende Folge von Operationen wurde ausgeführt:
Mit folgendem Befehl werden Informationen zur Lease abgerufen:
Mit folgendem Befehl werden Informationen zur Lease einschließlich der ihr zugeordneten Schlüssel abgerufen:
4 - Warum ein gRPC-Gateway
etcd v3 verwendet gRPC als Nachrichtenprotokoll. Das etcd-Projekt enthält einen gRPC-basierten Go-Client und das Befehlszeilenwerkzeug etcdctl zur Kommunikation mit einem etcd-Cluster über gRPC. Für Sprachen ohne gRPC-Unterstützung stellt etcd ein JSON-gRPC-Gateway bereit. Dieses Gateway dient als RESTful-Proxy, der HTTP/JSON-Anfragen in gRPC-Nachrichten übersetzt.
Das gRPC-Gateway verwenden
Das Gateway akzeptiert eine JSON-Abbildung
der Protocol-Buffer
-Nachrichtendefinitionen von etcd. Die Felder key und value sind als Byte-Arrays definiert und müssen deshalb in JSON base64-kodiert sein. Die folgenden Beispiele verwenden curl, jeder andere HTTP/JSON-Client sollte jedoch ebenso funktionieren.
Hinweise
Der Endpunkt des gRPC-Gateways hat sich seit etcd v3.3 geändert:
- etcd v3.2 und frühere Versionen verwenden ausschließlich
[CLIENT-URL]/v3alpha/*. - etcd v3.3 verwendet
[CLIENT-URL]/v3beta/*und behält[CLIENT-URL]/v3alpha/*bei. - etcd v3.4 verwendet
[CLIENT-URL]/v3/*und behält[CLIENT-URL]/v3beta/*bei.[CLIENT-URL]/v3alpha/*ist veraltet.
- etcd v3.5 und spätere Versionen verwenden ausschließlich
[CLIENT-URL]/v3/*.[CLIENT-URL]/v3beta/*ist veraltet.
Das gRPC-Gateway unterstützt keine Authentifizierung über den TLS Common Name.
Schlüssel schreiben und lesen
Die Dienste /v3/kv/range und /v3/kv/put zum Lesen und Schreiben von Schlüsseln verwenden:
Schlüssel beobachten
Den Dienst /v3/watch zum Beobachten von Schlüsseln verwenden:
Transaktionen
Eine Transaktion mit /v3/kv/txn ausführen:
Authentifizierung
Die Authentifizierung mit dem Dienst /v3/auth einrichten:
Mit /v3/auth/authenticate bei etcd authentifizieren, um ein Authentifizierungstoken zu erhalten:
Den Header Authorization auf das Authentifizierungstoken setzen, um einen Schlüssel mit Authentifizierungsdaten abzurufen:
Fehlerantworten
Das gRPC-Gateway übersetzt den gRPC-Status in HTTP-Statuscodes und einen JSON-Fehlerinhalt.
Ab etcd v3.6 änderte die Aktualisierung auf grpc-gateway v2 die Fehlerbehandlung
(siehe den Hinweis zur Fehlerbehandlung
im v2-Migrationsleitfaden).
Das Verhalten des Gateways entspricht nun google.rpc.Status (code, message,
details), wie im API-Fehlermodell von Google
beschrieben.
Ältere grpc-gateway-Versionen enthielten außerdem ein error-Feld
auf oberster Ebene. Dieses Feld wird in etcd v3.6 und neueren Versionen nicht unterstützt.
Clients sollten den HTTP-Statuscode als vorrangigen Hinweis auf Erfolg oder
Fehlschlag behandeln. Schlägt eine Anfrage fehl, sollten Clients das Feld message
als wichtigste Quelle für Fehlerinformationen verwenden und zusätzliche Details
zur weiteren Einordnung heranziehen.
Swagger
Generierte Swagger -API-Definitionen stehen unter rpc.swagger.json bereit.
5 - gRPC-Namensauflösung und Discovery
etcd stellt einen gRPC-Resolver für ein alternatives Namenssystem bereit, das Endpunkte aus etcd abruft, um gRPC-Dienste zu finden. Der zugrunde liegende Mechanismus beobachtet Änderungen an Schlüsseln, deren Präfix der Dienstname ist.
Diese Funktion ist experimentell, da sie vom Paket google.golang.org/grpc/resolver abhängt, das in grpc-go noch experimentell ist.
etcd-Discovery mit go-grpc verwenden
Der etcd-Client stellt einen gRPC-Resolver bereit, der gRPC-Endpunkte mit einem etcd-Backend auflöst. Der Resolver wird mit einem etcd-Client initialisiert:
Dienstendpunkte verwalten
Der etcd-Resolver betrachtet alle Schlüssel unter dem Präfix des Auflösungsziels, gefolgt von einem “/” (z. B. “foo/bar/my-service/”),
mit JSON-kodierten Werten (früher go-grpc naming.Update) als mögliche Dienstendpunkte.
Durch Anlegen neuer Schlüssel werden Endpunkte zum Dienst hinzugefügt; durch Löschen der Schlüssel werden sie entfernt.
Einen Endpunkt hinzufügen
Neue Endpunkte lassen sich mit etcdctl zum Dienst hinzufügen:
Die Methode endpoints.Manager des etcd-Clients kann ebenfalls neue Endpunkte mit einem zu Addr passenden Schlüssel registrieren:
Um beim Verbindungsaufbau zu einem Dienst mit mehreren Endpunkten Round-Robin-Lastverteilung zu aktivieren, kann die Verbindung mit dem internen Round-Robin-Load-Balancer von grpc eingerichtet werden:
Einen Endpunkt löschen
Hosts lassen sich mit etcdctl aus dem Dienst entfernen:
Die Methode endpoints.Manager des etcd-Clients unterstützt auch das Löschen von Endpunkten:
Einen Endpunkt mit einer Lease registrieren
Die Registrierung eines Endpunkts mit einer Lease stellt sicher, dass er aus dem Dienst entfernt wird, wenn der Host keinen Keepalive-Heartbeat mehr aufrechterhalten kann, etwa bei einem Ausfall des Rechners:
In Go:
Endpunkte atomar aktualisieren
Um mehrere Endpunkte in einer einzigen Transaktion zu ändern, kann endpoints.Manager direkt verwendet werden:
6 - etcd in eine Go-Anwendung einbetten
embed von etcd einen etcd-Server innerhalb Ihrer Anwendung ausführenDas Go-Paket embed von etcd bietet eine einfache Möglichkeit, einen etcd-Server direkt in Ihre Anwendung einzubetten.
Weitere Einzelheiten enthält die Dokumentation des Pakets embed .
7 - Systemgrenzen
Maximale Anfragegröße
etcd ist für kleine Schlüssel-Wert-Paare ausgelegt, wie sie für Metadaten typisch sind. Größere Anfragen funktionieren, können jedoch die Latenz anderer Anfragen erhöhen. Standardmäßig beträgt die maximale Größe einer Anfrage 1.5 MiB. Diese Grenze lässt sich über die Option --max-request-bytes des etcd-Servers konfigurieren.
Maximale Speichergröße
Die standardmäßige Speichergrenze beträgt 2 GiB und lässt sich über die Option --quota-backend-bytes konfigurieren. Für normale Umgebungen werden maximal 8 GiB empfohlen. etcd gibt beim Start eine Warnung aus, wenn der konfigurierte Wert diese Größe überschreitet.
8 - etcd-Funktionen
Dieses Dokument gibt einen Überblick über die Funktionen von etcd und das Verfahren, nach dem sie als veraltet eingestuft werden. Wie Funktionen in etcd entwickelt werden, erläutern diese Entwicklungsrichtlinien .
Die Funktionen von etcd werden in drei Stufen eingeteilt: experimentell, stabil und unsicher. Mit etcd --help lässt sich die Liste der Funktionen anzeigen.
Experimentell
Um frühzeitig Rückmeldungen zu erhalten, werden neue Funktionen üblicherweise als experimentelle Funktionen eingeführt. Sie sind am Optionsnamen zu erkennen, der mit --experimental beginnen sollte. Bei der Verwendung einer experimentellen Funktion sind folgende Punkte zu beachten:
- Sie kann Fehler enthalten, da sie noch nicht ausreichend von Benutzern getestet wurde. Nach dem Aktivieren funktioniert sie möglicherweise nicht wie erwartet.
- Sie ist standardmäßig deaktiviert.
- Die Unterstützung einer solchen Funktion kann jederzeit ohne Ankündigung eingestellt werden
- Sie kann in der nächsten Minor- oder Major-Version entfernt werden, ohne die Richtlinie zur Einstufung als veraltet einzuhalten, sofern sie nicht in die stabile Stufe übergeht.
- Das Projektteam freut sich über Fehlermeldungen zu experimentellen Funktionen. Diese Probleme können jedoch eine geringere Priorität erhalten als Probleme mit stabilen Funktionen.
- Eine experimentelle Funktionsoption wird als veraltet eingestuft , sobald die Funktion die stabile Stufe erreicht. Benutzer sollten möglichst bald auf die stabile Funktionsoption umsteigen.
Stabil
Dies ist die häufigste Stufe von Funktionen in etcd. Eine stabile Funktion zeichnet sich durch Folgendes aus:
- Sie wird im Rahmen der unterstützten etcd-Versionen unterstützt.
- Sie kann standardmäßig aktiviert sein.
- Die Einstellung der Unterstützung muss der Richtlinie zur Einstufung als veraltet folgen.
Unsicher
Unsichere Funktionen sind selten und werden im Abschnitt Unsafe feature: der etcd-Nutzungsdokumentation aufgeführt. Sie sind standardmäßig deaktiviert. Sie sollten mit Vorsicht und gemäß der Dokumentation verwendet werden. Eine unsichere Funktion kann in der nächsten Minor- oder Major-Version entfernt werden, ohne die Richtlinie zur Einstufung als veraltet einzuhalten.
Funktionen als veraltet einstufen
Experimentell
Eine experimentelle Funktion wird als veraltet eingestuft, sobald sie die stabile Stufe erreicht.
- Die Dokumentation der experimentellen Funktion zeigt einen Hinweis auf die Einstufung als veraltet und empfiehlt die entsprechende stabile Funktionsoption, z. B.
DEPRECATED. Use <feature-name> instead. - Eine als veraltet eingestufte Funktion wird in der darauffolgenden Version entfernt.
Stabil
Im Zuge der Projektentwicklung kann es nötig werden, auch eine stabile Funktion als veraltet einzustufen und zu entfernen. In diesem Fall gilt:
- Die Dokumentation der Funktion zeigt vor der Version, für die die Einstufung als veraltet geplant ist, eine Warnmeldung, z. B.
To be deprecated in <release>.. Ist bereits eine neue Funktion als Ersatz für die mitTo be deprecatedgekennzeichnete Funktion geplant, wird auch darauf hingewiesen, z. B.Use <feature-name> instead.. - Die Funktion wird in der geplanten Version als veraltet eingestuft. Ab dann zeigt ihre Dokumentation einen entsprechenden Hinweis und empfiehlt eine verwandte stabile Funktion, z. B.
DEPRECATED. Use <feature-name> instead. - Eine als veraltet eingestufte Funktion wird in der darauffolgenden Version entfernt.
9 - API-Referenz
Diese API-Referenz wird automatisch aus den angegebenen .proto-Dateien erzeugt.
Dienst Auth (api/etcdserverpb/rpc.proto)
| Methode | Anfragetyp | Antworttyp | Beschreibung |
|---|---|---|---|
| AuthEnable | AuthEnableRequest | AuthEnableResponse | AuthEnable aktiviert die Authentifizierung. |
| AuthDisable | AuthDisableRequest | AuthDisableResponse | AuthDisable deaktiviert die Authentifizierung. |
| AuthStatus | AuthStatusRequest | AuthStatusResponse | AuthStatus zeigt den Authentifizierungsstatus an. |
| Authenticate | AuthenticateRequest | AuthenticateResponse | Authenticate verarbeitet eine Authentifizierungsanfrage. |
| UserAdd | AuthUserAddRequest | AuthUserAddResponse | UserAdd fügt einen neuen Benutzer hinzu. Der Benutzername darf nicht leer sein. |
| UserGet | AuthUserGetRequest | AuthUserGetResponse | UserGet ruft ausführliche Benutzerinformationen ab. |
| UserList | AuthUserListRequest | AuthUserListResponse | UserList ruft eine Liste aller Benutzer ab. |
| UserDelete | AuthUserDeleteRequest | AuthUserDeleteResponse | UserDelete löscht einen angegebenen Benutzer. |
| UserChangePassword | AuthUserChangePasswordRequest | AuthUserChangePasswordResponse | UserChangePassword ändert das Passwort eines angegebenen Benutzers. |
| UserGrantRole | AuthUserGrantRoleRequest | AuthUserGrantRoleResponse | UserGrantRole weist einem angegebenen Benutzer eine Rolle zu. |
| UserRevokeRole | AuthUserRevokeRoleRequest | AuthUserRevokeRoleResponse | UserRevokeRole entzieht einem angegebenen Benutzer eine Rolle. |
| RoleAdd | AuthRoleAddRequest | AuthRoleAddResponse | RoleAdd fügt eine neue Rolle hinzu. Der Rollenname darf nicht leer sein. |
| RoleGet | AuthRoleGetRequest | AuthRoleGetResponse | RoleGet ruft ausführliche Rolleninformationen ab. |
| RoleList | AuthRoleListRequest | AuthRoleListResponse | RoleList ruft Listen aller Rollen ab. |
| RoleDelete | AuthRoleDeleteRequest | AuthRoleDeleteResponse | RoleDelete löscht eine angegebene Rolle. |
| RoleGrantPermission | AuthRoleGrantPermissionRequest | AuthRoleGrantPermissionResponse | RoleGrantPermission gewährt einer angegebenen Rolle eine Berechtigung für einen bestimmten Schlüssel oder Bereich. |
| RoleRevokePermission | AuthRoleRevokePermissionRequest | AuthRoleRevokePermissionResponse | RoleRevokePermission entzieht einer angegebenen Rolle eine Berechtigung für einen Schlüssel oder Bereich. |
Dienst Cluster (api/etcdserverpb/rpc.proto)
| Methode | Anfragetyp | Antworttyp | Beschreibung |
|---|---|---|---|
| MemberAdd | MemberAddRequest | MemberAddResponse | MemberAdd fügt dem Cluster ein Mitglied hinzu. |
| MemberRemove | MemberRemoveRequest | MemberRemoveResponse | MemberRemove entfernt ein vorhandenes Mitglied aus dem Cluster. |
| MemberUpdate | MemberUpdateRequest | MemberUpdateResponse | MemberUpdate aktualisiert die Mitgliedskonfiguration. |
| MemberList | MemberListRequest | MemberListResponse | MemberList listet alle Mitglieder des Clusters auf. |
| MemberPromote | MemberPromoteRequest | MemberPromoteResponse | MemberPromote stuft ein Mitglied von einem nicht stimmberechtigten Raft-Learner zu einem stimmberechtigten Raft-Mitglied hoch. |
Dienst KV (api/etcdserverpb/rpc.proto)
| Methode | Anfragetyp | Antworttyp | Beschreibung |
|---|---|---|---|
| Range | RangeRequest | RangeResponse | Range ruft die Schlüssel im Bereich aus dem Schlüssel-Wert-Speicher ab. |
| Put | PutRequest | PutResponse | Put schreibt den angegebenen Schlüssel in den Schlüssel-Wert-Speicher. Eine Put-Anfrage erhöht die Revision des Schlüssel-Wert-Speichers und erzeugt ein Ereignis im Ereignisverlauf. |
| DeleteRange | DeleteRangeRequest | DeleteRangeResponse | DeleteRange löscht den angegebenen Bereich aus dem Schlüssel-Wert-Speicher. Eine Löschanfrage erhöht die Revision des Schlüssel-Wert-Speichers und erzeugt für jeden gelöschten Schlüssel ein Löschereignis im Ereignisverlauf. |
| Txn | TxnRequest | TxnResponse | Txn verarbeitet mehrere Anfragen in einer einzigen Transaktion. Eine Txn-Anfrage erhöht die Revision des Schlüssel-Wert-Speichers und erzeugt für jede abgeschlossene Anfrage Ereignisse mit derselben Revision. Derselbe Schlüssel darf innerhalb einer Transaktion nicht mehrfach geändert werden. |
| Compact | CompactionRequest | CompactionResponse | Compact kompaktiert den Ereignisverlauf im Schlüssel-Wert-Speicher von etcd. Der Schlüssel-Wert-Speicher sollte regelmäßig kompaktiert werden, da der Ereignisverlauf andernfalls unbegrenzt weiterwächst. |
Dienst Lease (api/etcdserverpb/rpc.proto)
| Methode | Anfragetyp | Antworttyp | Beschreibung |
|---|---|---|---|
| LeaseGrant | LeaseGrantRequest | LeaseGrantResponse | LeaseGrant erstellt eine Lease, die abläuft, wenn der Server innerhalb einer vorgegebenen Lebensdauer kein keepAlive empfängt. Läuft die Lease ab, laufen alle ihr zugeordneten Schlüssel ebenfalls ab und werden gelöscht. Jeder abgelaufene Schlüssel erzeugt ein Löschereignis im Ereignisverlauf. |
| LeaseRevoke | LeaseRevokeRequest | LeaseRevokeResponse | LeaseRevoke widerruft eine Lease. Alle ihr zugeordneten Schlüssel laufen ab und werden gelöscht. |
| LeaseKeepAlive | LeaseKeepAliveRequest | LeaseKeepAliveResponse | LeaseKeepAlive hält die Lease am Leben, indem es Keepalive-Anfragen vom Client zum Server und Keepalive-Antworten vom Server zum Client als Streams überträgt. |
| LeaseTimeToLive | LeaseTimeToLiveRequest | LeaseTimeToLiveResponse | LeaseTimeToLive ruft Informationen zur Lease ab. |
| LeaseLeases | LeaseLeasesRequest | LeaseLeasesResponse | LeaseLeases listet alle vorhandenen Leases auf. |
Dienst Maintenance (api/etcdserverpb/rpc.proto)
| Methode | Anfragetyp | Antworttyp | Beschreibung |
|---|---|---|---|
| Alarm | AlarmRequest | AlarmResponse | Alarm aktiviert, deaktiviert und erfragt Alarme zum Zustand des Clusters. |
| Status | StatusRequest | StatusResponse | Status ruft den Status des Mitglieds ab. |
| Defragment | DefragmentRequest | DefragmentResponse | Defragment defragmentiert die Backend-Datenbank eines Mitglieds, um Speicherplatz zurückzugewinnen. |
| Hash | HashRequest | HashResponse | Hash berechnet den Hash des gesamten Backend-Schlüsselraums einschließlich der Buckets key, lease und weiterer Buckets im Speicher. Dies ist NUR für Tests vorgesehen! Im Produktivbetrieb mit laufenden Transaktionen darf man sich nicht darauf verlassen, da die Hash-Operation keine MVCC-Sperren hält. Für Konsistenzprüfungen des Buckets “key” stattdessen die API “HashKV” verwenden. |
| HashKV | HashKVRequest | HashKVResponse | HashKV berechnet den Hash aller MVCC-Schlüssel bis zu einer angegebenen Revision. Es durchläuft nur den Bucket “key” im Backend-Speicher. |
| Snapshot | SnapshotRequest | SnapshotResponse | Snapshot sendet einen Snapshot des gesamten Backends eines Mitglieds über einen Stream an einen Client. |
| MoveLeader | MoveLeaderRequest | MoveLeaderResponse | MoveLeader fordert den aktuellen Leader-Knoten auf, seine Führungsrolle an den vorgesehenen Empfänger zu übertragen. |
| Downgrade | DowngradeRequest | DowngradeResponse | Downgrade fordert ein Downgrade der Clusterversion an, prüft dessen Durchführbarkeit oder bricht es ab. Seit etcd 3.5 unterstützt. |
Dienst Watch (api/etcdserverpb/rpc.proto)
| Methode | Anfragetyp | Antworttyp | Beschreibung |
|---|---|---|---|
| Watch | WatchRequest | WatchResponse | Watch beobachtet aktuelle oder bereits vergangene Ereignisse. Ein- und Ausgabe sind Streams: Der Eingabestream dient zum Erstellen und Abbrechen von Watchern, der Ausgabestream überträgt Ereignisse. Ein Watch-RPC kann mehrere Schlüsselbereiche beobachten und Ereignisse für mehrere Watches gleichzeitig streamen. Der gesamte Ereignisverlauf kann ab der letzten Kompaktierungsrevision beobachtet werden. |
Nachricht AlarmMember (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| memberID | memberID ist die ID des Mitglieds, dem der ausgelöste Alarm zugeordnet ist. | uint64 |
| alarm | alarm ist der Typ des ausgelösten Alarms. | AlarmType |
Nachricht AlarmRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| action | action ist die Art der auszuführenden Alarmanfrage. Die Aktion kann Alarmzustände abrufen (GET), einen Alarm aktivieren (ACTIVATE) oder einen ausgelösten Alarm deaktivieren (DEACTIVATE). | AlarmAction |
| memberID | memberID ist die ID des Mitglieds, dem der Alarm zugeordnet ist. Ist memberID 0, umfasst die Alarmanfrage alle Mitglieder. | uint64 |
| alarm | alarm ist der bei dieser Anfrage zu berücksichtigende Alarmtyp. | AlarmType |
Nachricht AlarmResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| alarms | alarms ist eine Liste der Alarme, die der Alarmanfrage zugeordnet sind. | (Slice von) AlarmMember |
Nachricht AuthDisableRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
Nachricht AuthDisableResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Nachricht AuthEnableRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
Nachricht AuthEnableResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Nachricht AuthRoleAddRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| name | name ist der Name der Rolle, die dem Authentifizierungssystem hinzugefügt werden soll. | string |
Nachricht AuthRoleAddResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Nachricht AuthRoleDeleteRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| role | string |
Nachricht AuthRoleDeleteResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Nachricht AuthRoleGetRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| role | string |
Nachricht AuthRoleGetResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| header | ResponseHeader | |
| perm | (Slice von) authpb.Permission |
Nachricht AuthRoleGrantPermissionRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| name | name ist der Name der Rolle, der die Berechtigung erteilt wird. | string |
| perm | perm ist die Berechtigung, die der Rolle erteilt werden soll. | authpb.Permission |
Nachricht AuthRoleGrantPermissionResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Nachricht AuthRoleListRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
Nachricht AuthRoleListResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| roles | (Slice von) string |
Nachricht AuthRoleRevokePermissionRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| role | string | |
| key | bytes | |
| range_end | bytes |
Nachricht AuthRoleRevokePermissionResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Nachricht AuthStatusRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
Nachricht AuthStatusResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| enabled | bool | |
| authRevision | authRevision ist die aktuelle Revision des Authentifizierungsspeichers | uint64 |
Nachricht AuthUserAddRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| name | string | |
| password | string | |
| options | authpb.UserAddOptions | |
| hashedPassword | string |
Nachricht AuthUserAddResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Nachricht AuthUserChangePasswordRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| name | name ist der Name des Benutzers, dessen Passwort geändert wird. | string |
| password | password ist das neue Passwort des Benutzers. Dieses Feld wird in der API-Schicht entfernt. | string |
| hashedPassword | hashedPassword ist der Hashwert des neuen Passworts des Benutzers. Dieses Feld wird in der API-Schicht initialisiert. | string |
Nachricht AuthUserChangePasswordResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Nachricht AuthUserDeleteRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| name | name ist der Name des zu löschenden Benutzers. | string |
Nachricht AuthUserDeleteResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Nachricht AuthUserGetRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| name | string |
Nachricht AuthUserGetResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| roles | (Slice von) string |
Nachricht AuthUserGrantRoleRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| user | user ist der Name des Benutzers, dem eine angegebene Rolle zugewiesen werden sollte. | string |
| role | role ist der Name der Rolle, die dem Benutzer zugewiesen werden soll. | string |
Nachricht AuthUserGrantRoleResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Nachricht AuthUserListRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
Nachricht AuthUserListResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| users | (Slice von) string |
Nachricht AuthUserRevokeRoleRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| name | string | |
| role | string |
Nachricht AuthUserRevokeRoleResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Nachricht AuthenticateRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| name | string | |
| password | string |
Nachricht AuthenticateResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| token | token ist ein autorisiertes Token, das in nachfolgenden RPCs verwendet werden kann | string |
Nachricht CompactionRequest (api/etcdserverpb/rpc.proto)
CompactionRequest kompaktiert den Schlüssel-Wert-Speicher bis zu einer angegebenen Revision. Alle ersetzten Schlüssel mit einer Revision unterhalb der Kompaktierungsrevision werden entfernt.
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| revision | revision ist die Revision des Schlüssel-Wert-Speichers für die Kompaktierungsoperation. | int64 |
| physical | Wenn physical gesetzt ist, wartet der RPC, bis die Kompaktierung physisch auf die lokale Datenbank angewendet wurde und die kompaktierten Einträge vollständig aus der Backend-Datenbank entfernt sind. | bool |
Nachricht CompactionResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Nachricht Compare (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| result | result ist die logische Vergleichsoperation für diesen Vergleich. | CompareResult |
| target | target ist das Schlüssel-Wert-Feld, das für den Vergleich geprüft werden soll. | CompareTarget |
| key | key ist der Schlüssel, auf den die Vergleichsoperation angewendet wird. | bytes |
| target_union | oneof | |
| version | version ist die Version des angegebenen Schlüssels | int64 |
| create_revision | create_revision ist die Erstellungsrevision des angegebenen Schlüssels | int64 |
| mod_revision | mod_revision ist die Revision der letzten Änderung des angegebenen Schlüssels. | int64 |
| value | value ist der Wert des angegebenen Schlüssels als Bytes. | bytes |
| lease | lease ist die Lease-ID des angegebenen Schlüssels. | int64 |
| range_end | range_end vergleicht das angegebene target mit allen Schlüsseln im Bereich [key, range_end). Weitere Informationen zu Schlüsselbereichen enthält RangeRequest. | bytes |
Nachricht DefragmentRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
Nachricht DefragmentResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Nachricht DeleteRangeRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| key | key ist der erste zu löschende Schlüssel im Bereich. | bytes |
| range_end | range_end ist der Schlüssel nach dem letzten zu löschenden Schlüssel im Bereich [key, range_end). Ist range_end nicht angegeben, enthält der Bereich nur das Argument key. Ist range_end gleich dem angegebenen Schlüssel plus eins, umfasst der Bereich alle Schlüssel mit diesem Präfix, also dem angegebenen Schlüssel. Ist range_end ‘\0’, umfasst der Bereich alle Schlüssel größer oder gleich dem Argument key. | bytes |
| prev_kv | Ist prev_kv gesetzt, ruft etcd vor dem Löschen die vorherigen Schlüssel-Wert-Paare ab. Diese werden in der Löschantwort zurückgegeben. | bool |
Nachricht DeleteRangeResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| deleted | deleted ist die Anzahl der durch die Bereichslöschanfrage gelöschten Schlüssel. | int64 |
| prev_kvs | Ist prev_kv in der Anfrage gesetzt, werden die vorherigen Schlüssel-Wert-Paare zurückgegeben. | (Slice von) mvccpb.KeyValue |
Nachricht DowngradeInfo (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| enabled | enabled gibt an, ob für den Cluster ein Downgrade aktiviert ist. | bool |
| targetVersion | targetVersion ist die Zielversion des Downgrades. | string |
Nachricht DowngradeRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| action | action ist die Art der auszuführenden Downgrade-Anfrage. Die Aktion kann die Zielversion validieren (VALIDATE), die Clusterversion herabsetzen (DOWNGRADE) oder den laufenden Downgrade-Vorgang abbrechen (CANCEL). | DowngradeAction |
| version | version ist die Zielversion des Downgrades. | string |
Nachricht DowngradeResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| version | version ist die aktuelle Clusterversion. | string |
Nachricht DowngradeVersionTestRequest (api/etcdserverpb/rpc.proto)
DowngradeVersionTestRequest wird nur für Tests verwendet. Die Version in dieser Anfrage wird als Version des WAL-Eintrags gelesen. Ist die Downgrade-Zielversion kleiner als diese Version, ist das Downgrade im laufenden Betrieb oder die Offline-Migration nicht sicher und sollte daher nicht zugelassen werden.
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ver | string |
Nachricht HashKVRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| revision | revision ist die Revision des Schlüssel-Wert-Speichers für die Hash-Operation. | int64 |
Nachricht HashKVResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| hash | hash ist der Hashwert, der aus den MVCC-Schlüsseln des antwortenden Mitglieds bis zu einer angegebenen Revision berechnet wurde. | uint32 |
| compact_revision | compact_revision ist die Kompaktierungsrevision des Schlüssel-Wert-Speichers zu Beginn der Hash-Berechnung. | int64 |
| hash_revision | hash_revision ist die Revision, bis zu der der Hash berechnet wird. | int64 |
Nachricht HashRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
Nachricht HashResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| hash | hash ist der Hashwert, der aus dem KV-Backend des antwortenden Mitglieds berechnet wurde. | uint32 |
Nachricht LeaseCheckpoint (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ID | ID ist die Lease-ID, für die ein Checkpoint erstellt werden soll. | int64 |
| remaining_TTL | Remaining_TTL ist die verbleibende Zeit bis zum Ablauf der Lease. | int64 |
Nachricht LeaseCheckpointRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| checkpoints | (Slice von) LeaseCheckpoint |
Nachricht LeaseCheckpointResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Nachricht LeaseGrantRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| TTL | TTL ist die empfohlene Lebensdauer in Sekunden. Für eine abgelaufene Lease wird -1 zurückgegeben. | int64 |
| ID | ID ist die angeforderte ID der Lease. Ist ID auf 0 gesetzt, wählt der Lease-Geber eine ID aus. | int64 |
Nachricht LeaseGrantResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| ID | ID ist die Lease-ID der gewährten Lease. | int64 |
| TTL | TTL ist die vom Server gewählte Lebensdauer der Lease in Sekunden. | int64 |
| error | string |
Nachricht LeaseKeepAliveRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ID | ID ist die Lease-ID der am Leben zu haltenden Lease. | int64 |
Nachricht LeaseKeepAliveResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| ID | ID ist die Lease-ID aus der Keepalive-Anfrage. | int64 |
| TTL | TTL ist die neue Lebensdauer der Lease. | int64 |
Nachricht LeaseLeasesRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
Nachricht LeaseLeasesResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| leases | (Slice von) LeaseStatus |
Nachricht LeaseRevokeRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ID | ID ist die Lease-ID der zu widerrufenden Lease. Wird die ID widerrufen, werden alle zugeordneten Schlüssel gelöscht. | int64 |
Nachricht LeaseRevokeResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Nachricht LeaseStatus (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ID | int64 |
Nachricht LeaseTimeToLiveRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ID | ID ist die Lease-ID der Lease. | int64 |
| keys | keys wird auf true gesetzt, um alle dieser Lease zugeordneten Schlüssel abzufragen. | bool |
Nachricht LeaseTimeToLiveResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| ID | ID ist die Lease-ID aus der Keepalive-Anfrage. | int64 |
| TTL | TTL ist die verbleibende TTL der Lease in Sekunden; die Lease läuft in weniger als TTL+1 Sekunden ab. | int64 |
| grantedTTL | GrantedTTL ist die bei der Erstellung oder Verlängerung der Lease anfänglich gewährte Zeit in Sekunden. | int64 |
| keys | Keys ist die Liste der dieser Lease zugeordneten Schlüssel. | (Slice von) bytes |
Nachricht Member (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ID | ID ist die Mitglieds-ID dieses Mitglieds. | uint64 |
| name | name ist der menschenlesbare Name des Mitglieds. Ist das Mitglied nicht gestartet, ist name eine leere Zeichenfolge. | string |
| peerURLs | peerURLs ist die Liste der URLs, die das Mitglied dem Cluster zur Kommunikation bereitstellt. | (Slice von) string |
| clientURLs | clientURLs ist die Liste der URLs, die das Mitglied Clients zur Kommunikation bereitstellt. Ist das Mitglied nicht gestartet, ist clientURLs leer. | (Slice von) string |
| isLearner | isLearner gibt an, ob das Mitglied ein Raft-Learner ist. | bool |
Nachricht MemberAddRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| peerURLs | peerURLs ist die Liste der URLs, die das hinzugefügte Mitglied zur Kommunikation mit dem Cluster verwendet. | (Slice von) string |
| isLearner | isLearner gibt an, ob das hinzugefügte Mitglied ein Raft-Learner ist. | bool |
Nachricht MemberAddResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| member | member enthält die Mitgliedsinformationen des hinzugefügten Mitglieds. | Member |
| members | members ist eine Liste aller Mitglieder nach dem Hinzufügen des neuen Mitglieds. | (Slice von) Member |
Nachricht MemberListRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| linearizable | bool |
Nachricht MemberListResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| members | members ist eine Liste aller dem Cluster zugeordneten Mitglieder. | (Slice von) Member |
Nachricht MemberPromoteRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ID | ID ist die Mitglieds-ID des hochzustufenden Mitglieds. | uint64 |
Nachricht MemberPromoteResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| members | members ist eine Liste aller Mitglieder nach der Hochstufung des Mitglieds. | (Slice von) Member |
Nachricht MemberRemoveRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ID | ID ist die Mitglieds-ID des zu entfernenden Mitglieds. | uint64 |
Nachricht MemberRemoveResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| members | members ist eine Liste aller Mitglieder nach dem Entfernen des Mitglieds. | (Slice von) Member |
Nachricht MemberUpdateRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ID | ID ist die Mitglieds-ID des zu aktualisierenden Mitglieds. | uint64 |
| peerURLs | peerURLs ist die neue Liste der URLs, die das Mitglied zur Kommunikation mit dem Cluster verwendet. | (Slice von) string |
Nachricht MemberUpdateResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| members | members ist eine Liste aller Mitglieder nach der Aktualisierung des Mitglieds. | (Slice von) Member |
Nachricht MoveLeaderRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| targetID | targetID ist die Knoten-ID des neuen Leaders. | uint64 |
Nachricht MoveLeaderResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Nachricht PutRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| key | key ist der Schlüssel als Bytes, der in den Schlüssel-Wert-Speicher geschrieben werden soll. | bytes |
| value | value ist der Wert als Bytes, der dem Schlüssel im Schlüssel-Wert-Speicher zugeordnet werden soll. | bytes |
| lease | lease ist die Lease-ID, die dem Schlüssel im Schlüssel-Wert-Speicher zugeordnet werden soll. Der Lease-Wert 0 bedeutet, dass keine Lease zugeordnet ist. | int64 |
| prev_kv | Ist prev_kv gesetzt, ruft etcd vor der Änderung das vorherige Schlüssel-Wert-Paar ab. Dieses wird in der Put-Antwort zurückgegeben. | bool |
| ignore_value | Ist ignore_value gesetzt, aktualisiert etcd den Schlüssel mit seinem aktuellen Wert. Wenn der Schlüssel nicht existiert, wird ein Fehler zurückgegeben. | bool |
| ignore_lease | Ist ignore_lease gesetzt, aktualisiert etcd den Schlüssel mit seiner aktuellen Lease. Wenn der Schlüssel nicht existiert, wird ein Fehler zurückgegeben. | bool |
Nachricht PutResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| prev_kv | Ist prev_kv in der Anfrage gesetzt, wird das vorherige Schlüssel-Wert-Paar zurückgegeben. | mvccpb.KeyValue |
Nachricht RangeRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| key | key ist der erste Schlüssel des Bereichs. Ist range_end nicht angegeben, sucht die Anfrage nur nach key. | bytes |
| range_end | range_end ist die obere Grenze des angeforderten Bereichs [key, range_end). Ist range_end ‘\0’, umfasst der Bereich alle Schlüssel >= key. Ist range_end key plus eins, etwa “aa”+1 == “ab” oder “a\xff”+1 == “b”, ruft die Bereichsanfrage alle Schlüssel mit dem Präfix key ab. Sind key und range_end beide ‘\0’, gibt die Bereichsanfrage alle Schlüssel zurück. | bytes |
| limit | limit begrenzt die Anzahl der für die Anfrage zurückgegebenen Schlüssel. Der Wert 0 bedeutet keine Begrenzung. | int64 |
| revision | revision ist der für den Bereich zu verwendende Zeitpunkt im Schlüssel-Wert-Speicher. Ist revision kleiner oder gleich null, bezieht sich der Bereich auf den neuesten Stand des Schlüssel-Wert-Speichers. Wurde die Revision bereits kompaktiert, wird ErrCompacted zurückgegeben. | int64 |
| sort_order | sort_order ist die Reihenfolge der zurückgegebenen sortierten Ergebnisse. | SortOrder |
| sort_target | sort_target ist das Schlüssel-Wert-Feld, nach dem sortiert wird. | SortTarget |
| serializable | serializable legt fest, dass die Bereichsanfrage serialisierbare, auf das Mitglied beschränkte Lesezugriffe verwendet. Bereichsanfragen sind standardmäßig linearisierbar. Linearisierbare Anfragen haben eine höhere Latenz und einen geringeren Durchsatz als serialisierbare Anfragen, spiegeln aber den aktuellen Konsens des Clusters wider. Für bessere Leistung auf Kosten möglicherweise veralteter Leseergebnisse wird eine serialisierbare Bereichsanfrage lokal bearbeitet, ohne einen Konsens mit anderen Clusterknoten herstellen zu müssen. | bool |
| keys_only | Wenn keys_only gesetzt ist, werden nur die Schlüssel und nicht die Werte zurückgegeben. | bool |
| count_only | Wenn count_only gesetzt ist, wird nur die Anzahl der Schlüssel im Bereich zurückgegeben. | bool |
| min_mod_revision | min_mod_revision ist die Untergrenze für die Änderungsrevisionen der zurückgegebenen Schlüssel. Alle Schlüssel mit kleineren Änderungsrevisionen werden herausgefiltert. | int64 |
| max_mod_revision | max_mod_revision ist die Obergrenze für die Änderungsrevisionen der zurückgegebenen Schlüssel. Alle Schlüssel mit größeren Änderungsrevisionen werden herausgefiltert. | int64 |
| min_create_revision | min_create_revision ist die Untergrenze für die Erstellungsrevisionen der zurückgegebenen Schlüssel. Alle Schlüssel mit kleineren Erstellungsrevisionen werden herausgefiltert. | int64 |
| max_create_revision | max_create_revision ist die Obergrenze für die Erstellungsrevisionen der zurückgegebenen Schlüssel. Alle Schlüssel mit größeren Erstellungsrevisionen werden herausgefiltert. | int64 |
Nachricht RangeResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| kvs | kvs ist die Liste der Schlüssel-Wert-Paare, die der Bereichsanfrage entsprechen. Bei einer Anfrage nach count ist kvs leer. | (Slice von) mvccpb.KeyValue |
| more | more gibt an, ob im angeforderten Bereich weitere Schlüssel zurückzugeben sind. | bool |
| count | count wird auf Anfrage auf die tatsächliche Anzahl der Schlüssel im Bereich gesetzt. Anders als Kvs bleibt es von Begrenzungen und Filtern wie Min/Max, Create/Modify und Revisions unbeeinflusst und gibt die vollständige Anzahl im angegebenen Bereich wieder. | int64 |
Nachricht RequestOp (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| request | request ist eine Vereinigung der von einer Transaktion akzeptierten Anfragetypen. | oneof |
| request_range | RangeRequest | |
| request_put | PutRequest | |
| request_delete_range | DeleteRangeRequest | |
| request_txn | TxnRequest |
Nachricht ResponseHeader (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| cluster_id | cluster_id ist die ID des Clusters, der die Antwort gesendet hat. | uint64 |
| member_id | member_id ist die ID des Mitglieds, das die Antwort gesendet hat. | uint64 |
| revision | revision ist die Revision des Schlüssel-Wert-Speichers zum Zeitpunkt der Anwendung der Anfrage. Bei Aufrufen ohne Zugriff auf den Schlüssel-Wert-Speicher ist sie nicht gesetzt und daher 0. Bei Watch-Fortschrittsantworten zeigt header.revision den Fortschritt an. Alle künftig in diesem Stream empfangenen Ereignisse haben garantiert eine höhere Revisionsnummer als header.revision. | int64 |
| raft_term | raft_term ist der Raft-Term zum Zeitpunkt der Anwendung der Anfrage. | uint64 |
Nachricht ResponseOp (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| response | response ist eine Vereinigung der von einer Transaktion zurückgegebenen Antworttypen. | oneof |
| response_range | RangeResponse | |
| response_put | PutResponse | |
| response_delete_range | DeleteRangeResponse | |
| response_txn | TxnResponse |
Nachricht SnapshotRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
Nachricht SnapshotResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | header enthält die aktuellen Informationen zum Schlüssel-Wert-Speicher. Der erste Header im Snapshot-Stream gibt den Zeitpunkt des Snapshots an. | ResponseHeader |
| remaining_bytes | remaining_bytes ist die Anzahl der Blob-Bytes, die nach dieser Nachricht noch gesendet werden | uint64 |
| blob | blob enthält den nächsten Teil des Snapshots im Snapshot-Stream. | bytes |
| version | Im Snapshot gespeicherte Version des Speicherschemas. Sie wird aus dem lokalen Backend des Mitglieds gelesen und kann von dessen Binärversion abweichen. Gibt an, welche etcd-Speicherversion beim Wiederherstellen des Snapshots unterstützt werden muss. | string |
Nachricht StatusRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
Nachricht StatusResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| version | version ist die Binärversion des antwortenden etcd-Mitglieds. Die Version des Speicherschemas wird separat in storageVersion angegeben. | string |
| dbSize | dbSize ist die physisch zugewiesene Größe der Backend-Datenbank des antwortenden Mitglieds in Bytes. | int64 |
| leader | leader ist die Mitglieds-ID, die das antwortende Mitglied für den aktuellen Leader hält. | uint64 |
| raftIndex | raftIndex ist der aktuelle bestätigte Raft-Index des antwortenden Mitglieds. | uint64 |
| raftTerm | raftTerm ist der aktuelle Raft-Term des antwortenden Mitglieds. | uint64 |
| raftAppliedIndex | raftAppliedIndex ist der aktuelle angewendete Raft-Index des antwortenden Mitglieds. | uint64 |
| errors | errors enthält Alarm- und Zustandsinformationen sowie den Status. | (Slice von) string |
| dbSizeInUse | dbSizeInUse ist die logisch verwendete Größe der Backend-Datenbank des antwortenden Mitglieds in Bytes. | int64 |
| isLearner | isLearner gibt an, ob das Mitglied ein Raft-Learner ist. | bool |
| storageVersion | storageVersion ist die Version der db-Datei. Sie kann gegenüber der angestrebten Clusterversion verzögert aktualisiert werden. | string |
| dbSizeQuota | dbSizeQuota ist das konfigurierte etcd-Speicherkontingent in Bytes, also der über die Option –quota-backend-bytes an die etcd-Instanz übergebene Wert | int64 |
| downgradeInfo | downgradeInfo gibt an, ob ein Downgrade-Vorgang läuft. | DowngradeInfo |
Nachricht TxnRequest (api/etcdserverpb/rpc.proto)
Aus dem Google-PaxosDB-Papier: Unsere Implementierung beruht auf einer leistungsfähigen Grundoperation namens MultiOp. Alle anderen Datenbankoperationen außer der Iteration sind als einzelner MultiOp-Aufruf implementiert. Eine MultiOp wird atomar angewendet und besteht aus drei Komponenten: 1. Einer Liste von Prüfungen namens guard. Jede Prüfung in guard prüft einen einzelnen Datenbankeintrag. Sie kann prüfen, ob ein Wert fehlt oder vorhanden ist, oder ihn mit einem angegebenen Wert vergleichen. Zwei verschiedene Prüfungen in guard können denselben oder unterschiedliche Datenbankeinträge betreffen. Alle Prüfungen in guard werden ausgeführt, und MultiOp gibt die Ergebnisse zurück. Sind alle Prüfungen wahr, führt MultiOp t op aus (siehe Punkt 2 unten), andernfalls f op (siehe Punkt 3 unten). 2. Einer Liste von Datenbankoperationen namens t op. Jede Operation ist eine Einfüge-, Lösch- oder Suchoperation und betrifft einen einzelnen Datenbankeintrag. Zwei verschiedene Operationen können denselben oder unterschiedliche Datenbankeinträge betreffen. Diese Operationen werden ausgeführt, wenn guard true ergibt. 3. Einer Liste von Datenbankoperationen namens f op. Wie t op, wird jedoch ausgeführt, wenn guard false ergibt.
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| compare | compare ist eine Liste von Prädikaten, die eine Konjunktion von Bedingungen repräsentiert. Sind die Vergleiche erfolgreich, werden die success-Anfragen der Reihe nach verarbeitet, und die Antwort enthält deren Antworten in derselben Reihenfolge. Schlagen die Vergleiche fehl, werden die failure-Anfragen der Reihe nach verarbeitet, und die Antwort enthält deren Antworten in derselben Reihenfolge. | (Slice von) Compare |
| success | success ist eine Liste von Anfragen, die angewendet werden, wenn compare true ergibt. | (Slice von) RequestOp |
| failure | failure ist eine Liste von Anfragen, die angewendet werden, wenn compare false ergibt. | (Slice von) RequestOp |
Nachricht TxnResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| succeeded | succeeded wird auf true gesetzt, wenn compare true ergab, andernfalls auf false. | bool |
| responses | responses ist eine Liste von Antworten auf die Ergebnisse der Anwendung von success, falls succeeded true ist, beziehungsweise failure, falls succeeded false ist. | (Slice von) ResponseOp |
Nachricht WatchCancelRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| watch_id | watch_id ist die ID des abzubrechenden Watchers, damit keine weiteren Ereignisse übertragen werden. | int64 |
Nachricht WatchCreateRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| key | key ist der Schlüssel, der zur Beobachtung registriert werden soll. | bytes |
| range_end | range_end ist das Ende des zu beobachtenden Bereichs [key, range_end). Ist range_end nicht angegeben, wird nur das Argument key beobachtet. Ist range_end gleich ‘\0’, werden alle Schlüssel größer oder gleich dem Argument key beobachtet. Ist range_end gleich dem angegebenen Schlüssel plus eins, werden alle Schlüssel mit diesem Präfix, also dem angegebenen Schlüssel, beobachtet. | bytes |
| start_revision | start_revision ist eine optionale Revision, ab der einschließlich beobachtet wird. Ohne start_revision beginnt die Beobachtung „jetzt“. | int64 |
| progress_notify | Wenn progress_notify gesetzt ist und keine aktuellen Ereignisse vorliegen, sendet der etcd-Server regelmäßig eine WatchResponse ohne Ereignisse an den neuen Watcher. Das ist nützlich, wenn Clients einen unterbrochenen Watcher ab einer kürzlich bekannt gewordenen Revision wiederherstellen möchten. Der etcd-Server kann anhand der aktuellen Last entscheiden, wie häufig er Benachrichtigungen sendet. | bool |
| filters | filters filtert die Ereignisse serverseitig, bevor sie an den Watcher zurückgesendet werden. | (Slice von) FilterType |
| prev_kv | Ist prev_kv gesetzt, erhält der erstellte Watcher den vorherigen KV vor dem Ereignis. Wurde der vorherige KV bereits kompaktiert, wird nichts zurückgegeben. | bool |
| watch_id | Wird watch_id angegeben und ist ungleich null, wird sie diesem Watcher zugewiesen. Da das Erstellen eines Watchers in etcd kein synchroner Vorgang ist, lässt sich damit beim Erstellen mehrerer Watcher im selben Stream die richtige Reihenfolge sicherstellen. Wird ein Watcher mit einer im Stream bereits verwendeten ID erstellt, wird ein Fehler zurückgegeben. | int64 |
| fragment | fragment ermöglicht das Aufteilen großer Revisionen auf mehrere Watch-Antworten. | bool |
Nachricht WatchProgressRequest (api/etcdserverpb/rpc.proto)
Fordert an, dass der Fortschrittsstatus eines Watch-Streams so bald wie möglich im Watch-Antwortstream gesendet wird.
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
Nachricht WatchRequest (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| request_union | request_union ist eine Anfrage zum Erstellen eines neuen Watchers oder zum Abbrechen eines vorhandenen Watchers. | oneof |
| create_request | WatchCreateRequest | |
| cancel_request | WatchCancelRequest | |
| progress_request | WatchProgressRequest |
Nachricht WatchResponse (api/etcdserverpb/rpc.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| watch_id | watch_id ist die ID des Watchers, zu dem die Antwort gehört. | int64 |
| created | created wird auf true gesetzt, wenn die Antwort zu einer Anfrage zum Erstellen eines Watches gehört. Der Client sollte watch_id speichern und die Ereignisse für den erstellten Watcher im selben Stream erwarten. Alle an diesen Watcher gesendeten Ereignisse enthalten dieselbe watch_id. | bool |
| canceled | canceled wird auf true gesetzt, wenn die Antwort zu einer Anfrage zum Abbrechen eines Watches gehört oder start_revision bereits kompaktiert wurde. An den abgebrochenen Watcher werden keine weiteren Ereignisse gesendet. | bool |
| compact_revision | compact_revision wird auf den kleinsten Index gesetzt, wenn ein Watcher versucht, einen bereits kompaktierten Index zu beobachten. Dies geschieht beim Erstellen eines Watchers an einer kompaktierten Revision oder wenn der Watcher den Fortschritt des Schlüssel-Wert-Speichers nicht einholen kann. Der Client sollte den Watcher als abgebrochen behandeln und nicht erneut versuchen, einen Watcher mit derselben start_revision zu erstellen. | int64 |
| cancel_reason | cancel_reason gibt den Grund für den Abbruch des Watchers an. | string |
| fragment | fragment ist true, wenn eine große Watch-Antwort auf mehrere Antworten aufgeteilt wurde. | bool |
| events | (Slice von) mvccpb.Event |
Nachricht Event (api/mvccpb/kv.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| type | type ist die Art des Ereignisses. Ist type ein PUT, wurden neue Daten unter dem Schlüssel gespeichert. Ist type ein DELETE, wurde der Schlüssel gelöscht. | EventType |
| kv | kv enthält den KeyValue für das Ereignis. Ein PUT-Ereignis enthält das aktuelle kv-Paar. Ein PUT-Ereignis mit kv.Version=1 zeigt die Erstellung eines Schlüssels an. Ein DELETE/EXPIRE-Ereignis enthält den gelöschten Schlüssel, dessen Änderungsrevision auf die Revision der Löschung gesetzt ist. | KeyValue |
| prev_kv | prev_kv enthält das Schlüssel-Wert-Paar vor dem Ereignis. | KeyValue |
Nachricht KeyValue (api/mvccpb/kv.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| key | key ist der Schlüssel als Bytes. Ein leerer Schlüssel ist nicht zulässig. | bytes |
| create_revision | create_revision ist die Revision der letzten Erstellung dieses Schlüssels. | int64 |
| mod_revision | mod_revision ist die Revision der letzten Änderung dieses Schlüssels. | int64 |
| version | version ist die Version des Schlüssels. Eine Löschung setzt die Version auf null zurück, und jede Änderung des Schlüssels erhöht seine Version. | int64 |
| value | value ist der unter dem Schlüssel gespeicherte Wert als Bytes. | bytes |
| lease | lease ist die ID der dem Schlüssel zugeordneten Lease. Wenn diese Lease abläuft, wird der Schlüssel gelöscht. Ist lease 0, ist dem Schlüssel keine Lease zugeordnet. | int64 |
Nachricht Lease (server/lease/leasepb/lease.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| ID | int64 | |
| TTL | int64 | |
| RemainingTTL | int64 |
Nachricht LeaseInternalRequest (server/lease/leasepb/lease.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| LeaseTimeToLiveRequest | etcdserverpb.LeaseTimeToLiveRequest |
Nachricht LeaseInternalResponse (server/lease/leasepb/lease.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| LeaseTimeToLiveResponse | etcdserverpb.LeaseTimeToLiveResponse |
Nachricht Permission (api/authpb/auth.proto)
Permission ist eine einzelne Entität
| Feld | Beschreibung | Typ |
|---|---|---|
| permType | Type | |
| key | bytes | |
| range_end | bytes |
Nachricht Role (api/authpb/auth.proto)
Role ist ein einzelner Eintrag im Bucket authRoles
| Feld | Beschreibung | Typ |
|---|---|---|
| name | bytes | |
| keyPermission | (Slice von) Permission |
Nachricht User (api/authpb/auth.proto)
User ist ein einzelner Eintrag im Bucket authUsers
| Feld | Beschreibung | Typ |
|---|---|---|
| name | bytes | |
| password | bytes | |
| roles | (Slice von) string | |
| options | UserAddOptions |
Nachricht UserAddOptions (api/authpb/auth.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| no_password | bool |
10 - API-Referenz: Nebenläufigkeit
Diese API-Referenz wird automatisch aus den angegebenen .proto-Dateien erzeugt.
Dienst Lock (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)
Der Lock-Dienst stellt clientseitige Sperrfunktionen als gRPC-Schnittstelle bereit.
| Methode | Anfragetyp | Antworttyp | Beschreibung |
|---|---|---|---|
| Lock | LockRequest | LockResponse | Lock erwirbt eine verteilte gemeinsame Sperre für einen bestimmten Sperrnamen. Bei Erfolg gibt es einen eindeutigen Schlüssel zurück, der so lange existiert, wie der Aufrufer die Sperre hält. Mit diesem Schlüssel und Transaktionen lässt sich zuverlässig sicherstellen, dass etcd nur aktualisiert wird, während der Aufrufer die Sperre besitzt. Die Sperre wird gehalten, bis Unlock für den Schlüssel aufgerufen wird oder die dem Besitzer zugeordnete Lease abläuft. |
| Unlock | UnlockRequest | UnlockResponse | Unlock nimmt einen von Lock zurückgegebenen Schlüssel entgegen und gibt die Sperre frei. Anschließend wird der nächste auf die Sperre wartende Lock-Aufrufer geweckt und erhält die Sperre. |
Nachricht LockRequest (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| name | name ist der Bezeichner der zu erwerbenden verteilten gemeinsamen Sperre. | bytes |
| lease | lease ist die ID der Lease, die dem Besitz der Sperre zugeordnet wird. Läuft die Lease ab oder wird sie widerrufen, während sie die Sperre hält, wird die Sperre automatisch freigegeben. Aufrufe von Lock mit derselben Lease werden als einmaliger Erwerb behandelt; zweimaliges Sperren mit derselben Lease hat keine zusätzliche Wirkung. | int64 |
Nachricht LockResponse (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| header | etcdserverpb.ResponseHeader | |
| key | key ist ein Schlüssel, der in etcd existiert, solange der Lock-Aufrufer die Sperre besitzt. Benutzer sollten diesen Schlüssel nicht ändern, da die Sperre sonst ein undefiniertes Verhalten zeigen kann. | bytes |
Nachricht UnlockRequest (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| key | key ist der von Lock vergebene Schlüssel, der den Besitz der Sperre repräsentiert. | bytes |
Nachricht UnlockResponse (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| header | etcdserverpb.ResponseHeader |
Dienst Election (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
Der Election-Dienst stellt clientseitige Wahlfunktionen als gRPC-Schnittstelle bereit.
| Methode | Anfragetyp | Antworttyp | Beschreibung |
|---|---|---|---|
| Campaign | CampaignRequest | CampaignResponse | Campaign wartet darauf, bei einer Wahl die Führung zu übernehmen, und gibt bei Erfolg einen LeaderKey zurück, der die Führungsrolle repräsentiert. Der LeaderKey kann anschließend verwendet werden, um neue Werte für die Wahl zu veröffentlichen, API-Anfragen durch Transaktionen vom fortbestehenden Besitz der Führungsrolle abhängig zu machen und von der Führungsrolle zurückzutreten. |
| Proclaim | ProclaimRequest | ProclaimResponse | Proclaim ersetzt den vom Leader veröffentlichten Wert durch einen neuen Wert. |
| Leader | LeaderRequest | LeaderResponse | Leader gibt den aktuell für die Wahl veröffentlichten Wert zurück, sofern vorhanden. |
| Observe | LeaderRequest | LeaderResponse | Observe überträgt die von den gewählten Leadern veröffentlichten Werte in ihrer Reihenfolge als Stream. |
| Resign | ResignRequest | ResignResponse | Resign gibt die Führungsrolle der Wahl frei, sodass andere Kandidaten sie übernehmen können. |
Nachricht CampaignRequest (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| name | name ist der Bezeichner der Wahl, für die die Kandidatur gilt. | bytes |
| lease | lease ist die ID der Lease, die der Führungsrolle der Wahl zugeordnet ist. Läuft die Lease vor dem Rücktritt ab oder wird sie widerrufen, geht die Führungsrolle auf den nächsten Kandidaten über, sofern vorhanden. | int64 |
| value | value ist der anfänglich veröffentlichte Wert, der gesetzt wird, wenn der Kandidat die Wahl gewinnt. | bytes |
Nachricht CampaignResponse (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| header | etcdserverpb.ResponseHeader | |
| leader | leader beschreibt die Ressourcen, die zum Halten der Führungsrolle der Wahl verwendet werden. | LeaderKey |
Nachricht LeaderKey (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| name | name ist der Wahlbezeichner, der dem Schlüssel für die Führungsrolle entspricht. | bytes |
| key | key ist ein opaker Schlüssel, der den Besitz der Führungsrolle der Wahl repräsentiert. Wird der Schlüssel gelöscht, geht die Führungsrolle verloren. | bytes |
| rev | rev ist die Erstellungsrevision des Schlüssels. In Transaktionen lässt sich damit der Besitz der Führungsrolle prüfen, indem die Erstellungsrevision des Schlüssels mit rev verglichen wird. | int64 |
| lease | lease ist die Lease-ID des gewählten Leaders. | int64 |
Nachricht LeaderRequest (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| name | name ist der Wahlbezeichner für die Informationen zur Führungsrolle. | bytes |
Nachricht LeaderResponse (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| header | etcdserverpb.ResponseHeader | |
| kv | kv ist das Schlüssel-Wert-Paar, das die neueste Aktualisierung des Leaders repräsentiert. | mvccpb.KeyValue |
Nachricht ProclaimRequest (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| leader | leader repräsentiert den Besitz der Führungsrolle der Wahl. | LeaderKey |
| value | value ist eine Aktualisierung, die den aktuellen Wert des Leaders überschreiben soll. | bytes |
Nachricht ProclaimResponse (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| header | etcdserverpb.ResponseHeader |
Nachricht ResignRequest (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| leader | leader ist die Führungsrolle, die durch den Rücktritt aufgegeben werden soll. | LeaderKey |
Nachricht ResignResponse (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| header | etcdserverpb.ResponseHeader |
Nachricht Event (api/mvccpb/kv.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| type | type ist die Art des Ereignisses. Ist type ein PUT, wurden neue Daten unter dem Schlüssel gespeichert. Ist type ein DELETE, wurde der Schlüssel gelöscht. | EventType |
| kv | kv enthält den KeyValue für das Ereignis. Ein PUT-Ereignis enthält das aktuelle kv-Paar. Ein PUT-Ereignis mit kv.Version=1 zeigt die Erstellung eines Schlüssels an. Ein DELETE/EXPIRE-Ereignis enthält den gelöschten Schlüssel, dessen Änderungsrevision auf die Revision der Löschung gesetzt ist. | KeyValue |
| prev_kv | prev_kv enthält das Schlüssel-Wert-Paar vor dem Ereignis. | KeyValue |
Nachricht KeyValue (api/mvccpb/kv.proto)
| Feld | Beschreibung | Typ |
|---|---|---|
| key | key ist der Schlüssel als Bytes. Ein leerer Schlüssel ist nicht zulässig. | bytes |
| create_revision | create_revision ist die Revision der letzten Erstellung dieses Schlüssels. | int64 |
| mod_revision | mod_revision ist die Revision der letzten Änderung dieses Schlüssels. | int64 |
| version | version ist die Version des Schlüssels. Eine Löschung setzt die Version auf null zurück, und jede Änderung des Schlüssels erhöht seine Version. | int64 |
| value | value ist der unter dem Schlüssel gespeicherte Wert als Bytes. | bytes |
| lease | lease ist die ID der dem Schlüssel zugeordneten Lease. Wenn diese Lease abläuft, wird der Schlüssel gelöscht. Ist lease 0, ist dem Schlüssel keine Lease zugeordnet. | int64 |