En el anterior articulo he compartido mis experiencias con un servidor tolerante a errores con cierta autonomía para reiniciar servicios en el caso que fallen. Eso al menos a mi parecer es lo mas importante en un HAS ya que si por mucha redundancia que tenga un servicio no se es capaz de detectar cuando se a congelado/bloqueado, no podremos dar un servicio óptimo en ningún momento.

¿Cuál sería el siguiente paso? Balanceo de carga. Tener un HAproxy sirviendo dos instancias de un servicio web tiene sus beneficios. Uno de ellos es que la carga se distribuye entre ellos. Otro de los beneficios es que si un servicio se cae el tráfico debería ser redirigido de forma automática (mientras que MONIT ya nos ha enviado una alerta sobre el servicio caído) al servidor que aun funciona.

Usar HAProxy es muy sencillo (como casi todo en linux). Basta con instalarlo y despues editar la configuracion del proxy.

frontend http_front
   bind *:80
   stats uri /haproxy?stats
   default_backend http_back

backend http_back
   mode http
   balance roundrobin
   option forwardfor
   http-request set-header X-Forwarded-Port %[dst_port]
   http-request add-header X-Forwarded-Proto https if { ssl_fc }
   option httpchk HEAD / HTTP/1.1\r\nHost:dominio.com
   server webserver01 10.0.0.1:80 check 
   server webserver02 10.0.0.2:80 check 

Es cierto que esto requiere más hardware… ¿Es posible instalarlo todo en el mismo servidor? La respuesta es sí, se puede tener el servidor proxy y de hecho todas las instancias del servidor web metidos en la misma máquina. Aunque sinceramente no le veo mucho sentido a tener todos los procesos en la misma máquina.

Cluster de base de datos

Tenemos un Proxy de balanceo que nos soluciona el problema con la mayoría de los servicios. ¿Pero qué pasa con la bases de datos? Pues para eso también tenemos soluciones. Oracle ofrece un producto empresarial (Oracle RAC) que evidentemente funciona muy bien y es maravilloso. Ahora cuesta lo que vale.

Si no estás implementando un sistema HAS para una empresa y lo haces para aprender todo esto sobre estas palabras tan modernas ( High availability, redundancy, load balancing… ) estás de suerte: MariaDB Galera ofrece una solución de libre descarga en entornos Linux y la configuracion básica no es tan complicada.

MariaDB Galera y MySQL NDB

MariaDB ya trae sus propias herramientas para configurar replicación desatendida de base de datos. Hay información más que suficiente para poder configurar una instalación básica sencillamente copiando y pegando. Con una búsqueda en Google es suficiente.

MySQL NDB también es una tecnología muy interesante y dependiendo de las necesidades de la instalación podría ser una mejor alternativa que Galera. La instalación es un poco más compleja que Galera pero dentro de lo habitual en entornos Linux. También con una sencilla búsqueda en Google se puede encontrar toda la información necesaria.

Y para saber cual de los motores de base de datos es el adecuado y de paso para conocer las diferencias entre Galera vs NDB Cluster recomiendo el siguiente video:

Galera Cluster for MySQL vs MySQL (NDB) Cluster: A High Level Comparison de Severalnines

Otras tecnologias

Por supuesto me dejo mucho en el tintero: PeaceMaker, ProxySQL,Corosync, Heartbeat… Pero con este articulo solo queria expandir un poco más en el apasionante mundo de los servicios de alta disponibilidad.