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

Detailliertes Beispiel für das Datenbankbetriebsobjektmodell in Spring jdbc

Detailliertes Beispiel für das Datenbankbetriebso...

Nginx kompiliert nginx - neues Modul hinzufügen

1. Vorhandene Module anzeigen /usr/local/nginx/sb...

MySQL: Datenintegrität

Die Datenintegrität wird in Entitätsintegrität, D...

So erstellen Sie eine Testdatenbank mit zig Millionen Testdaten in MySQL

Manchmal müssen Sie basierend auf der offiziell v...

Tutorial zum Anzeigen und Ändern von MySQL-Zeichensätzen

1. Überprüfen Sie den Zeichensatz 1. Überprüfen S...

Ein Beispiel für die Berechnungsfunktion calc in CSS im Website-Layout

calc ist eine Funktion in CSS, die zum Berechnen ...

Beispiel einer Autorisierungsüberprüfungsmethode von Nest.js

Inhaltsverzeichnis 0x0 Einführung 0x1 RBAC-Implem...

Docker-Compose-Installation DB2-Datenbankbetrieb

Es ist mühsam, die db2-Datenbank direkt auf dem H...