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

Vue verwendet drei Methoden zum Aktualisieren der Seite

Beim Schreiben von Projekten stoßen wir häufig au...

Lösung zum Vergessen des Root-Passworts der MySQL 5.7- und 8.0-Datenbank

Hinweis: Um das Root-Passwort in MySQL 5.7 zu kna...

React-Internationalisierung – Verwendung von react-intl

Wie erreicht man Internationalisierung in React? ...

Detaillierte Erklärung der neuen Erfahrung von Vite

Was ist Vite? (Es ist ein neues Spielzeug im Fron...

Beispiel und Update für die Erstellung von HTML5+CSS3-Headern

Beim letzten Mal haben wir uns zwei Header-Layout...

Detaillierte Erklärung der allgemeinen Verwendung von MySQL-Abfragebedingungen

Dieser Artikel veranschaulicht anhand von Beispie...

Beispielcode zum Erzielen eines Aushöhlungseffekts mit reinem CSS

Ich habe kürzlich den Aushöhlungseffekt untersuch...

Detaillierte Erklärung der CSS-Textdekoration Textdekoration & Texthervorhebung

In CSS ist Text eines der häufigsten Dinge, mit d...

So stoppen Sie die CSS-Animation mittendrin und behalten die Haltung bei

Vorwort Ich bin einmal auf ein schwieriges Proble...