
He alojado dos máquinas virtuales en la misma máquina, una es de naturaleza activa, es decir, aloja un servicio y está conectada a un cliente (el cliente se ejecuta directamente en la máquina host). Tengo que implementar un servicio de tolerancia a fallas, es decir, si falla la máquina virtual principal, el cliente se conecta automáticamente a la máquina virtual secundaria, dado que ambas máquinas virtuales alojan el mismo servicio.
Leí en alguna parte sobre IP flotantes, pero cuando revisé, descubrí que es un servicio pago. ¿Existe alguna forma sencilla de lograr esto que no requiera gastar dinero?
La máquina está basada en Linux, específicamente, el host es ubuntu 20.* y las VM tienen ubuntu 18.*.
Respuesta1
Puedes lograr "IP flotantes", también conocidas como VIP o IP virtual con:
- mantener vivo (VRRP)
- marcapasos/corosync
- carpa (http://manpages.ubuntu.com/manpages/precise/man4/carp.4freebsd.html)
Para su información: también puede lograr redundancia en el cliente permitiéndole elegir los servidores en buen estado de una lista.
Tenga en cuenta que la implementación de redundancia entre máquinas virtuales en elmismo anfitriónno es recomendado. (el anfitrión es el único punto de falla)
Respuesta2
Le sugiero que utilice un proxy inverso como equilibrador de carga frente a sus aplicaciones/VM. Puedes usar algo como nginx
ohaproxy
La configuración de nginx sería algo como lo siguiente:
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
server 192.0.0.1 backup;
}
server {
location / {
proxy_pass http://backend;
}
}
}
implementa automáticamente comprobaciones de estado para los hosts ascendentes, por lo que si algún host ascendente falla, nginx lo detectará automáticamente y dejará de enviar solicitudes a hosts en mal estado.
Puedes leer más en: https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/