PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como implantar PostgreSQL de alta disponibilidade com endpoint único para WordPress


O WordPress é um software de código aberto que você pode usar para criar seu site, blog ou aplicativo. Existem muitos designs e recursos/plugins para adicionar à sua instalação do WordPress. O WordPress é um software gratuito, no entanto, existem muitos plugins comerciais para melhorá-lo dependendo de seus requisitos.



O WordPress facilita o gerenciamento do seu conteúdo e é realmente flexível. Crie rascunhos, agende a publicação e analise as revisões de suas postagens. Torne seu conteúdo público ou privado e proteja postagens e páginas com uma senha.



Para executar o WordPress, você deve ter pelo menos PHP versão 5.2.4+, MySQL versão 5.0+ (ou MariaDB) e Apache ou Nginx. Algumas dessas versões atingiram o EOL e você pode expor seu site a vulnerabilidades de segurança, portanto, instale a versão mais recente disponível de acordo com seu ambiente.

Como pudemos ver, atualmente, o WordPress suporta apenas os mecanismos de banco de dados MySQL e MariaDB. WPPG é um plugin baseado no plugin PG4WP, que lhe dá a possibilidade de instalar e usar o WordPress com um banco de dados PostgreSQL como backend. Ele funciona substituindo chamadas para funções específicas do MySQL por chamadas genéricas que as mapeiam para outras funções de banco de dados e reescrevendo consultas SQL em tempo real quando necessário.

Para este blog, instalaremos 1 servidor de aplicativos com WordPress 5.1.1 e HAProxy, 1.5.18 no mesmo servidor e 2 nós de banco de dados PostgreSQL 11 (Master-Standby). Todo o sistema operacional será CentOS 7. Para os bancos de dados e o load balancer, usaremos o sistema ClusterControl.

Este é um ambiente básico. Você pode melhorá-lo adicionando mais recursos de alta disponibilidade, como você pode ver aqui. Então vamos começar.

Implantação de banco de dados


Primeiro, precisamos instalar nosso banco de dados PostgreSQL. Para isso, vamos supor que você tenha o ClusterControl instalado.

Para realizar um deployment a partir do ClusterControl, basta selecionar a opção “Deploy” e seguir as instruções que aparecem.

Ao selecionar PostgreSQL, devemos especificar Usuário, Chave ou Senha e porta para conectar por SSH aos nossos servidores. Também precisamos de um nome para nosso novo cluster e se queremos que o ClusterControl instale o software e as configurações correspondentes para nós.

Após configurar as informações de acesso SSH, devemos definir o usuário do banco de dados, versão e datadir (opcional). Também podemos especificar qual repositório usar.

Na próxima etapa, precisamos adicionar nossos servidores ao cluster que vamos criar.

Ao adicionar nossos servidores, podemos inserir o IP ou o nome do host.

Na última etapa, podemos escolher se nossa replicação será síncrona ou assíncrona.

Podemos monitorar o status da criação do nosso novo cluster a partir do monitor de atividades do ClusterControl.

Quando a tarefa estiver concluída, podemos ver nosso cluster na tela principal do ClusterControl.

Depois de criar nosso cluster, podemos realizar várias tarefas nele, como adicionar um balanceador de carga (HAProxy) ou uma nova réplica.
ClusterControlSingle Console para toda a sua infraestrutura de banco de dados Descubra o que mais há de novo no ClusterControlInstale o ClusterControl GRATUITAMENTE

Implantação do balanceador de carga


Para realizar uma implantação de load balancer, neste caso, HAProxy, selecione a opção “Add Load Balancer” nas ações do cluster e preencha as informações solicitadas.

Precisamos apenas adicionar IP/Nome, porta, política e os nós que vamos usar. Por padrão, o HAProxy é configurado pelo ClusterControl com duas portas diferentes, uma de leitura/gravação e outra somente leitura. Na porta de leitura/gravação, apenas o mestre está UP. Em caso de falha, o ClusterControl promoverá o escravo mais avançado e alterará a configuração do HAProxy para habilitar o novo mestre e desabilitar o antigo. Dessa forma, teremos failover automático em caso de falha.

Se seguimos os passos anteriores, devemos ter a seguinte topologia:

Assim, temos um único endpoint criado no Application Server com HAProxy. Agora, podemos usar esse endpoint no aplicativo como uma conexão localhost.

Instalação do WordPress


Vamos instalar o WordPress em nosso servidor de aplicativos e configurá-lo para se conectar ao banco de dados PostgreSQL usando a porta HAProxy local 3307.

Primeiro, instale os pacotes necessários no Application Server.
$ yum install httpd php php-mysql php-pgsql postgresql
$ systemctl start httpd && systemctl enable httpd

Baixe a versão mais recente do WordPress e mova-a para a raiz do documento do apache.
$ wget https://wordpress.org/latest.tar.gz
$ tar zxf latest.tar.gz
$ mv wordpress /var/www/html/

Baixe o plugin WPPG e mova-o para o diretório de plugins do 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 o arquivo db.php para o diretório wp-content. Em seguida, edite-o e altere o caminho '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');

Renomeie o wp-config.php e altere as informações do banco de dados:
$ 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' );

Em seguida, precisamos criar o banco de dados e o usuário do aplicativo no banco de dados PostgreSQL. No nó mestre:
$ 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 edite o arquivo pg_hba.conf para permitir a conexão do Application Server.
$ Vi /var/lib/pgsql/11/data/pg_hba.conf
host  all  all  192.168.100.153/24  md5
$ systemctl reload postgresql-11

Certifique-se de que você pode acessá-lo a partir do 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=>

Agora, acesse install.php no navegador web, no nosso caso, o endereço IP do Application Server é 192.168.100.153, então vamos para:

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

Adicione o título do site, nome de usuário e senha para acessar a seção de administração e seu endereço de e-mail.

Por fim, vá para Plugins -> Plugins Instalados e ative o plugin WPPG.

Conclusão


Agora, temos o WordPress rodando com PostgreSQL usando um único endpoint. Podemos monitorar nossa atividade de cluster no ClusterControl verificando as diferentes métricas, dashboards ou muitos recursos de desempenho e gerenciamento.

Existem diferentes maneiras de implementar o WordPress com PostgreSQL. Pode ser usando um plugin diferente, ou instalando o WordPress como de costume e adicionando o plugin mais tarde, mas de qualquer forma, como mencionamos, o PostgreSQL não é oficialmente suportado pelo WordPress, portanto, devemos realizar um processo de teste exaustivo se quisermos usar esta topologia em produção.