PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come distribuire PostgreSQL ad alta disponibilità con un singolo endpoint per WordPress

WordPress è un software open source che puoi utilizzare per creare il tuo sito Web, blog o applicazione. Ci sono molti design e funzionalità/plugin da aggiungere all'installazione di WordPress. WordPress è un software gratuito, tuttavia, ci sono molti plugin commerciali per migliorarlo a seconda delle tue esigenze.

WordPress ti semplifica la gestione dei contenuti ed è davvero flessibile. Crea bozze, pianifica la pubblicazione e guarda le revisioni dei tuoi post. Rendi i tuoi contenuti pubblici o privati ​​e proteggi post e pagine con una password.

Per eseguire WordPress dovresti avere almeno la versione PHP 5.2.4+, MySQL versione 5.0+ (o MariaDB) e Apache o Nginx. Alcune di queste versioni hanno raggiunto l'EOL e potresti esporre il tuo sito a vulnerabilità di sicurezza, quindi dovresti installare l'ultima versione disponibile in base al tuo ambiente.

Come abbiamo potuto vedere, attualmente WordPress supporta solo i motori di database MySQL e MariaDB. WPPG è un plugin basato sul plugin PG4WP, che ti dà la possibilità di installare e utilizzare WordPress con un database PostgreSQL come backend. Funziona sostituendo le chiamate a funzioni specifiche di MySQL con chiamate generiche che le mappano ad altre funzioni del database e riscrivendo le query SQL al volo quando necessario.

Per questo blog, installeremo 1 Application Server con WordPress 5.1.1 e HAProxy, 1.5.18 nello stesso server e 2 nodi di database PostgreSQL 11 (Master-Standby). Tutto il sistema operativo sarà CentOS 7. Per la distribuzione dei database e del bilanciamento del carico utilizzeremo il sistema ClusterControl.

Questo è un ambiente di base. Puoi migliorarlo aggiungendo più funzionalità di alta disponibilità come puoi vedere qui. Quindi, iniziamo.

Distribuzione database

Innanzitutto, dobbiamo installare il nostro database PostgreSQL. Per questo, supponiamo che tu abbia installato ClusterControl.

Per eseguire un deployment da ClusterControl, seleziona semplicemente l'opzione “Deploy” e segui le istruzioni che appaiono.

Quando selezioniamo PostgreSQL, dobbiamo specificare Utente, Chiave o Password e la porta per la connessione tramite SSH ai nostri server. Abbiamo anche bisogno di un nome per il nostro nuovo cluster e se vogliamo che ClusterControl installi per noi il software e le configurazioni corrispondenti.

Dopo aver impostato le informazioni di accesso SSH, è necessario definire l'utente, la versione e la datadir del database (opzionale). Possiamo anche specificare quale repository utilizzare.

Nel passaggio successivo, dobbiamo aggiungere i nostri server al cluster che creeremo.

Quando aggiungiamo i nostri server, possiamo inserire IP o nome host.

Nell'ultimo passaggio, possiamo scegliere se la nostra replica sarà Sincrona o Asincrona.

Possiamo monitorare lo stato della creazione del nostro nuovo cluster dal monitor attività ClusterControl.

Al termine dell'attività, possiamo vedere il nostro cluster nella schermata principale di ClusterControl.

Una volta creato il nostro cluster, possiamo eseguire diverse attività su di esso, come l'aggiunta di un sistema di bilanciamento del carico (HAProxy) o una nuova replica.

ClusterControlSingle Console per l'intera infrastruttura di databaseScopri cos'altro c'è di nuovo in ClusterControlInstalla ClusterControl GRATIS

Distribuzione del sistema di bilanciamento del carico

Per eseguire una distribuzione del bilanciamento del carico, in questo caso, HAProxy, seleziona l'opzione "Aggiungi Load Balancer" nelle azioni del cluster e inserisci le informazioni richieste.

Abbiamo solo bisogno di aggiungere IP/Nome, porta, policy e i nodi che useremo. Per impostazione predefinita, HAProxy è configurato da ClusterControl con due porte diverse, una di lettura-scrittura e una di sola lettura. Nella porta di lettura-scrittura, solo il master è attivo. In caso di guasto, ClusterControl promuoverà lo slave più avanzato e modificherà la configurazione HAProxy per abilitare il nuovo master e disabilitare quello vecchio. In questo modo avremo il failover automatico in caso di errore.

Se abbiamo seguito i passaggi precedenti, dovremmo avere la seguente topologia:

Quindi, abbiamo un singolo endpoint creato nell'Application Server con HAProxy. Ora possiamo utilizzare questo endpoint nell'applicazione come connessione localhost.

Installazione di WordPress

Installiamo WordPress sul nostro Application Server e configuriamolo per la connessione al database PostgreSQL utilizzando la porta HAProxy locale 3307.

Innanzitutto, installa i pacchetti richiesti sull'Application Server.

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

Scarica l'ultima versione di WordPress e spostala nella root del documento di Apache.

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

Scarica il plugin WPPG e spostalo nella directory dei plugin di wordpress.

$ 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/

Copia il file db.php nella directory wp-content. Quindi, modificalo e cambia il percorso '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');

Rinominare il wp-config.php e modificare le informazioni del database:

$ 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' );

Quindi, dobbiamo creare il database e l'utente dell'applicazione nel database PostgreSQL. Sul nodo principale:

$ 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

E modificare il file pg_hba.conf per consentire la connessione dall'Application Server.

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

Assicurati di potervi accedere dall'Application Server:

$ 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=>

Ora vai su install.php nel browser web, nel nostro caso, l'indirizzo IP per l'Application Server è 192.168.100.153, quindi andiamo su:

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

Aggiungi il titolo del sito, il nome utente e la password per accedere alla sezione di amministrazione e il tuo indirizzo email.

Infine, vai su Plugin -> Plugin installati e attiva il plugin WPPG.

Conclusione

Ora abbiamo WordPress in esecuzione con PostgreSQL utilizzando un singolo endpoint. Possiamo monitorare l'attività del nostro cluster su ClusterControl controllando le diverse metriche, dashboard o molte funzionalità di performance e gestione.

Esistono diversi modi per implementare WordPress con PostgreSQL. Potrebbe essere utilizzando un plug-in diverso, oppure installando WordPress come al solito e aggiungendo il plug-in in un secondo momento, ma in ogni caso, come accennato, PostgreSQL non è ufficialmente supportato da WordPress, quindi dobbiamo eseguire un processo di test esauriente se vogliamo usa questa topologia in produzione.