Mit der rasanten Entwicklung des Cloud Computing hat die Containertechnologie große Fortschritte bei der Anwendungsbereitstellung und dem Ressourcenmanagement gemacht. Die Datenbank ist der Kern der modernen Softwareentwicklung und verantwortlich für die wichtige Geschäftslogik und Datenspeicherung. Um die Verfügbarkeit der Datenbank zu verbessern, wurde auch die Containerisierungstechnologie in die Datenbankbereitstellung eingeführt.
In diesem Artikel wird erläutert, wie Sie mit Docker und Kubernetes eine hohe Verfügbarkeit der PHP-Datenbankcontainerisierung erreichen.
1. Dockerisierte MySQL-Datenbank
Docker ist ein beliebtes Anwendungscontainerisierungstool, das Anwendungen und ihre Abhängigkeiten einfach in Docker-Images packen und in Containern ausführen kann. Wir können Docker-Images verwenden, um die MySQL-Datenbank zu containerisieren und so ihre Verfügbarkeit zu verbessern.
Erstellen Sie zunächst eine Datei mit dem Namen Dockerfile zum Erstellen des Docker-Images. Die Docker-Datei enthält alle zum Erstellen des Images erforderlichen Anweisungen, einschließlich der Angabe des Basis-Images, des Hinzufügens von Dateien und des Festlegens von Umgebungsvariablen.
FROM mysql:5.7 ADD my.cnf /etc/mysql/my.cnf ENV MYSQL_ROOT_PASSWORD=root
Die FROM-Anweisung gibt das MySQL-Basis-Image an, das wir verwenden werden, die ADD-Anweisung fügt die Datei my.cnf zum Container hinzu und setzt die Umgebungsvariable MYSQL_ROOT_PASSWORD auf root.
Verwenden Sie den folgenden Befehl, um das MySQL-Image zu erstellen:
docker build -t my-mysql .
Die Option -t gibt den Imagenamen als my-mysql an.
Als nächstes verwenden Sie den folgenden Befehl, um das MySQL-Image im Container auszuführen:
docker run -d --name my-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root my-mysql
Die Option -d gibt den Container an, der im Hintergrund ausgeführt werden soll, die Option --name gibt den Containernamen an my-mysql und die Option -p. Der interne Port 3306 wird dem Host-Port 3306 zugeordnet und eine Umgebungsvariable wird verwendet, um das Passwort des MySQL-Superusers festzulegen.
Jetzt haben wir MySQL erfolgreich containerisiert und können über localhost:3306 darauf zugreifen.
2. Verwenden Sie Kubernetes zur Verwaltung von MySQL-Containern
Kubernetes ist ein Open-Source-Container-Orchestrierungssystem zur Automatisierung der Bereitstellung, Erweiterung und Verwaltung von Anwendungen. Es bietet viele nützliche Funktionen wie automatischen Lastausgleich, automatische Skalierung, Containerspeicherung usw.
Als nächstes werden wir Kubernetes verwenden, um MySQL-Container zu verwalten und ihre Verfügbarkeit zu verbessern.
Erstellen Sie ein Kubernetes-Dienstobjekt, das alle MySQL-Container in denselben Dienst bindet:
apiVersion: v1 kind: Service metadata: name: my-mysql spec: ports: - port: 3306 selector: app: my-mysql
Dadurch wird ein Kubernetes-Dienstobjekt mit dem Namen my-mysql erstellt, das im Container-Port auf 3306 wartet.
Erstellen Sie ein Kubernetes-Bereitstellungsobjekt, das mehrere MySQL-Container im selben Kubernetes-Pod bereitstellt und diese automatisch neu startet, wenn ein Container ausfällt:
apiVersion: apps/v1 kind: Deployment metadata: name: my-mysql labels: app: my-mysql spec: replicas: 3 selector: matchLabels: app: my-mysql template: metadata: labels: app: my-mysql spec: containers: - name: mysql image: my-mysql ports: - containerPort: 3306 env: - name: MYSQL_ROOT_PASSWORD value: "root"
Dadurch wird ein Kubernetes-Bereitstellungsobjekt mit dem Namen my-mysql erstellt. inklusive 3 MySQL-Containern. Wenn ein Container ausfällt, startet Kubernetes ihn automatisch neu.
Jetzt haben wir Kubernetes erfolgreich zur Verwaltung des MySQL-Containers und zur Verbesserung seiner Verfügbarkeit eingesetzt.
3. Verwenden Sie PHP, um eine Verbindung zum MySQL-Container herzustellen.
Abschließend müssen wir PHP verwenden, um eine Verbindung zum MySQL-Container herzustellen und einige einfache Datenbankoperationen durchzuführen.
Erstellen Sie eine PHP-Datei namens test.php, um eine Verbindung zum MySQL-Container herzustellen und SQL-Abfragen auszuführen:
<?php $host = "my-mysql.default.svc.cluster.local"; $username = "root"; $password = "root"; $dbname = "test"; $conn = mysqli_connect($host, $username, $password, $dbname); if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } $sql = "SELECT * FROM users"; $result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) > 0) { while($row = mysqli_fetch_assoc($result)) { echo "id: " . $row["id"]. " - Name: " . $row["name"]. "<br>"; } } else { echo "0 results"; } mysqli_close($conn); ?>
Diese Datei stellt eine Verbindung zu my-mysql.default.svc.cluster.local unter Verwendung von Benutzername und her Passwort root Stellen Sie eine Verbindung zum MySQL-Container her und rufen Sie Daten aus der Tabelle „Benutzer“ ab.
Laden Sie die test.php-Datei auf den Webserver hoch und starten Sie den Webserver. Jetzt können wir auf den MySQL-Container zugreifen, indem wir auf den Webserver zugreifen. Wenn die IP-Adresse des Webservers beispielsweise XXX.XXX.XXX.XXX lautet, können wir die MySQL-Datenbank abfragen, indem wir auf http://XXX.XXX.XXX.XXX/test.php zugreifen.
Fazit
Containerisierungstechnologie bietet viele Vorteile für die moderne Softwareentwicklung, einschließlich Anwendungsportabilität, Skalierbarkeit und Wartbarkeit. Durch die Verwendung von Docker und Kubernetes können wir die MySQL-Datenbank einfach containerisieren und die Verfügbarkeit und Zuverlässigkeit der Datenbank verbessern. Wenn Sie PHP-Anwendungen entwickeln und MySQL-Datenbanken verwalten müssen, ist die Containerisierung eine wesentliche Option.
Das obige ist der detaillierte Inhalt vonPHP-Methode zur Erzielung einer hohen Verfügbarkeit der Datenbankcontainerisierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!