logotype

Etapa 1 – Instalando HAProxy e Keepalived para Load Balancer

Leitura estimada: 4 minutos 39 views Colaboradores

Ambiente

  • lb1: 192.168.1.190
  • lb2: 192.168.1.191
  • VIP: 192.168.1.200 (o IP flutuante que o kubeadm vai usar)

Passo 1 – Pré-requisitos

  • Ubuntu 22.04 (ou similar)
  • Interface de rede: eth0 (verifique com ip a)
  • Acesso root ou sudo

Passo 2 – Instalar HAProxy

Execute em lb1 e lb2:

sudo apt update && sudo apt install -y haproxy

Passo 3 – Configurar o HAProxy

Em ambos (lb1 lb2):

Edite o arquivo /etc/haproxy/haproxy.cfg:

sudo nano /etc/haproxy/haproxy.cfg

Substitua o conteúdo por:

global
    log /dev/log local0
    maxconn 2000
    daemon

defaults
    log     global
    mode    tcp
    option  tcplog
    timeout connect 10s
    timeout client 1m
    timeout server 1m

frontend kubernetes-api
    bind *:6443
    default_backend kubernetes-masters

backend kubernetes-masters
    balance roundrobin
    server master1 192.168.1.201:6443 check
    server master2 192.168.1.202:6443 check

Altere os IPs 192.168.1.201 e 202 conforme o IP dos seus control planes.

Salve e reinicie o serviço:

sudo systemctl restart haproxy
sudo systemctl enable haproxy

Passo 4 – Instalar Keepalived

Execute em lb1 e lb2:

sudo apt install -y keepalived

Passo 5 – Configurar o Keepalived

Em lb1 (PRINCIPAL):

cat <<EOF | sudo tee /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 101
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass kubevip
    }
    virtual_ipaddress {
        192.168.1.200
    }
}
EOF

Em lb2 (BACKUP):

cat <<EOF | sudo tee /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass kubevip
    }
    virtual_ipaddress {
        192.168.1.200
    }
}
EOF


Substitua eth0 se o nome da sua interface for diferente (use “ip add” para conferir).

Passo 6 – Iniciar o Keepalived

Execute em ambos:

sudo systemctl restart keepalived
sudo systemctl enable keepalived

Testar o VIP

De outro host (ou mesmo do master), execute:

ping 192.168.1.200
  • Desligue o lb1 (temporariamente) e veja se o IP flutuante continua pingando via lb2.
  • Ligue de novo e veja se ele reassume.

Agora você pode iniciar instalando seu cluster kubernetes na Etapa 2 – Instalação do Cluster Kubernetes com kubeadm

Código Ansible

  • Instalação dos pacotes
  • Configuração do haproxy.cfg
  • Criação do keepalived.conf
  • Ativação dos serviços

Estrutura dos arquivos

ansible-haproxy-keepalived/
├── hosts
├── install-lb.yml
└── roles/
    └── haproxy_keepalived/
        ├── tasks/
        │   └── main.yml
        └── templates/
            ├── haproxy.cfg.j2
            └── keepalived.conf.j2

Arquivo hosts

[loadbalancers]
lb1 ansible_host=192.168.1.190 priority=101 state=MASTER
lb2 ansible_host=192.168.1.191 priority=100 state=BACKUP
[all:vars]

ansible_user=ubuntu vip=192.168.1.200 interface=eth0

Playbook  install-lb.yml

- name: Instalação do HAProxy e Keepalived nos LBs
  hosts: loadbalancers
  become: yes
  roles:
    - haproxy_keepalived

roles/haproxy_keepalived/tasks/main.yml

- name: Instalar pacotes
  apt:
    name: "{{ item }}"
    state: present
    update_cache: yes
  loop:
    - haproxy
    - keepalived

- name: Copiar arquivo haproxy.cfg
  template:
    src: haproxy.cfg.j2
    dest: /etc/haproxy/haproxy.cfg
    owner: root
    group: root
    mode: '0644'
  notify: Restart HAProxy

- name: Copiar arquivo keepalived.conf
  template:
    src: keepalived.conf.j2
    dest: /etc/keepalived/keepalived.conf
    owner: root
    group: root
    mode: '0644'
  notify: Restart Keepalived

- name: Ativar e iniciar serviços
  systemd:
    name: "{{ item }}"
    enabled: yes
    state: started
  loop:
    - haproxy
    - keepalived

roles/haproxy_keepalived/templates/haproxy.cfg.j2

global
    log /dev/log local0
    maxconn 2048
    daemon

defaults
    log     global
    mode    tcp
    option  tcplog
    timeout connect 10s
    timeout client 1m
    timeout server 1m

frontend kubernetes-api
    bind *:6443
    default_backend kubernetes-masters

backend kubernetes-masters
    balance roundrobin
    server master1 192.168.1.201:6443 check
    server master2 192.168.1.202:6443 check
    server master3 192.168.1.203:6443 check

roles/haproxy_keepalived/templates/keepalived.conf.j2

vrrp_instance VI_1 {
    state {{ state }}
    interface {{ interface }}
    virtual_router_id 51
    priority {{ priority }}
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass kubevip
    }
    virtual_ipaddress {
        {{ vip }}
    }
}

Executar

cd ansible-haproxy-keepalived
ansible-playbook -i hosts install-lb.yml

Resultado

  • lb1 e lb2 prontos com HAProxy e Keepalived
  • IP virtual flutuante em 192.168.1.200
  • Pronto para usar no kubeadm init

Compartilhe este documento

Etapa 1 – Instalando HAProxy e Keepalived para Load Balancer

Ou copiar link

    CONTEÚDO