Methoden und Schritte für die verteilte Bereitstellung von Etcd basierend auf Docker

Methoden und Schritte für die verteilte Bereitstellung von Etcd basierend auf Docker

1. Umweltvorbereitung

1.1 Grundlegende Umgebung

NTP-Konfiguration: ausgelassen #Es wird empfohlen, den NTP-Dienst zu konfigurieren, um die Zeitkonsistenz sicherzustellen

etcd-Version: v3.3.9

Firewall und SELinux: Firewall und SELinux deaktivieren

Name
Adresse
Hostname
Bemerkung
usw.d1
172.24.8.71
etcd1.beispiel.com
Wird zum Speichern relevanter IP-Informationen verwendet
docker01
172.24.8.72
docker01.example.com
docker02
172.24.8.73
docker02.example.com

# hostnamectl set-hostname etcd1.example.com
# hostnamectl set-hostname docker01.example.com
# hostnamectl set-hostname docker02.example.com

Tipp: Der Hostname ist nicht erforderlich.

1.2 Docker-Umgebung

Auf allen oben genannten Knoten ist Docker installiert. Einzelheiten finden Sie unter 002.Docker-Version und -Installation.

2. Bereitstellung von etcd-Knoten

Tipp: Diese Umgebung ist vollständig dockerisiert, d. h. der etcd-Dienst existiert auch in Docker-Form.

2.1 etcd-Grundkonfiguration

# mkdir -p /var/log/etcd/ #Es wird empfohlen, ein Verzeichnis zum Speichern von etcd-Protokollen zu erstellen. # mkdir -p /data/etcd #Es wird empfohlen, ein separates etcd-Datenverzeichnis zu erstellen. # export HOST_1=172.24.8.71 #Legen Sie die IP-Adresse des etcd-Knotens fest.
# export DATA_DIR=/data/etcd #Legen Sie den Cluster-ETCD-Datenknoten fest # REGISTRY=quay.io/coreos/etcd #Es wird empfohlen, dieses Warehouse zu verwenden # ETCD_VERSION=latest #Legen Sie die etcd-Version fest # export NAME_1=etcd1 #Legen Sie den Namen des etcd-Knotens fest
# Docker-Volume erstellen --name etcd-data

Tipp: Alle oben genannten Vorgänge müssen auf allen Knoten durchgeführt werden.

2.3 Starten Sie den Docker etcd-Cluster

[root@etcd1 ~]# Docker ausführen \
 -p 2379:2379 \
 -p 2380:2380 \
 --volume=${DATA_DIR}:/etcd-data \
 --name etcd ${REGISTRY}:${ETCD_VERSION} \
 /usr/local/bin/etcd \
 --data-dir=/etcd-data --name ${NAME_1} \
 --initial-advertise-peer-urls http://${HOST_1}:2380 --listen-peer-urls http://0.0.0.0:2380 \
 --advertise-client-urls http://${HOST_1}:2379 --listen-client-urls http://0.0.0.0:2379 \
 --initial-cluster ${NAME_1}=http://${HOST_1}:2380

Tipp: Das Image quay.io/coreos/etcd darf nicht in China abgerufen werden, kann aber von einem fremden Knoten abgerufen und dann per SCP an den Clusterknoten gesendet werden.

2.4 Bestätigung und Verifizierung

 [root@etcd1 ~]# Docker ps 

 

 [root@etcd1 ~]# docker exec -it bcb96fb0f987 /usr/local/bin/etcdctl Cluster-Gesundheit 

[root@etcd1 ~]# docker exec -it bcb96fb0f987 /usr/local/bin/etcdctl --endpoints=http://${HOST_1}:2379 Mitgliederliste 

Konfiguration mit drei Docker-Hostknoten

3.1 Docker01-Konfiguration

[root@docker01 ~]# vi /etc/sysconfig/docker
OPTIONEN='--cluster-store=etcd://172.24.8.71:2379 --cluster-advertise=172.24.8.72:2379'
[root@docker01 ~]# systemctl Neustart Docker

3.2 Docker02-Konfiguration

[root@docker02 ~]# vi /etc/sysconfig/docker
OPTIONEN='--cluster-store=etcd://172.24.8.71:2379 --cluster-advertise=172.24.8.73:2379'
[root@docker02 ~]# systemctl Neustart Docker

3.3 Erstellen eines Overlay-Netzwerks

[root@docker01 ~]# Docker-Netzwerk erstellen -d Overlay Overlaynet1
418654e0092f5d1c3e4bf2b9ee73cdd22932dd60fecf12d7a3b024818118244b
[root@docker01 ~]# Docker-Netzwerk überprüfen Overlaynet1 

[root@docker02 ~]# Docker-Netzwerk überprüfen Overlaynet1 

Tipp: Überprüfen Sie das auf docker01 erstellte Overlay-Netzwerk auf den Hosts docker01 und docker02. Wenn beide vorhanden sind, bedeutet dies, dass die Netzwerkdaten verteilt und nicht lokal über etcd gespeichert werden.

3.4 Testnetzwerk

[root@docker01 ~]# docker run -d --name Container01 --network overlaynet1 training/webapp python app.py
[root@docker02 ~]# docker run -d --name Container02 --network overlaynet1 training/webapp python app.py
[root@docker01 ~]# docker exec -it 73e984a5528a /bin/bash
root@73e984a5528a:/opt/webapp# ifconfig 

root@73e984a5528a:/opt/webapp# route -n 


[root@docker02 ~]# docker exec -it 89eac9521743 /bin/bash
root@89eac9521743:/opt/webapp# ifconfig 

veranschaulichen:

  • Alle Containerpaare haben zwei Netzwerkkarten, eth0 und eth1;
  • Das Netzwerk von eth1 ist ein internes Netzwerksegment, d. h. der gewöhnliche NAT-Modus.
  • eth0 ist die dem Overlay-Netzwerksegment, also dem Overlay-Netzwerk, zugewiesene IP-Adresse und die MTU beträgt 1450 statt 1500.
  • Nur die Kommunikation zwischen Containern im selben Overlay-Netzwerk erfolgt über eth0 und alle anderen Kommunikationen über eth1.
[root@docker01 ~]# brctl anzeigen 

[root@docker01 ~]# Docker-Netzwerk ls 


Weitere Referenzen:

  • Docker erstellt auf jedem Knoten zwei Linux-Brücken, eine für das Overlay-Netzwerk und eine für das Nicht-Overlay-NAT-Netzwerk (docker_gwbridge).
  • Der Netzwerkverkehr vom Container zu anderen Containern im Overlay-Netzwerk läuft über die Overlay-Netzwerkkarte (eth0) des Containers, und der übrige Netzwerkverkehr läuft über die NAT-Netzwerkkarte (eth1) des Containers.
  • Derzeit liegt der ID-Bereich des von Docker erstellten VXLAN-Tunnels zwischen 256 und 1000, sodass maximal 745 Netzwerke erstellt werden können. Daher ist die für diesen VXLAN-Tunnel in diesem Beispiel verwendete ID 256.
  • Der Docker-VXLAN-Treiber verwendet UDP-Port 4789;
  • Die zugrunde liegende Schicht des Overlay-Netzwerkmodells erfordert zur Nachrichtensynchronisierung ein KV-Speichersystem ähnlich wie Consul oder etcd.
  • Docker-Overlay verwendet kein Multicast;
  • Die Container im Overlay-Netzwerk befinden sich in einem virtuellen großen Layer-2-Netzwerk.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Praktische Möglichkeit zum Erstellen einer verteilten Selenium-Grid-Umgebung mit Docker
  • So verwenden Sie Selenium + Testng, um Webautomatisierung in Docker zu realisieren
  • Beschreiben Sie kurz die Installation der verteilten Zeitreihendatenbank influxDB und die zugehörigen Vorgänge in Docker
  • Beispiel für die Verwendung von Docker Swarm zum Erstellen eines verteilten Crawler-Clusters
  • Tutorial zur Verwendung von Docker zum Implementieren verteilter Anwendungsfunktionen
  • Detaillierte Erläuterung der Bereitstellung einer verteilten Microservice-Engine auf Basis von Docker
  • Detaillierte Erläuterung der Verwendung von Docker zum Erstellen eines verteilten Hadoop-Clusters
  • Erstellen einer verteilten Selenium-Umgebung basierend auf Docker

<<:  Bei der Installation von MySQL5.7.18winX64 unter Windows 10 konnte der Server nicht gestartet werden und es wurde keine Fehlermeldung angezeigt.

>>:  Detailliertes Beispiel zum Abrufen des Maximalwerts jeder Gruppe nach der Gruppierung in MySQL

Artikel empfehlen

Drei Möglichkeiten zum Implementieren eines Textfarbverlaufs in CSS

Bei der Entwicklung von Web-Frontends entwerfen U...

Zeitzonenprobleme mit im Docker-Container bereitgestelltem Django

Inhaltsverzeichnis Zeitzonenkonfiguration in Djan...

JavaScript verwendet Canvas zum Zeichnen von Koordinaten und Linien

In diesem Artikel wird der spezifische Code zur V...

Designbeispiele für Dropdown-Menüs und Schiebemenüs

Ich habe viele Websites gefunden, die Dropdown- od...

Einführung in die JWT-Verifizierung mit Nginx und Lua

Inhaltsverzeichnis Vorwort Lua-Skript nignx.conf-...

Überblick und Einführung in das Linux-Betriebssystem

Inhaltsverzeichnis 1. Was ist ein Betriebssystem?...

Verständnis und Beispielcode des Vue-Standardslots

Inhaltsverzeichnis Was ist ein Slot Grundlegendes...

Häufige Fehler beim Schreiben von HTML-Tags

Wir sollten besser aufpassen, denn die HTML-Poliz...

Zusammenfassung der schnellen Spaltenaddition bei MySQL 8.0 Online DDL

Inhaltsverzeichnis Problembeschreibung Historisch...

CSS zum Erzielen des Effekts einer rotierenden Flip-Card-Animation

Die CSS-Animation des rotierenden Flip-Effekts, d...