PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment déployer PostgreSQL hautement disponible avec un point de terminaison unique pour WordPress

WordPress est un logiciel open source que vous pouvez utiliser pour créer votre site Web, votre blog ou votre application. Il existe de nombreuses conceptions et fonctionnalités/plugins à ajouter à votre installation WordPress. WordPress est un logiciel gratuit, cependant, il existe de nombreux plugins commerciaux pour l'améliorer en fonction de vos besoins.

WordPress vous permet de gérer facilement votre contenu et il est vraiment flexible. Créez des brouillons, planifiez la publication et examinez les révisions de vos publications. Rendez votre contenu public ou privé, et sécurisez les publications et les pages avec un mot de passe.

Pour exécuter WordPress, vous devez avoir au moins PHP version 5.2.4+, MySQL version 5.0+ (ou MariaDB) et Apache ou Nginx. Certaines de ces versions ont atteint la fin de vie et vous pouvez exposer votre site à des failles de sécurité, vous devez donc installer la dernière version disponible en fonction de votre environnement.

Comme nous avons pu le voir, actuellement, WordPress ne prend en charge que les moteurs de base de données MySQL et MariaDB. WPPG est un plugin basé sur le plugin PG4WP, qui vous donne la possibilité d'installer et d'utiliser WordPress avec une base de données PostgreSQL comme backend. Cela fonctionne en remplaçant les appels aux fonctions spécifiques de MySQL par des appels génériques qui les mappent à d'autres fonctions de base de données et en réécrivant les requêtes SQL à la volée si nécessaire.

Pour ce blog, nous allons installer 1 Application Server avec WordPress 5.1.1 et HAProxy, 1.5.18 sur le même serveur, et 2 nœuds de base de données PostgreSQL 11 (Master-Standby). Tout le système d'exploitation sera CentOS 7. Pour le déploiement des bases de données et de l'équilibreur de charge, nous utiliserons le système ClusterControl.

C'est un environnement de base. Vous pouvez l'améliorer en ajoutant plus de fonctionnalités de haute disponibilité comme vous pouvez le voir ici. Alors, commençons.

Déploiement de la base de données

Tout d'abord, nous devons installer notre base de données PostgreSQL. Pour cela, nous supposerons que vous avez installé ClusterControl.

Pour effectuer un déploiement depuis ClusterControl, sélectionnez simplement l'option "Déployer" et suivez les instructions qui s'affichent.

Lors de la sélection de PostgreSQL, nous devons spécifier l'utilisateur, la clé ou le mot de passe et le port pour se connecter par SSH à nos serveurs. Nous avons également besoin d'un nom pour notre nouveau cluster et si nous voulons que ClusterControl installe le logiciel et les configurations correspondants pour nous.

Après avoir configuré les informations d'accès SSH, nous devons définir l'utilisateur, la version et le datadir de la base de données (facultatif). Nous pouvons également spécifier quel référentiel utiliser.

Dans l'étape suivante, nous devons ajouter nos serveurs au cluster que nous allons créer.

Lors de l'ajout de nos serveurs, nous pouvons entrer l'adresse IP ou le nom d'hôte.

Dans la dernière étape, nous pouvons choisir si notre réplication sera synchrone ou asynchrone.

Nous pouvons surveiller l'état de la création de notre nouveau cluster à partir du moniteur d'activité ClusterControl.

Une fois la tâche terminée, nous pouvons voir notre cluster dans l'écran principal de ClusterControl.

Une fois notre cluster créé, nous pouvons y effectuer plusieurs tâches, comme ajouter un équilibreur de charge (HAProxy) ou un nouveau réplica.

ClusterControlConsole unique pour l'ensemble de votre infrastructure de base de donnéesDécouvrez les autres nouveautés de ClusterControlInstallez ClusterControl GRATUITEMENT

Déploiement de l'équilibreur de charge

Pour effectuer un déploiement d'équilibreur de charge, dans ce cas, HAProxy, sélectionnez l'option "Ajouter un équilibreur de charge" dans les actions du cluster et remplissez les informations demandées.

Nous n'avons qu'à ajouter l'IP/Nom, le port, la politique et les nœuds que nous allons utiliser. Par défaut, HAProxy est configuré par ClusterControl avec deux ports différents, un en lecture-écriture et un en lecture seule. Dans le port de lecture-écriture, seul le maître est UP. En cas d'échec, ClusterControl promouvra l'esclave le plus avancé et modifiera la configuration HAProxy pour activer le nouveau maître et désactiver l'ancien. De cette façon, nous aurons un basculement automatique en cas d'échec.

Si nous avons suivi les étapes précédentes, nous devrions avoir la topologie suivante :

Nous avons donc un seul point de terminaison créé dans le serveur d'applications avec HAProxy. Maintenant, nous pouvons utiliser ce point de terminaison dans l'application en tant que connexion localhost.

Installation WordPress

Installons WordPress sur notre serveur d'applications et configurons-le pour se connecter à la base de données PostgreSQL en utilisant le port HAProxy local 3307.

Tout d'abord, installez les packages requis sur le serveur d'applications.

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

Téléchargez la dernière version de WordPress et déplacez-la vers la racine du document apache.

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

Téléchargez le plugin WPPG et déplacez-le dans le répertoire des plugins 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/

Copiez le fichier db.php dans le répertoire wp-content. Ensuite, éditez-le et changez le chemin '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');

Renommez wp-config.php et modifiez les informations de la base de données :

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

Ensuite, nous devons créer la base de données et l'utilisateur de l'application dans la base de données PostgreSQL. Sur le nœud maître :

$ 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

Et modifiez le fichier pg_hba.conf pour autoriser la connexion depuis le serveur d'applications.

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

Assurez-vous de pouvoir y accéder depuis le serveur d'applications :

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

Maintenant, allez dans install.php dans le navigateur Web, dans notre cas, l'adresse IP du serveur d'applications est 192.168.100.153, donc, nous allons :

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

Ajoutez le titre du site, le nom d'utilisateur et le mot de passe pour accéder à la section d'administration, ainsi que votre adresse e-mail.

Enfin, allez dans Plugins -> Plugins installés et activez le plugin WPPG.

Conclusion

Maintenant, WordPress s'exécute avec PostgreSQL en utilisant un seul point de terminaison. Nous pouvons surveiller l'activité de notre cluster sur ClusterControl en vérifiant les différentes métriques, tableaux de bord ou de nombreuses fonctionnalités de performance et de gestion.

Il existe différentes façons d'implémenter WordPress avec PostgreSQL. Cela pourrait être en utilisant un plugin différent, ou en installant WordPress comme d'habitude et en ajoutant le plugin plus tard, mais dans tous les cas, comme nous l'avons mentionné, PostgreSQL n'est pas officiellement pris en charge par WordPress, nous devons donc effectuer un processus de test exhaustif si nous voulons utiliser cette topologie en production.