GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo configurar MariaDB Galera Cluster con HAproxy en CentOS 7

En el artículo de hoy, instalaremos el clúster MariaDB Galera con HAproxy para MariaDB y wordpress con equilibrio de carga. Galera es una tecnología de agrupación en clústeres activo-activo, lo que significa que puede admitir escrituras en todos los nodos que luego se replican en el clúster. También existe la agrupación en clústeres activo-pasivo, donde solo se puede escribir en el nodo. También instalaremos HAproxy para equilibrar la carga en nuestro clúster. La instalación se realizará en 5 servidores CentOS 7, tres para MariaDB 10.1 Galera, uno para Haproxy y otro para wordpress. HAproxy funciona de tal manera que enruta las solicitudes a cada nodo en modo round robin, mientras se presenta como un front-end. Aquí estamos utilizando la forma tradicional de agrupamiento al tener servidores de bases de datos ubicados en una red privada y solo el servidor web está frente a la dirección IP pública.

Configuración del clúster de Galera

En todos los servidores necesitamos instalar mysql. Primero agregaremos el repositorio

echo '[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1' >> /etc/yum.repos.d/MariaDB.repo

Luego instalamos mariadb, rsync y xinetd

sudo yum install mariadb-server rsync xinetd

Necesitamos editar /etc/hosts, cualquier editor servirá pero yo usaré nano

nano /etc/hosts

Por ahí ip y nombres de sus hosts, por ejemplo

192.168.207.241 mariadb01
192.168.209.91 mariadb02
192.168.129.168 mariadb03

Asegúrese de usar la IP privada de sus hosts, si usa los públicos, deberá cifrar el tráfico entre ellos para proteger su clúster.

Después de instalar MariaDB, edite

nano /etc/my.cnf.d/server.cnf

En todos los servidores, debe encontrar la sección [galera] en el archivo y hacer que se vea así, excepto las direcciones IP que están en negrita y deben cambiarse

[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so

#add your node ips here
wsrep_cluster_address="gcomm://192.168.207.241,192.168.209.91,192.168.129.168"
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
#Cluster name
wsrep_cluster_name="linoxide_cluster"
# Allow server to accept connections on all interfaces.

bind-address=0.0.0.0

# this server ip, change for each server
wsrep_node_address="192.168.207.241"
# this server name, change for each server
wsrep_node_name="mariadb01"

wsrep_sst_method=rsync

Mirando el Cúmulo de Galera

Después de configurar esto, debe iniciar el clúster

Primero en el nodo mariadb01 que es el maestro con este comando

galera_new_cluster

Luego, en otros dos nodos con el comando systemctl normal:

systemctl start mariadb

A continuación, podemos verificar que el clúster se está ejecutando:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

Lo siguiente sería ejecutar el script mysql_secure_installation

mysql_secure_installation

Configuración del cortafuegosd

Ahora, cuando los tres nodos estén conectados, podemos abrir firewalld y configurarlo.

systemctl start firewalld

Abra el cliente mariadb y los puertos de replicación de galera:

firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --permanent --add-port=4567/tcp

Abra el puerto rsync que usamos para la replicación

firewall-cmd --permanent --add-port=873/tcp

Otros puertos importantes

firewall-cmd --permanent --add-port=4444/tcp
firewall-cmd --permanent --add-port=9200/tcp

Por último recargar el cortafuegos

firewall-cmd --reload

Uso de xinetd y clustercheck

Clustercheck es un script útil para monitorear el clúster. Vamos a instalarlo siguiendo los comandos

wget https://raw.githubusercontent.com/olafz/percona-clustercheck/master/clustercheck
chmod +x clustercheck
mv clustercheck /usr/bin/

A continuación, debemos agregar mysqlchk a la lista de servicios. Para eso editamos el archivo de servicios:

nano /etc/services

Dado que es un archivo largo, en nano escriba Ctrl-W y busque 9200. Todos los servicios que usan ese puerto deben comentarse y se debe agregar un nuevo servicio, por lo que la parte debe verse así:

mysqlchk 9200/tcp # mysqlchk
#wap-wsp 9200/tcp # WAP connectionless session service
#wap-wsp 9200/udp # WAP connectionless session service

Cuando esto esté guardado y hecho, podemos iniciar xinetd

systemctl start xinetd

Todo esto debe hacerse en todos los nodos, y ahora solo en el maestro necesitamos agregar un usuario para el control de clúster.

mysql -u root -p

GRANT PROCESS ON *.* TO 'clustercheckuser'@'localhost' IDENTIFIED BY 'clustercheckpassword!';

exit;

A continuación, podemos probar el script de verificación de clúster

clustercheck

Configuración de HAproxy

Inicie sesión en su servidor haproxy designado. Ahora estamos instalando el balanceador de carga

Edite su archivo /etc/hosts para que sea algo como esto (con sus ips, por supuesto)

192.168.207.241 mariadb01
192.168.209.91 mariadb02
192.168.129.168 mariadb03
192.168.210.252 haproxy01

Luego podemos instalar haproxy

yum install haproxy

A continuación, debemos editar rsyslog.conf

nano /etc/rsyslog.conf

Descomente esas dos líneas

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

Guardar y salir

echo 'local2.=info /var/log/haproxy-access.log
local2.notice /var/log/haproxy-info.log
' >> /etc/rsyslog.d/haproxy.conf

permite hacer una copia de seguridad de la configuración haproxy predeterminada

mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bk

A continuación creamos un nuevo archivo con nano

nano /etc/haproxy/haproxy.cfg

Use este pastebin como configuración, pero cambie las direcciones IP.

Es hora de configurar el firewall en el nodo haproxy

systemctl start firewalld
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --permanent --add-port=3030/tcp

Luego recarga el firewall

firewall-cmd --reload

Configuración del acceso a MariaDB desde HAproxy

En el tipo de clúster mariadb:

mysql -u root -p

GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY "verystrongpassword";

Luego vamos al servidor haproxy01 e intentamos acceder a la base de datos.

Debe tener instalado el cliente MariaDB, así que primero hagamos eso:

echo '[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1' >> /etc/yum.repos.d/MariaDB.repo

Eso fue para agregar repositorio, este comando lo instala

yum install MariaDB-client

Y luego probemos si

mysql -u root -p -h 192.168.210.252 -P 3030 -e "select Host, User, Password from mysql.user"

Asegúrese de ingresar una contraseña muy segura como contraseña y no su contraseña raíz habitual.

Instalación de WordPress

Por último, configuraremos wordpress para usar en nuestro clúster. Hay trabajo por hacer en el nodo mariadb01, en el nodo haproxy01 y en el nodo wp01.

En mariadb01

mysql -u root -p

CREATE DATABASE wordpress;

CREATE USER wordpressuser@localhost IDENTIFIED BY 'password';

GRANT ALL ON wordpress.* TO wordpressuser@'192.168.210.252' IDENTIFIED BY 'password';

En el conjunto de nodos wp01 en /etc/hosts/

192.168.220.17 wp01
192.168.210.252 haproxy01

También en haproxy01 agregar

192.168.220.17 wp01

A continuación, debemos instalar los paquetes necesarios en el nodo wp01

yum install httpd php php-gd php-mysqlnd rsync

Desde aquí, necesitamos usar una cuenta que no sea root con privilegios sudo. No tengo uno, así que lo crearé:

useradd miki
usermod miki -aG wheel

passwd miki

Luego inicie sesión como mi usuario

su miki

Cambiar directorio a inicio

cd

Y luego descargue la última versión de wordpress y descomprímalo

wget http://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz

Usaremos rsync para copiar wordpress a apache dir

sudo rsync -avP ~/wordpress/ /var/www/html/
mkdir /var/www/html/wp-content/uploads

También necesitamos cambiar la propiedad al usuario de apache

sudo chown -R apache:apache /var/www/html/*

Configuración de wordpress

WordPress está configurado en el archivo wp-config.php, allí debemos establecer parámetros como la dirección de host del servidor de la base de datos, las credenciales de inicio de sesión, el nombre de la base de datos. Hagamos una copia de seguridad del archivo de configuración:

cd /var/www/html

cp wp-config-sample.php wp-config.php

Y luego hacemos la edición:

nano wp-config.php

Solo cambia esas líneas

define('DB_NAME', 'wordpress');

/** MySQL database username */
define('DB_USER', 'wordpressuser');

/** MySQL database password */
define('DB_PASSWORD', 'password');

/** MySQL hostname */
define('DB_HOST', '192.168.210.252:3030');

Por último, reiniciamos el servidor web apache:

sudo systemctl restart httpd

Complete la instalación de WordPress desde el navegador

Podemos ir a la dirección pública del nodo de wordpress como se muestra a continuación para continuar con el proceso de instalación de word-press

Ahora tenemos el clúster configurado con wordpress ejecutándose

Conclusión

Aquí hemos configurado wordpress sobre el clúster de Galera balanceado por HAproxy. Esta es una solución resistente para sitios de alta carga y, aunque lleva un tiempo configurarlo, le brinda a su sitio un seguro casi completo contra el tiempo de inactividad. Todo el tráfico entre nodos se realiza mediante direcciones IP privadas, y solo se utiliza una dirección pública para el front-end de Worpress para acceder al sitio. Esto sería todo por este artículo, gracias por leer y que tenga un buen día.


Cent OS
  1. Cómo configurar un servidor FTP con VSFTPD en CentOS 7

  2. Cómo instalar MariaDB Galera Cluster en Ubuntu 16.04

  3. Cómo configurar MariaDB Galera Cluster en Ubuntu 20.04

  4. Cómo configurar Pure-FTPD con MySQL en CentOS y RedHat

  5. Cómo reemplazar MySQL con MariaDB en CentOS 6

Cómo configurar Percona Cluster con HAproxy Loadbalancer en CentOS 7

Cómo configurar un clúster de alta disponibilidad en CentOS 8/RHEL 8

Cómo instalar un servidor de correo con PostfixAdmin en CentOS 7

Cómo instalar HAProxy en CentOS 8

Cómo configurar un clúster de Redis en CentOS 8 - Parte 3

Cómo configurar HAProxy en CentOS 8