PDF de programación - Cluster alta disponibilidad MariaDB Galera Haproxy

Imágen de pdf Cluster alta disponibilidad MariaDB Galera Haproxy

Cluster alta disponibilidad MariaDB Galera Haproxygráfica de visualizaciones

Publicado el 9 de Abril del 2019
216 visualizaciones desde el 9 de Abril del 2019
1,1 MB
19 paginas
Creado hace 2a (08/03/2017)
CLUSTER ALTA DISPONIBILIDAD

MARIADB GALERA HAPROXY



Alejandro Agroba Castro



2º ASIR





Índice de contenido

1.1 Alta disponibilidad…………………………………………………………………………………3
1.2 Objetivos del proyecto………………………………………………………………………….3

2. Configuración de los servicios
2.1 Servidores MariaDB Galera……………………………………………………………………4
2.2 Firewalld……………………………………………………………………………………………….5
2.3 MariaDB Galera Cluster…………………………………………………………………………5
2.4 Clustercheck………………………………………………………………………………………….6
2.5 Instalación y configuración
HAPROXY…………………………………………………………………………………………………….8
2.6 Pila LAMP……………………………………………………………………………………………..11
2.6.1 Apache………………………………………………………………………………………………11
2.6.2 Mariadb…………………………………………………………………………………………….11
2.6.3 PHP……………………………………………………………………………………………………11
2.6.4 Wordpress…………………………………………………………………………………………12


3. Comprobaciones
3.1 Replicación MARIADB……………………………………………………………………………13
3.2 Acceso a la base de datos desde HAProxy…………………………………………….14
3.3 Monitorización desde Servidorweb.……………………………………………………..16
3.4 Pruebas de funcionamiento Wordpress……………………………………………….16


4. Conclusiones………………………………………………………………………………………….19


5. Bibliografía…………………………………………………………………………………………….19



Alejandro Agroba Castro



2º ASIR





1.1 Alta disponibilidad ¿Qué es un cluster en alta disponibilidad?
Un cluster HA (High Availability) es un sistema orientado a ofrecer y garantizar servicios en Alta
Disponibilidad, fiabilidad y de continuidad operativa. Se basa en máquinas redundantes (o
nodos) que asumen el servicio cuando algún componente del sistema falla el otro sigue
ofreciendo el servicio.



1.2Objetivos del proyecto
El objetivo de este proyecto es la instalación de un clúster MariaDB Galera en CentOS 7, con
un balanceador de carga con HAProxy. Voy a utilizar 5 máquinas CentOS7, 3 de ellos serán los
nodos servidores de bases de datos, 2 nodos estarán activos y 1 actúa como nodo de copia de
seguridad. El cuarto servidor será utilizado para el balanceador de carga HAProxy. Para el
algoritmo de balanceo de carga, voy a utilizar leastconn (Este algoritmo, entrega una nueva
conexión al servidor que tenga la menor cantidad de conexiones en el momento. Least
Connections trabaja mejor en ambientes donde los servidores y otros equipamientos tienen
capacidades similares. La última máquina será un servidor web donde se instalará un
Wordpress para comprobar el funcionamiento del balanceo de carga.



Alejandro Agroba Castro



2º ASIR





Lectura y escritura en cada nodo del cluster.

2.1 Servidores MariaDB Galera
MariaDB Galera Cluster es un cluster multi-maestro síncrono que se basa en MariaDB. Las
ventajas:
 Replicación síncrona.
 Topología multi-maestro.

 Control activo de los miembros del cluster.

Modificamos el fichero */etc/hosts* y añadimos los nombres y la direcciones de los nodos.
[root@localhost mariadb1]# nano /etc/hosts
192.168.1.134 mariadb1
192.168.1.135 mariadb2
192.168.1.136 mariadb3

Desactivamos Selinux ya que causa conflicto con MariaDB
[root@localhost mariadb1]# nano /etc/sysconfig/selinux
SELINUX=disabled



A continuación creamos un fichero con el repositorio en el directorio .repo

[root@localhost mariadb1]# nano /etc/yum.repos.d/mariadb.repo
# MariaDB 10.0 CentOS repository list - created 2015-07-09 14:56 UTC
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1



Instalamos los paquetes que nos harán falta para seguir con el proyecto

[root@localhost mariadb1]# yum -y install MariaDB-Galera-server
MariaDB-client galera rsync xinetd

[root@mariadb2 mariadb2]# yum install
http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-
release-0.1-3.noarch.rpm

[root@mariadb2 mariadb2]# yum install percona-xtrabackup percona-
toolkit



Alejandro Agroba Castro



2º ASIR




2.2 Firewalld



Ahora abrimos los puertos de CentOS7 para los servicios que hemos instalado. Esto se hace
con el siguiente comando, firewall-cmd.
 3306 = Se utiliza para las conexiones de cliente de MySQL / MariaDB.
 4567= Tráfico de replicación Galera Cluster.
 873= Puertos rsync.
 4444 = Para todos los demás State Transfer instantánea (SST).
 9200 = Xinetd - Clustercheck.
[root@localhost mariadb1]#systemctl start firewalld
[root@localhost mariadb1]#firewall-cmd --permanent --add-port=3306/tcp
[root@localhost mariadb1]#firewall-cmd --permanent --add-port=4567/tcp
[root@localhost mariadb1]#firewall-cmd --permanent --add-port=873/tcp
[root@localhost mariadb1]#firewall-cmd --permanent --add-port=4444/tcp
[root@localhost mariadb1]#firewall-cmd --permanent --add-port=9200/tcp

Recargamos el servicio para que los cambios tengan efecto

[root@localhost mariadb1]#firewall-cmd --reload

2.3 MariaDB Galera Cluster

Nos dirigimos al archivo de configuración para añadir los siguientes atributos que formarán
nuestro cluster. Este fichero tenemos que modificarlos en los 3 nodos donde el atributo
wsrep_node_address cambiará según la dirección IP del nodo.

[root@localhost mariadb1]#nano /etc/my.cnf.d/ server.cnf
[galera]
# Mandatory settings
wsrep_provider=/usr/lib64/galera/libgalera_smm.so # Ruta libreria
wsrep_cluster_address="gcomm://192.168.1.134,192.168.1.135,192.168.1.1
36" # Ip de los nodos
binlog_format=row
default_storage_engine=InnoDB #Motor almacenamiento
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
# Nombre del cluster
wsrep_cluster_name="mariadb_cluster"
# Añadir las direcciones IP de los nodos
wsrep_node_address="192.168.1.134"
# Metodo de replicación
wsrep_sst_method=rsync
# Optional setting
#wsrep_slave_threads=1
#innodb_flush_log_at_trx_commit=0

Alejandro Agroba Castro



2º ASIR





Iniciar el servicio para crear el cluster con el siguiente comando.

[root@localhost mariadb1]#/etc/rc.d/init.d/mysql bootstrap



Ahora vamos a por los otros dos nodos donde solo tenemos que levantar el servicio de MySQL

root@localhost mariadb2]# /etc/init.d/mysql start
root@localhost mariadb3]# /etc/init.d/mysql start



Podemos comprobar el estado de los log entrando en el siguiente fichero:

[root@mariadb2 mariadb2]# cat /var/lib/mysql/mariadb2.err

Comprobamos el tamaño del cluster para que ver que los 3 nodos están activos

[root@mariadb1 mariadb1]# mysql -u root -p -e "SHOW STATUS LIKE
'wsrep_cluster_size'"
Enter password:
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 3 |
+--------------------+-------+

2.4 Instalación y configuración Clustercheck


Clustercheck es un script capaz de hacer que un proxy pueda monitorizar el servidor de
MariaDB. Vamos con la configuración:

Lo primero que debemos hacer es ir al directorio /tmp y descargarnos el script

[root@mariadb1mariadb1]# cd /tmp
[root@mariadb1mariadb1]# wget https://raw.githubusercontent.com/olafz/
percona-clustercheck/master/clustercheck


Alejandro Agroba Castro



2º ASIR





A continuación debemos darle permiso de ejecución y moverlo al directorio /usr/bin

[root@mariadb1mariadb1]# chmod + x clustercheck
[root@mariadb1mariadb1]# mv clustercheck / usr / bin /
[root@mariadb1mariadb1]# nano /etc/xinetd.d/mysqlchk
# default: on
# description: mysqlchk
service mysqlchk
{
disable = no
flags = REUSE
socket_type = stream
port = 9200 # Puerto utilizado por xinetd para
clustercheck
wait = no
user = nobody
server = /usr/bin/clustercheck
log_on_failure += USERID
only_from = 0.0.0.0/0
per_source = UNLIMITED
}


Añadimos Clustercheck a la lista de servicios. Debemos buscar el servicio que está escuchando
en el puerto 9200 y comentarlo y añadir una nueva línea para mysqlchk.

[root@mariadb1mariadb1]# nano /etc/services
#wap-wsp 9200/tcp # WAP connectionless session service
#wap-wsp 9200/udp # WAP connectionless session service
mysqlchk 9200/tcp # mysqlchk


Iniciamos el servicio de xinetd que nos muestra el estado del cluster para saber si le están
llegando las peticiones

[root@mariadb1mariadb1]# systemctl start xinetd

Para poder comprobar que Clustercheck funciona correctamente, debemos crear un nuevo
usuario en MySQL. Accedemos a MariaDB y crear un nuevo usuario con el nombre
"clustercheckuser" y la contraseña "clustercheckpassword!". Es el usuario y la contraseña que
viene definida en el script que vamos a utilizar

MariaDB [(none)]> GRANT PROCESS ON *.*TO'clustercheckuser'@'localhost'
IDENTIFIED BY 'clustercheckpassword!';

Comprobamos que todos los nodos están sincronizados

Alejandro Agroba Castro



2º ASIR





2.5 Instalación y configuración HAProxy
Modificamos el fichero */etc/hosts* y añadimos los nombres y la direcciones de los nodos.
[root@localhost clustercheck]# nano /etc/hosts
192.168.1.134 mariadb1
192.168.1.135 mariadb2
192.168.1.136 mariadb3



Instalamos el HAProxy

Modificamos el fichero */etc/hosts* y añadimos los nombres y la direcciones de los nodos.
[root@localhost clustercheck]# yum install haproxy



Quitamos los comentarios de los puertos UDP.

[root@localhost clustercheck]# nano /etc/rsyslog.conf
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 51

Añadir la configuración en el directorio HAProxy rsyslog.d donde indicamos los log de acceso e
información guardamos y reiniciamos el servicio

[root@localhost clustercheck]# nano /etc/rsyslog.d/haproxy.conf
local2.=info /var/log/haproxy-access.log
local2.notice /var/log/haproxy-info.log
[root@localhost clustercheck]# systemctl resta
  • Links de descarga
http://lwp-l.com/pdf15690

Comentarios de: Cluster alta disponibilidad MariaDB Galera Haproxy (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad