Schreiben Sie docker-compose.ymlVersion: "3.0" Netzwerke: etcd-net: # Netzwerktreiber: bridge # Bridge-Modus-Volumes: etcd1_data: # Auf dem lokalen Datenträger mit dem Namen Treiber bereitgestellt: local etcd2_Daten: Treiber: lokal etcd3_Daten: Treiber: lokal ### ### etcd Weitere Umgebungskonfigurationen finden Sie unter: https://doczhcn.gitbook.io/etcd/index/index-1/configuration ### Leistungen: etcd1: Bild: bitnami/etcd:latest # Bildcontainername: etcd1 # Containername --name restart: always # Netzwerke immer neu starten: - etcd-net # verwendetes Netzwerk --network Ports: #Portzuordnung -p - "20000:2379" - "20001:2380" Umgebung: # Umgebungsvariablen --env :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::3s::::::333:33333333333333333333ag33333333333333333333333333333 es333333333333333333333333333333 es33 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann dann dann dann aber33333333333333333333 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 dann3 dann3 aber3 dann3 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann nichtie dasen aber aber abersossoss aberstens aberstensss aberten aber abers :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::3s::::::333:33333333333333333333ag33333333333333333333333333333 es333333333333333333333333333333 es33 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann dann dann dann aber33333333333333333333 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 dann3 dann3 aber3 dann3 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann nichtie dasen aber aber abersossoss aberstens aberstensss aberten aber abers ::::::::::: - etcd1_data:/bitnami/etcd # Eingebundenes Datenvolumen etcd2: Bild: bitnami/etcd:latest Containername: etcd2 Neustart: immer Netzwerke: - etcd-Netz Häfen: - „20002:2379“ - „20003:2380“ Umfeld: - ALLOW_NONE_AUTHENTICATION=ja -ETCD_NAME=usw.2 -ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd2:2380 -ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380 -ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 -ETCD_ADVERTISE_CLIENT_URLS=http://etcd2:2379 -ETCD_INITIAL_CLUSTER_TOKEN=usw.-Cluster - ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380 -ETCD_INITIAL_CLUSTER_STATE=neu Bände: - etcd2_data:/bitnami/etcd etcd3: Bild: bitnami/etcd:latest Containername: etcd3 Neustart: immer Netzwerke: - etcd-Netz Häfen: - „20004:2379“ - „20005:2380“ Umfeld: - ALLOW_NONE_AUTHENTICATION=ja -ETCD_NAME=etcd3 - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd3:2380 -ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380 -ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 -ETCD_ADVERTISE_CLIENT_URLS=http://etcd3:2379 -ETCD_INITIAL_CLUSTER_TOKEN=usw.-Cluster - ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380 -ETCD_INITIAL_CLUSTER_STATE=neu Bände: - etcd3_data:/bitnami/etcd Führen Sie docker-compose aus[root@centos8 etcdtest]# Baum . └── docker-compose.yml 0 Verzeichnisse, 1 Datei [root@centos8 etcdtest]# docker-compose up -d [+] Laufen 4/4 ⠿ Netzwerk etcdtest_etcd-net Erstellt 0,1 s ⠿ Container etcd3 gestartet 0,6 s ⠿ Container etcd1 gestartet 0,7 s ⠿ Container etcd2 gestartet 0,7 s [root@centos8 etcdtest]# Überprüfen des Build-Status Überprüfen des Startstatus des Knotens [root@centos8 etcdtest]# docker ps CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN 89469f98491f bitnami/etcd:latest "/opt/bitnami/script..." vor 54 Sekunden Vor 53 Sekunden aktiv 0.0.0.0:20004->2379/tcp, :::20004->2379/tcp, 0.0.0.0:20005->2380/tcp, :::20005->2380/tcp etcd3 5454f5a719a2 bitnami/etcd:latest "/opt/bitnami/script..." vor 54 Sekunden Vor 53 Sekunden aktiv 0.0.0.0:20000->2379/tcp, :::20000->2379/tcp, 0.0.0.0:20001->2380/tcp, :::20001->2380/tcp etcd1 bf989f9512b5 bitnami/etcd:latest "/opt/bitnami/script…" vor 54 Sekunden Vor 53 Sekunden aktiv 0.0.0.0:20002->2379/tcp, :::20002->2379/tcp, 0.0.0.0:20003->2380/tcp, :::20003->2380/tcp etcd2 Anzeigen der bereitgestellten Datenträger [root@centos8 etcdtest]# Docker-Volume ls TREIBERVOLUMENNAME lokale etcdtest_etcd1_data lokale etcdtest_etcd2_data lokale etcdtest_etcd3_data [root@centos8 etcdtest]# Docker inspizieren etcd1 "Reittiere": [ { "Typ": "Volumen", "Name": "etcdtest_etcd1_data", "Quelle": "/var/lib/docker/volumes/etcdtest_etcd1_data/_data", "Ziel": "/bitnami/etcd", "Treiber": "lokal", "Modus": "z", "RW": wahr, "Ausbreitung": "" } ] Testknoten Schreiben Sie einen Schlüssel von etcd1 [root@centos8 etcdtest]# docker exec -it etcd1 bash Ich habe keinen Namen!@5454f5a719a2:/opt/bitnami/etcd$ etcdctl put name "ich bin wxf" OK Lesen Sie einen Wert von etcd2 [wxf@centos8 ~]$ docker exec -it etcd2 bash Ich habe keinen Namen!@bf989f9512b5:/opt/bitnami/etcd$ etcdctl get name Name ich bin wxf Bau erfolgreich! Einfache Interaktion zwischen Golang und etcdPaket Haupt importieren ( "Kontext" "fmt" „go.etcd.io/etcd/client/v3“ "Zeit" ) Funktion main() { cli, err := clientv3.Neu(clientv3.Config{ Endpunkte: []string{"http://192.168.135.10:20000", "http://192.168.135.10:20002", "http://192.168.135.10:20004"}, DialTimeout: 5 * Zeit.Sekunde, }) wenn err != nil { fmt.Printf("Verbindung zu etcd fehlgeschlagen, Fehler: %v\n", Fehler) zurückkehren } cli.Close() verschieben fmt.Println("Verbindung zu etcd erfolgreich hergestellt") cli.Close() verschieben gehe zu Watch (cli) Erstellen (cli) Lesen (cli) Löschen (CLI) Aktualisieren (CLI) wählen {} } Funktion Watch(cli *clientv3.Client) { rch := cli.Watch(context.Background(), "name") // Typ WatchChan <-chan WatchResponse für wresp := Bereich rch { für _, ev := Bereich wresp.Events { fmt.Printf("Typ: %s Schlüssel: %s Wert: %s\n", ev.Typ, ev.Kv.Schlüssel, ev.Kv.Wert) } } fmt.Println("aus") } Funktion Erstellen(cli *clientv3.Client) { // setzen ctx, Abbrechen := Kontext.MitTimeout(Kontext.Hintergrund(), Zeit.Sekunde*5) _, err := cli.Put(ctx, "Name", "wxf") stornieren() wenn err != nil { fmt.Printf("Einfügen in etcd fehlgeschlagen, Fehler: %v\n", Fehler) zurückkehren } } Funktion Lesen(cli *clientv3.Client) { //erhalten ctx, Abbrechen := Kontext.MitTimeout(Kontext.Hintergrund(), Zeit.Sekunde*5) bzw., err := cli.Get(ctx, "Name") stornieren() wenn err != nil { fmt.Printf("Abrufen von etcd fehlgeschlagen, Fehler: %v\n", Fehler) zurückkehren } für _, ev := Bereich bzw. Kvs { fmt.Printf("Typ: %s Schlüssel: %s Wert: %s\n", "LESEN", ev.Schlüssel, ev.Wert) } } Funktion Update(cli *clientv3.Client) { // setzen ctx, Abbrechen := Kontext.MitTimeout(Kontext.Hintergrund(), Zeit.Sekunde*5) _, err := cli.Put(ctx, "Name", "xyy") stornieren() wenn err != nil { fmt.Printf("Einfügen in etcd fehlgeschlagen, Fehler: %v\n", Fehler) zurückkehren } } Funktion Löschen(cli *clientv3.Client) { //entf ctx, Abbrechen := Kontext.MitTimeout(Kontext.Hintergrund(), Zeit.Sekunde*5) _, err := cli.Delete(ctx, "Name") stornieren() wenn err != nil { fmt.Printf("Löschen aus etcd fehlgeschlagen, Fehler: %v\n", Fehler) zurückkehren } }
Dies ist das Ende dieses Artikels über die Implementierungsschritte der Docker-Compose-Bereitstellung eines etcd-Clusters. Weitere relevante Inhalte zur Docker-Compose-Bereitstellung eines etcd-Clusters finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Unsere Gedanken zur Karriere als UI-Ingenieur
>>: Detaillierte Erklärung zur Verwendung von JavaScript-Funktionen
Inhaltsverzeichnis Vorwort Einrichten der Protoko...
Was <fieldset> und <legend> betrifft,...
Verwenden Sie bei der Arbeit mehr Open-Source-Too...
Inhaltsverzeichnis Ereignisschleife Ereignisschle...
Die Inhaltseigenschaft wurde bereits in CSS 2.1 e...
1. Gehen Sie zur offiziellen GraphVis-Website, um...
Inhaltsverzeichnis Erster Blick auf die Wirkung: ...
Hinweis: nginx über brew installiert Stammverzeic...
1. Einleitung Gilt es als Aufwärmen alter Themen,...
1. Um ein PPTP-VPN aufzubauen, müssen Sie Port 17...
Finden Sie das Problem Ich bin vor kurzem bei der...
Verwendung gespeicherter Prozeduren in Parametern...
1. Native Netzwerkanforderung 1. XMLHttpRequest (...
Inhaltsverzeichnis Einrichten einer einfachen HTT...
<br /> CSS-Syntax für Tabellenränder Zu den ...