LINUX

Cómo configurar el clúster de Percona con HAproxy Loadbalancer en CentOS 7

Anteriormente mostramos cómo configurar el clúster MariaDB Galera con HAproxy, y hoy haremos una configuración similar con la distribución de MySQL de Percona. Percona es la empresa que tiene una gran experiencia con MySQL y MongoDB, y hacen sus propias distribuciones de esas bases de datos, así como motores de almacenamiento para ambas bases de datos. Hoy solo nos concentraremos en MySQL, y no en la oferta de MongoDB de esta empresa.

Configuración de hosts, firewall y repositorios

Primero comience configurando el archivo hosts. Tenemos tres nodos para el clúster Percona y un nodo para HAproxy. Mi archivo de hosts en los 4 servidores tiene esas cuatro líneas:

10.17.0.8 centos-percona01
10.17.0.9 centos-percona02
10.17.0.10 centos-percona03
10.17.0.11 centos-haproxy

A continuación, configuremos el firewalld en todos los hosts excepto HAproxy uno. Ese requerirá diferentes configuraciones y lo haremos segundo. Primero, iniciemos Firewalld en los tres nodos de Percona.

systemctl start firewalld

Entonces permitimos el servicio mysql. Pecona es una distribución mysql, por lo que usa el mismo puerto que mysql.

firewall-cmd --zone=public --add-service=mysql --permanent

A continuación, agregamos otros puertos necesarios:

firewall-cmd --zone=public --add-port=3306/tcp --permanent

firewall-cmd --zone=public --add-port=4567/tcp --permanent
firewall-cmd --zone=public --add-port=4568/tcp --permanent
firewall-cmd --zone=public --add-port=4444/tcp --permanent
firewall-cmd --zone=public --add-port=4567/udp --permanent

firewall-cmd --zone=public --add-port=9200/tcp --permanent

And reload the firewall

 firewall-cmd --reload

Cuando termine, a continuación, debemos instalar epel release

yum instalar epel-release

A continuación instalamos socat desde el repositorio de EPEL

yum install socat

Y luego eliminamos mariadb-libs porque entra en conflicto con percona

yum remove mariadb-libs

Instalación y configuración de Percona

Necesitamos agregar un repositorio que contenga percona

yum install https://www.percona.com/redir/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm

Ahora podemos instalar el clúster percona y todas las demás dependencias

yum install Percona-XtraDB-Cluster-server-56 Percona-XtraDB-Cluster-client-56 Percona-XtraDB-Cluster-shared-56 percona-toolkit percona-xtrabackup Percona-XtraDB-Cluster-galera-3 rsync nc

Y comienza mysql

systemctl start mysql

Lo primero que hacemos en todos los servidores mysql es ejecutar el script mysql_secure_installation. Hagamoslo.

mysql_secure_installation

Debe ingresar su nueva contraseña de root y responder y a todas las preguntas.

Cuando termine, inicie sesión en su cuenta raíz.

mysql -u root -p

enter password

Y crea sstuser tu clúster

mysql> create user sstuser@'%' identified by 'strongpassword';
Query OK, 0 rows affected (0.01 sec)

mysql> grant all on *.* to sstuser@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

Luego de esto debemos detener Mysql para editar los archivos de configuración.

systemctl stop mysql

nano /etc/my.cnf

En la configuración, busque esas líneas y haga que se vean exactamente así, simplemente cambie su propia contraseña y cambie el nombre y la dirección del nodo por su nombre de host para cada servidor

wsrep_cluster_address = gcomm://centos-percona01,centos-percona02,centos-percona03
wsrep_provider = /usr/lib64/galera3/libgalera_smm.so

wsrep_slave_threads = 8
wsrep_cluster_name = Cluster Percona XtraDB
wsrep_node_name = centos-percona01
wsrep_node_address = centos-percona01
wsrep_sst_method = xtrabackup-v2
wsrep_sst_auth = sstuser:strongpassword

Tenga en cuenta que la primera línea en el primer servidor (centos-percona01) puede estar vacía, así:

wsrep_cluster_address = gcomm://

Una vez realizada la configuración, necesitamos arrancar el primer nodo y luego normalmente comenzar el segundo y el tercero.

En la primera ejecución del servidor

systemctl start mysql@bootstrap

en la segunda y tercera ejecución

systemctl start mysql

A continuación, debemos probar si el clúster está funcionando.

mysql -u root -p

introducir la contraseña

Y luego ejecuta estos comandos:

SHOW STATUS LIKE 'wsrep_local_state_comment';

show global status like 'wsrep_cluster_size';

Deberían obtener un resultado como este:

estado de prueba del clúster wsrep

Con esta configuración de clúster se concluye.

Configuración de HAproxy

Primero, necesitamos clustercheck instalado en todos los nodos del clúster para que el clúster se pueda reparar con HAproxy. Consigamos el script con wget

wget https://raw.githubusercontent.com/olafz/percona-clustercheck/master/clustercheck

El script debe hacerse ejecutable y moverse a uno de sus directorios $ PATH.

chmod +x clustercheck

mv clustercheck /usr/bin/

Ahora también necesitamos mysqlchk que está incluido en el paquete xinetd:

yum install xinetd

A continuación, movemos crear usuario clustercheck en la base de datos. Podemos escribir esto solo en el primer nodo

mysql -u root -p

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

exit;

A continuación, podemos probar si clustercheck funciona como se esperaba:

[root@centos-percona01 ~]# clustercheck
HTTP/1.1 200 OK
Content-Type: text/plain
Connection: close
Content-Length: 40

Percona XtraDB Cluster Node is synced.

A continuación, pasamos a la configuración de xinetd, xinetd debe agregarse a la lista de servicios.

nano /etc/services

Usamos CTRL-W para encontrar la parte donde está el puerto 9200, luego recomendamos los servicios que usan ese puerto y en su lugar agregamos una nueva línea. Debe verse así:

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

Una vez que hayamos terminado, salvamos. Tenga en cuenta que todos los nodos del clúster, excepto HAproxy, deben hacerlo.

Ahora es el momento de iniciar sesión en nuestro servidor HAporoxy. Primero necesitamos hacer una copia de seguridad de la configuración de haproxy.

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

Entonces haremos uno nuevo desde cero.

nano /etc/haproxy/haproxy.cfg

Podemos copiar Configuración de HAproxy desde aquí, excepto que estas tres líneas deben cambiarse:

server centos-percona01 10.132.84.186:3306 check port 9200 inter 12000 rise 3 fall 3
server centos-percona02 10.132.84.141:3306 check port 9200 inter 12000 rise 3 fall 3
server centos-percona03 10.132.84.67:3306 check port 9200 inter 12000 rise 3 fall 3

Las partes resaltadas deben cambiarse con sus nombres de host y sus direcciones. A continuación, debemos iniciar firewalld en el servidor haproxy y permitir los puertos que necesitamos usar

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

Después de eso, necesitamos volver a cargar el firewall.

firewall-cmd --reload

Por fin, inicie haproxy

systemctl start haproxy

La configuración ha terminado, ahora debemos probar.

Prueba de HAproxy

Apuntemos el navegador a la dirección IP pública del servidor HAproxy en el puerto 9000:

estadísticas de haproxy

Todos los nodos están en línea. A continuación, instalemos el cliente percona en el servidor haproxy para que podamos intentar consultar el clúster desde allí.

yum install https://www.percona.com/redir/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm

yum install Percona-XtraDB-Cluster-client-56

E intentemos ver si podemos tener una consulta de este servidor haproxy:

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

consulta desde el nodo haproxy

Conclusión

Hemos configurado el clúster de 3 nodos de Percona XtraDB con balanceo de carga por HAproxy. Es una configuración similar a la del artículo de la semana pasada con MariaDB y Galera, pero con el motor de almacenamiento Percona y sin WordPress. Esta configuración de Percona se puede utilizar para alojar una gran variedad de conjuntos de datos, entre otras cosas, puede volver a utilizarla con WordPress, como en nuestro artículo anterior. Con eso concluimos 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