Skip to content

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

ssh 10.16.32.38 -l seu_usuario

Instale o keepalived

apt install -y keepalived

Acesse o diretorio /etc/keepalived e edite o arquivo keepalived.conf

cd /opt/etc/keepalived

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

systemctl start keepalived

Verificando

systemctl status keepalived

4.2 Node secundário

Acesse a máquina por SSH

ssh 10.16.32.39 -l seu_usuario

Instale o keepalived

apt install -y keepalived

Acesse o diretorio /etc/keepalived e evite o arquivo keepalived.conf

cd /opt/etc/keepalived

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.

systemctl start keepalived

Verificando

systemctl status keepalived

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