Percona Live 17 - Open Source Databases Conference #
Day One #
MySQL Load Balancers - MaxScale, ProxySQL, HAProxy, MySQL Router & nginx - a close up look #
Un excelente resumen de los pros y contras de cada herramienta "HA" y en que casos combiene usar uno u otro.
- HAProxy
-
Soporta balanceo de carga y es un proxy a nivel TCP
-
Tiene la habilidad de separar lectura de escritura pero necesita un puerto específico para cada backend
-
No entiende de MySQL, solo maneja la autenticación
-
Se puede combinar con clustercheck para lograr monitoreo del MySQL
-
Ejemplo de configuración:
listen haproxy_172.30.3.215_3307
bind *:3307
mode tcp
:
listen haproxy_172.30.3.215_3308
bind *:3308
mode tcp
keepalived
- diseñado para detectar fallas de nodos y moverse mediante una VIP (Virtual IP)
- una sola VIP para las conexiones no es posible balanceo
- puede ser util para contruir HA si te conectas a un solo nodo
- se puede usar con Galera Cluster para HA
- se instala keepalived en todos los nodos
- usando mysqlchk o percona clustercheck
nginx
- Si ya estás usando nginx como proxy reverso lo podes aprovechar
- Es similar a haproxy
- Se puede separar Lectura/Escritura usando 2 puertos
- No entiende los estados de MySQL/Galera
- Puede ser usado con clustercheck-iptables
maxscale
- Automáticamente monitorea la salud de los nodos
- Entiende los estados de Mysql/Galera
- Puede separar Lectura/Escritura
- Soporta SSL
- Soporta Replicacion Mysql/Galera
- Posee integración con Nagios
- Maneja varios tipos de ruteo
- Dificultad para obtener estadísticas de tráfico en tiempo real
- Desde la version 2.0 no es GPL
- Hay un fork GPL de la versión 1.3 por AirBnB
- Tiene serios problemas de escabilidad con mas de 100 threads concurrentes
proxysql
- Diseñado para topologías complejas
- Implementa separación Lectura/Escritura
- Soporta multiples grupos de hosts
- Monitorea la salud de los backends
- Ruteo avanzado basado en reglas de queries
- Interfaz de Administración en SQL
- Configuración al estilo Cisco
- Casi todas las variables pueden ser cambiadas dinámicamente sin reiniciar el servicio
- Reconoce queries usando regex, hash, user, schema, ip, port
- Ruteo de queries basado en condiciones
- Permite reescribir queries
- Cache de queries
- Minimiza las conexiones a los backends utilizando multiplex connections
- Soporte Replicacion MySQL y y Replicacion de Grupo
- Soporta Galera Cluster utilizando scripts externos
- Estadísticas detalladas del tráfico manejado por ProxySQL
Use ProxySQL to Improve Your MySQL High Availability Solution #
ProxySQL es un HAProxy que entiende de SQL, puede hacer cosas en función de regex de queries o por queries exactas, reescribir queries, hacer balanceo, es muy liviano y se usa el mysql-client para configurarlo aunque por detrás es un sqlite.
En la charla mostraron diferentes formas de usar ProxySQL, como configurarlo y mejores prácticas, muy didáctica.
-
https://www.percona.com/live/17/sessions/mysql-load-balancers-maxscale-proxysql-haproxy-mysql-router-nginx-close-look ↩︎
-
https://www.percona.com/live/17/sites/default/files/slides/PLSC%20-%20MySQL%20Loadbalancers.pdf ↩︎
-
https://www.percona.com/live/17/sessions/use-proxysql-improve-your-mysql-high-availability-solution ↩︎
-
https://www.percona.com/live/17/sites/default/files/slides/Proxysql_HA_PLSC_2017.pdf ↩︎