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

Beispielcode zur Implementierung einer QR-Code-Scanbox mit CSS

Normalerweise haben wir ein Scan-Feld, wenn wir d...

Detaillierte Erklärung zur Verwendung des <meta>-Tags in HTML

Wenn wir möchten, dass mehr Leute die von uns ers...

Detaillierte Schritte zur Installation von MySQL 8.0.18-winx64 unter Win10

1. Gehen Sie zunächst auf die offizielle Website,...

jQuery zum Erzielen eines gleitenden Treppeneffekts

In diesem Artikel wird der spezifische Code von j...

Durch das flexible Layout können Unterelemente ihre eigene Höhe beibehalten

Beim Verwenden des Flex-Layouts werden Sie festst...

40 Schriftarten, empfohlen für berühmte Website-Logos

Wissen Sie, welche Schriftarten in den Logo-Desig...

Redo-Dateiwartungsmethode der InnoDB-Engine

Wenn Sie die Größe und Anzahl der InnoDB-Redo-Log...

Mit JS ein kleines Flugzeugkriegsspiel implementieren

In diesem Artikelbeispiel wird der spezifische JS...

Warum sollten MySQL-Felder NOT NULL verwenden?

Ich habe vor Kurzem in einer neuen Firma angefang...

HTML-Multimediaanwendung: Einfügen von Flash-Animationen und Musik in Webseiten

1. Anwendung von Multimedia in HTML_Flash-Animati...

Detaillierte Analyse von MySQL-Deadlock-Problemen

Vorwort Wenn sich unser Geschäft in einem sehr fr...

So zeigen Sie Dateien im Docker-Image an

So zeigen Sie Dateien in einem Docker-Image an 1....

Vues Leitfaden zu Fallstricken bei der Verwendung von Drosselungsfunktionen

Vorwort In einem üblichen Geschäftsszenario müsse...