Uday

Uday

Did You Know?

Advanced visual search system powered by Ajax

Etapa 1 – Instalando HAProxy e Keepalived para Load Balancer

Leitura estimada: 3 minutos 65 visualizações

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

    Criando uma organizations no github

    O que é uma Organizationno GitHub? Uma Organization no GitHub é como uma empresa

    Clonando e pull

    Tópicos: Resolvendo Conflitos no Git O que é um conflito no Git? Um conflito aco

    Trabalhando com Branches

    O que é uma branch? Uma branch (ramo) é como uma linha do tempo separada do seu

    Git e Github

    Conectando ao GitHub e fazendo o primeiro push

    Tópicos:

    Adicionando arquivos e fazendo commits

    Tópicos: Tópicos: Voce também pode reverter um commit Revertendo

    Criando repositório local

    Tópicos: Extras (opcional)

    Instalando o git

    Como instalar o Git No Windows: Ao final, abra o “Git Bash” para usar os comando

    Etepa 5 -Configurar Volumes com Longhorn

    Ótima escolha! 🎯 Longhorn é uma solução de armazenamento distribuído altamente i

    Implementando o Crossplane

    1. Pré-requisitos 2. Instalar o Crossplane via Helm 3. Configurar autenticação A

    Provisionamento em cloud com Crossplane

    Implementar o Kubernetes Dashboard

    Se você está começando com Kubernetes ou quer uma forma prática de visualizar re

    Chat Icon Close Icon