Beispiel zum Erstellen eines MySQL-Clusters mit Docker

Beispiel zum Erstellen eines MySQL-Clusters mit Docker

Grundlegende Anweisungen für Docker:

Update-Pakete

yum -y aktualisieren

Installieren Sie die virtuelle Docker-Maschine (CentOS 7).

yum install -y Docker

Ausführen, Neustarten und Herunterfahren der virtuellen Docker-Maschine

Dienst Docker starten
Dienst Docker Stopp

Suchspiegel

Docker-Suche nach Image-Namen

Bild herunterladen

Docker-Pull-Image-Name

Spiegel anzeigen

Docker-Bilder

Löschen eines Bildes

Docker-RMI-Image-Name

Ausführen des Containers

Docker Run - Startparameter-Imagename

Containerliste anzeigen

Docker ps -a

Wenn wir die Java-Umgebung verwenden möchten, können wir Folgendes tun:

suchen:
[root@VM_71_225_centos ~]# Docker-Suche Java
INDEX NAME BESCHREIBUNG STERNE OFFIZIELL AUTOMATISIERT
docker.io docker.io/node Node.js ist eine JavaScript-basierte Plattform für... 5752 [OK]
docker.io docker.io/tomcat Apache Tomcat ist eine Open-Source-Implementierung … 1891 [OK]
docker.io docker.io/java Java ist eine gleichzeitige, klassenbasierte und objektbasierte ... 1745 [OK]
docker.io docker.io/openjdk OpenJDK ist eine Open-Source-Implementierung ... 1031 [OK]
herunterladen:
[root@VM_71_225_centos ~]# docker pull docker.io/java
Standard-Tag verwenden: latest
Es wird versucht, das Repository docker.io/library/java abzurufen ...
aktuell: Abrufen von docker.io/library/java
5040bd298390: Herunterladen [=> ] 1,572 MB/51,36 MB
laufen:
[root@VM_71_225_centos ~]# docker run -it --name myjava docker.io/java bash
root@25623e12b759:/# java


-i: Führen Sie den Container im interaktiven Modus aus, normalerweise mit -t verwendet;


-t: weist dem Container ein Pseudo-Eingabeterminal neu zu, wird normalerweise zusammen mit -i verwendet;

Installieren Sie den PXC-Cluster (ich werde hier nicht auf die Vor- und Nachteile des MySQL PXC-Clusters und des Replikationsclusters eingehen und die PXC-Clusterlösung wählen [Backup mit mehreren Knoten und starke Verbindung]):

PXC-Image installieren

Docker-Pull Percona/Percona-XtraDB-Cluster

Lokales Bild anzeigen

[root@VM_71_225_centos ~]# Docker-Bilder
REPOSITORY TAG BILD ID ERSTELLT GRÖSSE
docker.io/hello-world latest e38bc07ac18e vor 2 Monaten 1,85 kB
docker.io/percona/percona-xtradb-cluster latest f1439de62087 vor 3 Monaten 413 MB
docker.io/java latest d23bdf5b1b1b vor 17 Monaten 643 MB

docker.io/percona/percona-xtradb-cluster ist zu lang, benennen Sie es daher um:

[root@VM_71_225_centos ~]# Docker-Tag Percona/Percona-Xtradb-Cluster pxc
[root@VM_71_225_centos ~]# Docker-Bilder
REPOSITORY TAG BILD ID ERSTELLT GRÖSSE
docker.io/hello-world latest e38bc07ac18e vor 2 Monaten 1,85 kB
docker.io/percona/percona-xtradb-cluster latest f1439de62087 vor 3 Monaten 413 MB
pxc latest f1439de62087 vor 3 Monaten 413 MB
docker.io/java latest d23bdf5b1b1b vor 17 Monaten 643 MB

Erstellen Sie das Netzwerksegment net1:

Docker-Netzwerk erstellen --subnet=172.18.0.0/16 net1

Erstellen Sie fünf Datenvolumes (pxc kann nicht direkt auf die Daten des Hostcomputers zugreifen, erstellen Sie daher fünf Docker-Datenvolumes).

Docker-Volume erstellen v1
Docker-Volume erstellen v2
Docker-Volume erstellen v3
Docker-Volume erstellen v4
Docker-Volume erstellen v5

Zeigen Sie den Speicherort des Datenträgers an:

[root@VM_71_225_centos-Code]# Docker-Inspektion v1
[
  {
    "Treiber": "lokal",
    "Beschriftungen": {},
    "Einhängepunkt": "/var/lib/docker/volumes/v1/_data",
    "Name": "v1",
    "Optionen": {},
    "Geltungsbereich": "lokal"
  }
]

Erstellen Sie einen PXC-Cluster mit fünf Knoten

#Erstellen Sie den ersten MySQL-Knoten docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -v v1:/var/lib/mysql -v backup:/data --privileged --name=node1 --net=net1 --ip 172.18.0.2 pxc

Warten Sie 2 Minuten, bevor Sie den zweiten Knoten erstellen. Warten Sie, bis der erste Knoten instanziiert ist, bevor Sie die zweite Knoteninstanz starten, da sie sonst sofort angehalten wird.

Zusätzliche Knoten erstellen:

#Erstellen Sie den zweiten MySQL-Knoten docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v2:/var/lib/mysql -v backup:/data --privileged --name=node2 --net=net1 --ip 172.18.0.3 pxc
#Erstellen Sie den dritten MySQL-Knoten docker run -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v3:/var/lib/mysql --privileged --name=node3 --net=net1 --ip 172.18.0.4 pxc
#Erstellen Sie den vierten MySQL-Knoten docker run -d -p 3309:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v4:/var/lib/mysql --privileged --name=node4 --net=net1 --ip 172.18.0.5 pxc
#Erstellen Sie den fünften MySQL-Knoten docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v5:/var/lib/mysql -v backup:/data --privileged --name=node5 --net=net1 --ip 172.18.0.6 pxc

Testen Sie das Erstellen einer Datenbank auf einem beliebigen MySQL-Knoten:

mysql -h 172.18.0.3 -uroot -pabc123456

mysql> Datenbanktest erstellen;
Abfrage OK, 1 Zeile betroffen (0,03 Sek.)

Melden Sie sich bei anderen Knotendatenbanken an und Sie sehen, dass sie synchronisiert wurden, um einen einfachen MySQL-Cluster zu bilden.

Installieren Sie Haproxy für hohe Verfügbarkeit und Lastausgleich

Ziehen Sie Haproxy

Docker zieht Haproxy

Schreiben der Haproxy-Konfigurationsdatei

vi /home/soft/haproxy.cfg

Die Konfigurationsdateien lauten wie folgt:

weltweit
  #Arbeitsverzeichnis chroot /usr/local/etc/haproxy
  #Protokolldatei, verwenden Sie das lokale Protokollgerät (/var/log/local5) im rsyslog-Dienst, Ebeneninfo
  Protokoll 127.0.0.1 local5 info
  #Daemon-Prozess, der Daemon ausführt
​
Vorgabewerte
  globales Protokoll
  Modus http
  #Protokollformatoption httplog
  #Zeichnen Sie den Heartbeat-Erkennungsdatensatz des Lastausgleichs nicht in der Protokolloption dontlognull auf
  #Verbindungstimeout (Millisekunden)
  Timeout Verbindung 5000
  #Client-Timeout (Millisekunden)
  Timeout-Client 50000
  #Server-Timeout (Millisekunden)
  Timeout-Server 50000
​
#Überwachungsschnittstelle listen admin_stats
  #Überwachung der Schnittstellenzugriffs-IP und der Portbindung 0.0.0.0:8888
  #Zugriffsprotokollmodus http
  #URI relative Adresse Statistik URI /dbs
  #Statistikbericht formatstats realm Global\ statistics
  #Login-Kontoinformationen Statistiken Auth Admin:abc123456
#Datenbank-Lastausgleich, Proxy-MySQL abhören
  #Zugriffs-IP und Port-Bind 0.0.0.0:3306 
  #Netzwerkprotokollmodus TCP
  #Lastausgleichsalgorithmus (Round-Robin-Algorithmus)
  # Polling-Algorithmus: Roundrobin
  #Gewichtsalgorithmus: static-rr
  # Algorithmus für geringste Verbindung: leastconn
  #Quell-IP-Algorithmus anfordern: Quelle 
  Rundenturnier
  #Protokollformatoption tcplog
  #Erstellen Sie einen Haproxy-Benutzer ohne Berechtigungen in MySQL und legen Sie das Kennwort leer. Haproxy verwendet dieses Konto, um die Heartbeat-Erkennung für die MySQL-Datenbankoption mysql-check user haproxy durchzuführen.
  Server MySQL_1 172.18.0.2:3306 Gewicht prüfen 1 maxconn 2000 
  Server MySQL_2 172.18.0.3:3306 Gewicht prüfen 1 maxconn 2000 
  Server MySQL_3 172.18.0.4:3306 Gewicht prüfen 1 maxconn 2000 
  Server MySQL_4 172.18.0.5:3306 Gewicht prüfen 1 maxconn 2000
  Server MySQL_5 172.18.0.6:3306 Gewicht prüfen 1 maxconn 2000
  #Verwenden Sie Keepalive, um tote Links zu erkennen Option tcpka

Erstellen Sie den ersten Haproxy-Lastausgleichsserver

Kopieren Sie den Code wie folgt:
docker run -it -d -p 4001:8888 -p 4002:3306 -v /home/soft/haproxy:/usr/local/etc/haproxy --name h1 --privileged --net=net1 --ip 172.18.0.7 haproxy

Geben Sie den h1-Container ein und starten Sie Haproxy

docker exec -it h1 bash
haproxy -f /usr/local/etc/haproxy/haproxy.cfg

Prüfen Sie, ob der Start erfolgreich war:

Besuchen Sie http://ip:4001/dbs

Installieren Sie Keepalive, um einen Doppelklick-Hot-Standby zu implementieren

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:
  • Detaillierte Erläuterung zum Erstellen einer Mysql-Container- + Tomcat-Container-Verbindungsumgebung über Docker
  • Detaillierte Erklärung zur Verwendung von Docker zum Erstellen von extern zugänglichem MySQL
  • Der gesamte Prozess des Erstellens von MySQL und Mountens von Daten durch Docker

<<:  So verwenden Sie einen SSH-Tunnel, um eine Verbindung zum MySQL-Server herzustellen

>>:  Vue-Ereignisparameter $event = Ereigniswertfall

Artikel empfehlen

So erstellen Sie ein php-nginx-alpine-Image von Grund auf in Docker

Obwohl ich bereits einige Projekte in einer Docke...

MySQL und MySQL Workbench Installations-Tutorial unter Ubuntu

Ubuntu-JDK installieren: [Link] Installieren Sie ...

So implementieren Sie eine steuerbare gepunktete Linie mit CSS

Vorwort Die Verwendung von CSS zum Generieren gep...

Eine gute Möglichkeit, Ihre Designfähigkeiten zu verbessern

Sogenanntes Talent (linke und rechte Gehirnhälfte...

Detaillierte Erläuterung der Verwendung des Linux-Zeitbefehls

1. Befehlseinführung Mit „time“ werden die für di...

Verwenden Sie reines CSS, um einen Switch-Effekt zu erzielen

Zuerst ist die Idee Um diesen Effekt zu erzielen,...

Mehrere Methoden zum Ändern des MySQL-Root-Passworts (empfohlen)

Methode 1: Verwenden Sie den Befehl SET PASSWORD ...

So konvertieren Sie eine Zeichenfolge in JavaScript in eine Zahl

Inhaltsverzeichnis 1.parseInt(Zeichenfolge, Basis...