Configuração de Cluster Angie#

Este guia descreve o processo de criação de um cluster Angie tolerante a falhas com sincronização automática de configuração e failover de endereço IP virtual.

Preparando Nós do Cluster para Sincronização#

O primeiro passo é preparar todos os nós do cluster configurando contas de usuário e garantindo acesso seguro entre servidores.

Configurando Usuários e Permissões de Acesso#

Crie um usuário em todos os nós (por exemplo, user) com privilégios sudo:

$ sudo adduser user

Defina uma senha se necessário:

$ sudo passwd user

Nota

Em alguns sistemas operacionais (por exemplo, Alt Linux), você deve adicionar o usuário ao grupo wheel:

$ sudo usermod -a -G wheel user

Para trabalhar com rsync quando MAC está habilitado no Astra Linux, defina o nível de integridade correto:

$ sudo pdpl-user -i 63 user

Configure sudo sem senha:

$ echo "user ALL=(ALL:ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers

No nó master, crie chaves SSH e copie-as para os nós de backup:

$ su - user
$ ssh-keygen -t rsa
$ ssh-copy-id user@node2_hostname

Aviso

Antes de copiar as chaves SSH, certifique-se de que o arquivo /etc/ssh/sshd_config tenha a opção:

PasswordAuthentication yes

Após configurar o acesso baseado em chave, defina o valor como no para melhorar a segurança.

Nota

Para sincronização cruzada da configuração do Angie, copie as chaves do usuário para todos os nós:

$ scp -p .ssh/id_rsa* user@node2_hostname:.ssh/

Instalando Angie PRO e angie-ha-sync#

Após preparar os nós, você precisa instalar os principais componentes do cluster: Angie PRO e o pacote de sincronização de configuração.

Configure o repositório em todos os nós de acordo com as instruções de pacote para seu sistema.

Instalando angie-ha-sync#

Nota

Ao instalar o pacote angie-ha-sync em um sistema limpo, o pacote angie também será instalado como dependência.

Em todos os nós, instale o pacote usando o gerenciador de pacotes do seu SO:

$ sudo {apk|apt|pkg|yum|zypper} {add|install} angie-ha-sync

Configurando Sincronização de Configuração#

O próximo passo é configurar a sincronização automática de arquivos de configuração entre os nós do cluster.

Nota

Princípios de sincronização:

  • A sincronização é realizada via rsync.

  • Ocorre apenas quando o serviço Angie está em execução.

  • Executada manualmente (comando angiehasync -Sd).

  • Funciona em uma direção: do nó master para o backup.

  • rsync executa em modo daemon.

Configurando rsync#

Crie uma configuração rsync (/etc/rsyncd.conf) nos nós:

[angie] # Diretório com configuração do Angie
    path = /etc/angie
# Usuário para sincronização
    uid = user
# Grupo do usuário
    gid = user
# IP ou sub-rede de onde conexões são permitidas
    hosts allow = 10.21.8.0/24
# Negar todos os outros
    hosts deny = *

Dependendo do SO, inicie o daemon:

$ sudo service rsyncd start # ou $ sudo service rsync start

Nota

Para alguns sistemas, existem instruções prontas:

Configurando o Arquivo de Sincronização#

Edite /etc/angiehasync/angiehasync.conf:

M_NODE="<node1_hostname>"            # Hostname ou IP deste nó
TARGET_HOSTS="<node2_hostname>"      # Lista de hosts/IPs para sincronização (separados por espaço).
                                     # Pode ser omitido em nós de backup.
SSH_USER="user"                      # Usuário para sincronização (com privilégios de administrador)
SSH_ID="/home/$SSH_USER/.ssh/id_rsa" # Caminho para chave privada

Nota

Para sincronização cruzada, preencha a lista TARGET_HOSTS em todos os nós; no entanto, não inclua o nó atual que está sendo configurado na lista.

Configurando Verificações de Saúde para Angie#

Adicione um bloco de verificação de saúde à configuração do Angie (/etc/angie/angie.conf):

server {

    listen unix:/tmp/angie_hcheck.sock; # Socket Unix para verificação
    access_log off;
    error_log /dev/null;
    default_type text/plain;
    return 200 'ok\n';
}

Inicie o Angie:

$ sudo angie -t && sudo service angie start

Inicie a sincronização:

$ sudo angiehasync -Sd

Nota

O script verificará automaticamente a configuração, realizará sincronização com todos os nós e a aplicará.

Configurando Keepalived#

Para failover automático entre nós do cluster, o Keepalived é usado — um serviço para gerenciar endereços IP virtuais (VIP).

Nota

Se o pacote keepalived não estiver instalado — instale-o:

$ sudo {apk|apt|pkg|yum|zypper} {add|install} keepalived

Para vincular processos a endereços IP não locais, permita que o sistema execute as ações correspondentes:

$ sudo sysctl -w net.ipv4.ip_nonlocal_bind=1

Mais detalhes: https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt#ip_nonlocal_bind

Suponha que o VIP 10.21.11.230 seja atribuído ao nó master (10.21.8.26) ou ao backup (10.21.8.27).

Se o Angie escutar neste VIP (listen 10.21.11.230:80;) mas o endereço ainda não estiver atribuído, o Angie não conseguirá iniciar sem o parâmetro ip_nonlocal_bind.

Configuração do Keepalived#

No nó master (/etc/keepalived/keepalived.conf):

global_defs {
    enable_script_security
}

vrrp_script angie_check {
    script "/usr/bin/curl -s --connect-timeout 5 -A 'angie_hcheck_script'
    --no-buffer -XGET --unix-socket /tmp/angie_hcheck.sock http://hcheck/"
    interval 5 user angie
}

vrrp_instance angie {
    state MASTER interface enp0s2 virtual_router_id 254 priority 100
    advert_int 2 unicast_src_ip 10.21.8.26

    unicast_peer {
        10.21.8.27
    }

    virtual_ipaddress {
        10.21.11.230
    } track_script {
        angie_check
    }
}

No nó de backup:

global_defs {
    enable_script_security
}

vrrp_script angie_check {
    script "/usr/bin/curl -s --connect-timeout 5 -A 'angie_hcheck_script'
    --no-buffer -XGET --unix-socket /tmp/angie_hcheck.sock http://hcheck/"
    interval 5 user angie
}

vrrp_instance angie {
    state MASTER interface enp0s2 virtual_router_id 254 priority 99
    advert_int 2 unicast_src_ip 10.21.8.27

    unicast_peer {
        10.21.8.26
    }

    virtual_ipaddress {
        10.21.11.230
    } track_script {
        angie_check
    }
}

Nota

Na seção vrrp_instance angie, defina os seguintes valores:

  • unicast_src_ip — IP do nó atual

  • unicast_peer — IP dos nós vizinhos

  • virtual_ipaddress — IP virtual (VIP)

  • interface — interface de rede

Inicie o serviço:

$ sudo keepalived -t && sudo service keepalived start

Detalhamento da Configuração do Keepalived#

Vamos examinar os principais elementos da configuração do Keepalived em detalhes para entender os princípios de operação do cluster.

A configuração inclui duas partes:

  • global_defs — configurações globais

  • vrrp_instance — parâmetros VRRP (comutação de VIP)

Elementos principais:

  • enable_script_security — permite execução de scripts de verificação de saúde

  • vrrp_script — script de verificação de saúde do Angie

  • state MASTER — estado inicial do nó

  • priority — prioridade (papel MASTER é atribuído ao mais alto)

  • advert_int — intervalo de anúncio VRRP

  • unicast_src_ip — IP do nó atual

  • unicast_peer — IP dos vizinhos

  • virtual_ipaddress — endereço VIP

  • track_script — monitoramento de disponibilidade através de scripts de verificação de saúde

Nota

Se o nó master original se recuperar, ele recuperará o papel MASTER (prioridade mais alta). Para desabilitar o failback, use o parâmetro nopreempt:

vrrp_instance angie {
    ... nopreempt
}

Testando a Operação do Cluster#

Após completar a configuração, é necessário testar a operação do cluster e garantir a comutação correta entre os nós.

Verifique o status do VIP:

$ ip addr show enp0s2 | grep "10.21.11.230"

Teste a tolerância a falhas:

Pare o Angie no nó mestre:

$ sudo service angie stop

Verifique a transição do VIP para o nó de backup:

$ ip addr show enp0s2 | grep "10.21.11.230"

Inicie o Angie no nó mestre novamente:

$ sudo service angie start

Após isso, o VIP deve retornar ao nó mestre.