
Hospedei duas VMs na mesma máquina, uma é de natureza ativa, ou seja, hospeda um serviço e está conectada a um cliente (o cliente está sendo executado diretamente na máquina host). Tenho que implementar um serviço de tolerância a falhas, ou seja, na falha da VM primária, o cliente se conecta automaticamente à VM secundária, visto que ambas as VMs estão hospedando o mesmo serviço.
Li em algum lugar sobre IPs flutuantes, mas quando verifiquei, descobri que é um serviço pago. Existe alguma maneira simples de conseguir isso que não exija nenhum dinheiro para gastar?
A máquina é baseada em Linux, especificamente, o host é ubuntu 20.* e as VMs têm ubuntu 18.*.
Responder1
você pode obter "IPs flutuantes", também conhecidos como VIP ou IP virtual com:
- manutenção de atividade (VRRP)
- marca-passo/corosync
- carpa (http://manpages.ubuntu.com/manpages/precise/man4/carp.4freebsd.html)
Para sua informação: você também pode obter redundância no cliente, permitindo que ele escolha o(s) servidor(es) íntegro(s) em uma lista.
observe que a implementação de redundância entre VMs nomesmo anfitriãonão é recomendado. (o host é o ponto único de falha)
Responder2
Sugiro que você use um proxy reverso como balanceador de carga na frente de seus aplicativos/VMs. Você pode usar algo como nginx
ouhaproxy
A configuração do nginx seria algo como abaixo:
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
server 192.0.0.1 backup;
}
server {
location / {
proxy_pass http://backend;
}
}
}
ele implementa automaticamente verificações de integridade para hosts upstream, portanto, se algum host upstream ficar inativo, ele será automaticamente detectado pelo nginx, que interromperá o envio de solicitações para hosts não íntegros.
Você pode ler mais em: https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/