Instalar Zabbix 7.0 HA + InnoDB Cluster en k8s.
Anteriormente, había implementado en Kubernetes(k8s) uno de los software Open Source mas utilizado para el monitoreo de infraestructuras y aplicaciones de la actualidad Zabbix. Comencemos brevemente por el inicio.
¿Que es Zabbix?
Zabbix es una solución enterprise de código abierto para el monitoreo. Fue creado por Alexei Vladishev y actualmente esta desarrollado y soportado por Zabbix SIA. Zabbix es un software que monitorea numerosas métricas de una red y la salud e integridad de nuestros servidores, maquinas virtuales, aplicaciones, servicios, base de datos, sitios webs, cloud y un sin fin de elementos mas. Zabbix utiliza diferentes mecanismos de notificaciones que permiten a los usuarios configurar alertas para numerosos eventos. Lo que nos permite reaccionar rápidamente a los problemas.
Los principales componentes de Zabbix son:
- Zabbix Server: encargado de recoger las métricas, detectar anomalías o problemas y generar las notificaciones.
- Zabbix Frontend: interfaz web para la administración de la configuración y visualización de las métricas, gestión de usuarios, notificaciones,etc.
- Zabbix Database: persiste la configuración de Zabbix y mantiene los datos históricos de las métricas recolectadas.
Los cuales pueden ser instalados en un mismo servidor o dependiendo de nuestro ambiente ser distribuido en una granja de servidores, en donde cada uno ejecutara un rol definido.
Fuente: https://www.zabbix.com/la/features
Ejemplo de configuraciónes de hardware
Installation size | Monitored metrics1 | CPU/vCPU cores | Memory (GiB) |
Database | Amazon EC22 |
---|---|---|---|---|---|
Small | 1 000 | 2 | 8 | MySQL Server, Percona Server, MariaDB Server, PostgreSQL |
m6i.large/m6g.large |
Medium | 10 000 | 4 | 16 | MySQL Server, Percona Server, MariaDB Server, PostgreSQL |
m6i.xlarge/m6g.xlarge |
Large | 100 000 | 16 | 64 | MySQL Server, Percona Server, MariaDB Server, PostgreSQL, Oracle |
m6i.4xlarge/m6g.4xlarge |
Very large | 1 000 000 | 32 | 96 | MySQL Server, Percona Server, MariaDB Server, PostgreSQL, Oracle |
m6i.8xlarge/m6g.8xlarge |
1 1 metric = 1 item + 1 trigger + 1 graph
2 Example with Amazon general purpose EC2 instances, using ARM64 or x86_64 architecture, a proper instance type like Compute/Memory/Storage optimised should be selected during Zabbix installation evaluation and testing before installing in its production environment.
Fuente: https://www.zabbix.com/documentation/current/en/manual/installation/requirements
La instalación anterior mostraba una implementación en alta disponibilidad (HA) únicamente del Zabbix Server en un ambiente de microservicios utilizando el orquestador Kubernetes. Recientemente Zabbix acaba de estrenar su nueva versión (7.0.0) , aprovecho para actualizar las notas, en donde se implementara en HA los tres componentes, con el fin de tener una instalación sin un SPOF (Single Point Of Failure).
Implementación de la alta disponibilidad
Nuestra solución deberá contemplar una implementación en HA de los tres componentes de Zabbix.
- Zabbix Server: ofrece una solución de manera nativa de alta disponibilidad, Esta permite tener un conjunto de instancias sincronizadas trabajando en manera activa-pasiva. Un único servidor puede estar trabajando de manera activa, mientras el resto se mantiene en modo pasivo, si la instancia activa presenta algún tipo de falla, una replica pasiva es seleccionada para convertirse en el nuevo servidor activo.
Foto 1.1 HA Activo-Pasivo
Fuente: https://www.zabbix.com/documentation/current/es/manual/concepts/server/ha
Foto 1.2 Salida del comando zabbix_server -R ha_status
Fuente: https://www.zabbix.com/documentation/current/es/manual/concepts/server/ha
- Zabbix Frontend: al utilizar los datos directamente de la base de datos, podemos tener múltiples replicas efímeras, solo debemos balancear las peticiones de los usuarios.
- Zabbix Database: si bien la alta disponibilidad depende directamente del motor de base de datos que estemos utilizando, en este ejemplo se utilizara como punto de partida el InnoDB Cluster implementado anteriormente.
Foto 1.3 InnoDB Cluster
Ambiente a utilizar para implementar el stack de Zabbix en HA.
Dentro de los nodos de k8s se distribuirán las replicas del Zabbix Server y del Zabbix Frontend. En el InnoDB Cluster se implementara la base de datos del componente Zabbix Database.
Al finalizar la implementación, generaremos algún fallo intencional que nos permita probar el HA de cada componente.