Unicast
1. O que é?
O Keepalived é um software de rotamento escrito em C.
Muito usado para fazer Load Balancing e HA.
Eu uso quando preciso garantir um HA básico em meu Proxy Reverso HTTP (NGINX) ou em meu TCP Streaming (NGINX).
2. Ambiente
Teremos dois nodes rodando o serviço keepalived.
Um primário, outro secundário.
Teremos um IP que poderá flutuar de um nó para o outro.
IP dos Nodes
- 10.16.32.38
- 10.16.32.39
IP Flutuante
- 10.16.32.48
3. Reqs
O serviço do keepalived tem que estar instalado nos dois nodes.
O nó primário precisa se conectar via protocolo VRRP no nó secundário e vice-versa.
3.1 Como funciona?
Imagine que o poc.gutocarvalho.net aponta para o IP Público 12.12.12.12, e este por usa vez redireciona as conexões TCP 80/443 para o IP 10.16.32.48.
O IP 10.16.32.48 é o nosso VIP, ou IP Virtual.
Eu gosto de chamar de IP Flutuante também.
Esse IP ficará preferencialmente disponível como alias da interface com o IP 10.16.32.38, que é o nó primário, isso significa que o nó primário vai responder pelos IPs 10.16.32.38 e 10.16.32.48.
Caso o nó primário pare de se comunicar com o nó secundário, o IP então vai será configurado como alias da interface de rede com IP 10.16.32.39, ou seja o node secundário irá responder pelos IPs 10.16.32.39 e 10.16.32.48.
Caso o nó primário volte, o IP volta para o nó primário.
4. Instalando Keepalived
4.1 Node Primário
Acesse a máquina por SSH
Instale o keepalived
Acesse o diretorio /etc/keepalived e edite o arquivo keepalived.conf
Crie um arquivo chamado keepalived.conf com o conteúdo
vrrp_instance MAIN {
state MASTER
interface ens192
virtual_router_id 2
priority 200
advert_int 1
unicast_src_ip 10.16.32.38
unicast_peer {
10.16.32.39
}
authentication {
auth_type PASS
auth_pass SUA_SENHA_AQUI
}
virtual_ipaddress {
10.16.32.48/26 dev ens192
}
track_interface {
ens192
}
}
Após ajustes inicie o keepalived
Verificando
4.2 Node secundário
Acesse a máquina por SSH
Instale o keepalived
Acesse o diretorio /etc/keepalived e evite o arquivo keepalived.conf
Crie um arquivo chamado keepalived.conf com o conteúdo
vrrp_instance MAIN {
state BACKUP
interface ens192
virtual_router_id 2
priority 100
advert_int 1
unicast_src_ip 10.16.32.39
unicast_peer {
10.16.32.38
}
authentication {
auth_type PASS
auth_pass SUA_SENHA_AQUI
}
virtual_ipaddress {
10.16.32.48/26 dev ens192
}
track_interface {
ens192
}
}
Após ajustes inicie o keepalived.
Verificando
5. Como verifico?
Voce pode desligar o keepalived no primário e vai ver o IP sendo configurado no secundário.
Ao religar o keepalived no primário, depois de alguns segundos o IP deve ser desligado no secundário e voltar para o primário.
6. Refs
- https://www.keepalived.org/
- https://www.redhat.com/en/blog/keepalived-basics