sql >> Base de Datos >  >> RDS >> PostgreSQL

Cómo implementar PostgreSQL de alta disponibilidad con punto final único para WordPress

WordPress es un software de código abierto que puede utilizar para crear su sitio web, blog o aplicación. Hay muchos diseños y funciones/complementos para agregar a su instalación de WordPress. WordPress es un software gratuito, sin embargo, existen muchos complementos comerciales para mejorarlo según sus requisitos.

WordPress le facilita la administración de su contenido y es realmente flexible. Cree borradores, programe la publicación y revise las revisiones de sus publicaciones. Haga que su contenido sea público o privado, y asegure las publicaciones y páginas con una contraseña.

Para ejecutar WordPress, debe tener al menos PHP versión 5.2.4+, MySQL versión 5.0+ (o MariaDB) y Apache o Nginx. Algunas de estas versiones han alcanzado el EOL y puede exponer su sitio a vulnerabilidades de seguridad, por lo que debe instalar la última versión disponible de acuerdo con su entorno.

Como pudimos ver, actualmente, WordPress solo es compatible con los motores de base de datos MySQL y MariaDB. WPPG es un complemento basado en el complemento PG4WP, que le brinda la posibilidad de instalar y usar WordPress con una base de datos PostgreSQL como backend. Funciona reemplazando llamadas a funciones específicas de MySQL con llamadas genéricas que las asignan a otras funciones de base de datos y reescribiendo consultas SQL sobre la marcha cuando sea necesario.

Para este blog, instalaremos 1 servidor de aplicaciones con WordPress 5.1.1 y HAProxy, 1.5.18 en el mismo servidor y 2 nodos de base de datos PostgreSQL 11 (Master-Standby). Todo el sistema operativo será CentOS 7. Para la implementación de las bases de datos y el balanceador de carga usaremos el sistema ClusterControl.

Este es un entorno básico. Puede mejorarlo agregando más funciones de alta disponibilidad, como puede ver aquí. Entonces, comencemos.

Despliegue de base de datos

Primero, necesitamos instalar nuestra base de datos PostgreSQL. Para esto, asumiremos que tiene instalado ClusterControl.

Para realizar un deployment desde ClusterControl, simplemente seleccione la opción “Deploy” y siga las instrucciones que aparecen.

Al seleccionar PostgreSQL, debemos especificar Usuario, Clave o Contraseña y puerto para conectarnos por SSH a nuestros servidores. También necesitamos un nombre para nuestro nuevo clúster y si queremos que ClusterControl instale el software y las configuraciones correspondientes por nosotros.

Después de configurar la información de acceso SSH, debemos definir el usuario de la base de datos, la versión y datadir (opcional). También podemos especificar qué repositorio usar.

En el siguiente paso, debemos agregar nuestros servidores al clúster que vamos a crear.

Al agregar nuestros servidores, podemos ingresar IP o nombre de host.

En el último paso, podemos elegir si nuestra replicación será Síncrona o Asíncrona.

Podemos monitorear el estado de la creación de nuestro nuevo clúster desde el monitor de actividad de ClusterControl.

Una vez finalizada la tarea, podemos ver nuestro clúster en la pantalla principal de ClusterControl.

Una vez que tenemos nuestro clúster creado, podemos realizar varias tareas en él, como agregar un balanceador de carga (HAProxy) o una nueva réplica.

ClusterControlConsola única para toda su infraestructura de base de datosDescubra qué más hay de nuevo en ClusterControlInstale ClusterControl GRATIS

Implementación del equilibrador de carga

Para realizar una implementación de balanceador de carga, en este caso, HAProxy, seleccione la opción "Agregar balanceador de carga" en las acciones del clúster y complete la información solicitada.

Solo necesitamos agregar IP/Nombre, puerto, política y los nodos que vamos a usar. De forma predeterminada, ClusterControl configura HAProxy con dos puertos diferentes, uno de lectura y escritura y otro de solo lectura. En el puerto de lectura y escritura, solo el maestro está activo. En caso de falla, ClusterControl promoverá el esclavo más avanzado y cambiará la configuración de HAProxy para habilitar el nuevo maestro y deshabilitar el anterior. De esta forma, tendremos failover automático en caso de falla.

Si seguimos los pasos anteriores, deberíamos tener la siguiente topología:

Entonces, tenemos un punto final único creado en el servidor de aplicaciones con HAProxy. Ahora, podemos usar este punto final en la aplicación como una conexión localhost.

Instalación de WordPress

Instalemos WordPress en nuestro servidor de aplicaciones y configurémoslo para conectarse a la base de datos PostgreSQL usando el puerto local HAProxy 3307.

Primero, instale los paquetes necesarios en el servidor de aplicaciones.

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

Descargue la última versión de WordPress y muévala a la raíz del documento de apache.

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

Descargue el complemento WPPG y muévalo al directorio de complementos de 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/

Copie el archivo db.php en el directorio wp-content. Luego, edítelo y cambie la ruta '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');

Cambie el nombre de wp-config.php y cambie la información de la base de datos:

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

Luego, necesitamos crear la base de datos y el usuario de la aplicación en la base de datos PostgreSQL. En el nodo maestro:

$ 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

Y edite el archivo pg_hba.conf para permitir la conexión desde el servidor de aplicaciones.

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

Asegúrese de que puede acceder desde el servidor de aplicaciones:

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

Ahora, vaya a install.php en el navegador web, en nuestro caso, la dirección IP para el servidor de aplicaciones es 192.168.100.153, entonces, vamos a:

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

Agregue el título del sitio, el nombre de usuario y la contraseña para acceder a la sección de administración y su dirección de correo electrónico.

Finalmente, vaya a Complementos -> Complementos instalados y active el complemento WPPG.

Conclusión

Ahora, tenemos WordPress ejecutándose con PostgreSQL mediante el uso de un único punto final. Podemos monitorear la actividad de nuestro clúster en ClusterControl verificando las diferentes métricas, paneles o muchas características de rendimiento y administración.

Hay diferentes formas de implementar WordPress con PostgreSQL. Puede ser usando un complemento diferente, o instalando WordPress como de costumbre y agregando el complemento más tarde, pero en cualquier caso, como mencionamos, PostgreSQL no es oficialmente compatible con WordPress, por lo que debemos realizar un proceso de prueba exhaustivo si queremos. usar esta topología en producción.