PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

So stellen Sie hochverfügbares PostgreSQL mit einem einzigen Endpunkt für WordPress bereit

WordPress ist eine Open-Source-Software, mit der Sie Ihre Website, Ihren Blog oder Ihre Anwendung erstellen können. Es gibt viele Designs und Funktionen/Plugins, die Sie Ihrer WordPress-Installation hinzufügen können. WordPress ist eine kostenlose Software, es gibt jedoch viele kommerzielle Plugins, um sie je nach Ihren Anforderungen zu verbessern.

WordPress macht es Ihnen leicht, Ihre Inhalte zu verwalten, und es ist wirklich flexibel. Erstellen Sie Entwürfe, planen Sie die Veröffentlichung und sehen Sie sich Ihre Beitragsrevisionen an. Machen Sie Ihre Inhalte öffentlich oder privat und sichern Sie Beiträge und Seiten mit einem Passwort.

Um WordPress auszuführen, sollten Sie mindestens PHP-Version 5.2.4+, MySQL-Version 5.0+ (oder MariaDB) und Apache oder Nginx haben. Einige dieser Versionen haben das EOL erreicht, und Sie können Ihre Website Sicherheitslücken aussetzen, daher sollten Sie die neueste verfügbare Version entsprechend Ihrer Umgebung installieren.

Wie wir sehen konnten, unterstützt WordPress derzeit nur die Datenbank-Engines MySQL und MariaDB. WPPG ist ein auf dem PG4WP-Plugin basierendes Plugin, das Ihnen die Möglichkeit gibt, WordPress mit einer PostgreSQL-Datenbank als Backend zu installieren und zu verwenden. Es ersetzt Aufrufe an MySQL-spezifische Funktionen durch generische Aufrufe, die sie anderen Datenbankfunktionen zuordnen, und schreibt SQL-Abfragen bei Bedarf spontan um.

Für diesen Blog installieren wir 1 Anwendungsserver mit WordPress 5.1.1 und HAProxy, 1.5.18 auf demselben Server und 2 PostgreSQL 11-Datenbankknoten (Master-Standby). Das gesamte Betriebssystem wird CentOS 7 sein. Für die Bereitstellung der Datenbanken und des Lastenausgleichs verwenden wir das ClusterControl-System.

Dies ist eine grundlegende Umgebung. Sie können es verbessern, indem Sie weitere Hochverfügbarkeitsfunktionen hinzufügen, wie Sie hier sehen können. Fangen wir also an.

Datenbankbereitstellung

Zuerst müssen wir unsere PostgreSQL-Datenbank installieren. Dazu gehen wir davon aus, dass Sie ClusterControl installiert haben.

Um eine Bereitstellung von ClusterControl aus durchzuführen, wählen Sie einfach die Option „Bereitstellen“ und folgen Sie den angezeigten Anweisungen.

Bei der Auswahl von PostgreSQL müssen wir Benutzer, Schlüssel oder Passwort und Port angeben, um eine Verbindung über SSH zu unseren Servern herzustellen. Wir brauchen auch einen Namen für unseren neuen Cluster und wenn wir möchten, dass ClusterControl die entsprechende Software und Konfigurationen für uns installiert.

Nach dem Einrichten der SSH-Zugangsinformationen müssen wir den Datenbankbenutzer, die Version und das Datadir (optional) definieren. Wir können auch angeben, welches Repository verwendet werden soll.

Im nächsten Schritt müssen wir unsere Server zu dem Cluster hinzufügen, den wir erstellen werden.

Beim Hinzufügen unserer Server können wir die IP oder den Hostnamen eingeben.

Im letzten Schritt können wir wählen, ob unsere Replikation synchron oder asynchron sein soll.

Wir können den Status der Erstellung unseres neuen Clusters über den Aktivitätsmonitor von ClusterControl überwachen.

Sobald die Aufgabe abgeschlossen ist, können wir unseren Cluster im Hauptbildschirm von ClusterControl sehen.

Sobald wir unseren Cluster erstellt haben, können wir mehrere Aufgaben darauf ausführen, wie z. B. das Hinzufügen eines Load Balancer (HAProxy) oder eines neuen Replikats.

ClusterControlEine Konsole für Ihre gesamte DatenbankinfrastrukturErfahren Sie, was es sonst noch Neues in ClusterControl gibt. Installieren Sie ClusterControl KOSTENLOS

Load-Balancer-Bereitstellung

Um eine Load-Balancer-Bereitstellung durchzuführen, in diesem Fall HAProxy, wählen Sie die Option „Load-Balancer hinzufügen“ in den Cluster-Aktionen und geben Sie die angeforderten Informationen ein.

Wir müssen nur IP/Name, Port, Richtlinie und die Knoten hinzufügen, die wir verwenden werden. Standardmäßig wird HAProxy von ClusterControl mit zwei verschiedenen Ports konfiguriert, einem Read-Write und einem Read-Only. Im Lese-Schreib-Port ist nur der Master UP. Im Fehlerfall befördert ClusterControl den fortschrittlichsten Slave und ändert die HAProxy-Konfiguration, um den neuen Master zu aktivieren und den alten zu deaktivieren. Auf diese Weise haben wir im Fehlerfall ein automatisches Failover.

Wenn wir den vorherigen Schritten gefolgt sind, sollten wir die folgende Topologie haben:

Wir haben also einen einzigen Endpunkt, der im Anwendungsserver mit HAProxy erstellt wurde. Jetzt können wir diesen Endpunkt in der Anwendung als Localhost-Verbindung verwenden.

WordPress-Installation

Lassen Sie uns WordPress auf unserem Anwendungsserver installieren und konfigurieren, um eine Verbindung zur PostgreSQL-Datenbank herzustellen, indem wir den lokalen HAProxy-Port 3307 verwenden.

Installieren Sie zuerst die erforderlichen Pakete auf dem Anwendungsserver.

$ yum install httpd php php-mysql php-pgsql postgresql
$ systemctl start httpd && systemctl enable httpd

Laden Sie die neueste WordPress-Version herunter und verschieben Sie sie in das Apache Document Root.

$ wget https://wordpress.org/latest.tar.gz
$ tar zxf latest.tar.gz
$ mv wordpress /var/www/html/

Laden Sie das WPPG-Plugin herunter und verschieben Sie es in das WordPress-Plugins-Verzeichnis.

$ wget https://downloads.wordpress.org/plugin/wppg.1.0.1.zip
$ unzip wppg.1.0.1.zip
$ mv wppg /var/www/html/wordpress/wp-content/plugins/

Kopieren Sie die Datei db.php in das Verzeichnis wp-content. Bearbeiten Sie es dann und ändern Sie den Pfad „PG4WP_ROOT“:

$ cp /var/www/html/wordpress/wp-content/plugins/wppg/pg4wp/db.php /var/www/html/wordpress/wp-content/
$ vi /var/www/html/wordpress/wp-content/db.php
define( 'PG4WP_ROOT', ABSPATH.'wp-content/plugins/wppg/pg4wp');

Benennen Sie die wp-config.php um und ändern Sie die Datenbankinformationen:

$ mv /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.php
$ vi /var/www/html/wordpress/wp-config.php
define( 'DB_NAME', 'wordpressdb' );
define( 'DB_USER', 'wordpress' );
define( 'DB_PASSWORD', 'wpPassword' );
define( 'DB_HOST', 'localhost:3307' );

Dann müssen wir die Datenbank und den Anwendungsbenutzer in der PostgreSQL-Datenbank erstellen. Auf dem Master-Knoten:

$ postgres=# CREATE DATABASE wordpressdb;
CREATE DATABASE
$ postgres=# CREATE USER wordpress WITH PASSWORD 'wpPassword';
CREATE ROLE
$ postgres=# GRANT ALL PRIVILEGES ON DATABASE wordpressdb TO wordpress;
GRANT

Und bearbeiten Sie die Datei pg_hba.conf, um die Verbindung vom Anwendungsserver zuzulassen.

$ Vi /var/lib/pgsql/11/data/pg_hba.conf
host  all  all  192.168.100.153/24  md5
$ systemctl reload postgresql-11

Stellen Sie sicher, dass Sie vom Anwendungsserver aus darauf zugreifen können:

$ psql -hlocalhost -p3307 -Uwordpress wordpressdb
Password for user wordpress:
psql (9.2.24, server 11.2)
WARNING: psql version 9.2, server version 11.0.
         Some psql features might not work.
Type "help" for help.
wordpressdb=>

Gehen Sie nun im Webbrowser zu install.php, in unserem Fall ist die IP-Adresse für den Anwendungsserver 192.168.100.153, also gehen wir zu:

http://192.168.100.153/wordpress/wp-admin/install.php

Fügen Sie den Seitentitel, den Benutzernamen und das Passwort für den Zugriff auf den Admin-Bereich sowie Ihre E-Mail-Adresse hinzu.

Gehen Sie schließlich zu Plugins -> Installierte Plugins und aktivieren Sie das WPPG-Plugin.

Schlussfolgerung

Jetzt haben wir WordPress mit PostgreSQL ausgeführt, indem wir einen einzigen Endpunkt verwenden. Wir können unsere Cluster-Aktivität auf ClusterControl überwachen, indem wir die verschiedenen Metriken, Dashboards oder viele Leistungs- und Verwaltungsfunktionen überprüfen.

Es gibt verschiedene Möglichkeiten, WordPress mit PostgreSQL zu implementieren. Es könnte sein, ein anderes Plugin zu verwenden oder WordPress wie gewohnt zu installieren und das Plugin später hinzuzufügen, aber in jedem Fall wird PostgreSQL, wie bereits erwähnt, nicht offiziell von WordPress unterstützt, daher müssen wir einen umfassenden Testprozess durchführen, wenn wir dies wünschen Verwenden Sie diese Topologie in der Produktion.