LINUX

Cómo configurar el clúster MariaDB Galera 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 activa-activa, lo que significa que puede admitir escrituras en todos los nodos que luego se replican en todo el clúster. También existe la agrupación en clústeres activo-pasivo, donde solo se puede escribir el nodo. También instalaremos HAproxy para el equilibrio de 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 uno para wordpress. HAproxy funciona de tal manera que enruta las solicitudes a cada nodo en modo round robin, mientras se presenta a sí mismo como un front-end. Aquí estamos usando una forma tradicional de agrupamiento al tener servidores de bases de datos en una red privada y solo el servidor web está orientado hacia la dirección IP pública.

MariaDB galera cluster HAproxy

Configuración del clúster de Galera

En todos los servidores necesitamos instalar mysql. Primero agregaremos 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 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 las públicas, 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 [galera] en el archivo y haz que se vea así, guarda 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

Una vez que esto se haya configurado, 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'"

grupo

Lo siguiente sería ejecutar el script mysql_secure_installation

mysql_secure_installation

Configurando el Firewalld

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, vuelva a cargar el firewall

firewall-cmd --reload

Usando 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. Se deben comentar todos los servicios que usan ese puerto y se debe agregar un nuevo servicio, por lo que esa 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é listo y listo, 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 clustercheck

clustercheck

control de grupo

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 su ips, por supuesto)

192.168.207.241 mariadb01
192.168.209.91 mariadb02
192.168.129.168 mariadb03
192.168.210.252 haproxy01

A continuación podemos instalar haproxy

yum install haproxy

A continuación, necesitamos editar rsyslog.conf

nano /etc/rsyslog.conf

Descomenta 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 predeterminada de haproxy

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

A continuación, hacemos un nuevo archivo con nano.

nano /etc/haproxy/haproxy.cfg

Usar 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 cortafuegos

firewall-cmd --reload

Configurando el 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"

acceso ha-proxy

Asegúrese de ingresar una contraseña muy fuerte como contraseña y no su contraseña de root habitual.

Instalación de WordPress

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

El 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 nodo wp01 establecido en / etc / hosts /

192.168.220.17 wp01
192.168.210.252 haproxy01

También en haproxy01 añadir

192.168.220.17 wp01

A continuación, necesitamos 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

Entonces inicie sesión como mi usuario

su miki

Cambiar dir a inicio

cd

Y luego descarga la última versión de wordpress y descomprímela

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

Configurando wordpress

WordPress está configurado en el archivo wp-config.php, allí necesitamos 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 lineas

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

Completa la instalación de WordPress desde el navegador.

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

prensa de palabras al fin

Ahora tenemos el clúster configurado con wordpress en ejecución.

tablero

Conclusión

Aquí hemos configurado wordpress sobre el clúster de Galera balanceado de carga por HAproxy. Esta es una solución resistente para sitios de alta carga y, aunque lleva un tiempo configurarla, le brinda a su sitio un seguro casi completo contra el tiempo de inactividad. Todo el tráfico entre los 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 tengas un buen día.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar