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. O primeiro passo é preparar todos os nós do cluster
configurando contas de usuário
e garantindo acesso seguro entre servidores. Crie um usuário em todos os nós
(por exemplo, Defina uma senha se necessário: Nota Em alguns sistemas operacionais (por exemplo, Alt Linux),
você deve adicionar o usuário ao grupo Para trabalhar com Configure sudo sem senha: No nó master, crie chaves SSH e copie-as para os nós de backup: Aviso Antes de copiar as chaves SSH, certifique-se de que o
arquivo Após configurar o acesso baseado em chave, defina o valor como Nota Para sincronização cruzada da configuração do Angie, copie as chaves do usuário
para todos os nós: 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. Nota Ao instalar o pacote Em todos os nós, instale o pacote usando o gerenciador de pacotes do seu SO: 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 Ocorre apenas quando o serviço Angie está em execução. Executada manualmente (comando Funciona em uma direção: do nó master para o backup. Crie uma configuração Dependendo do SO, inicie o daemon: Edite Nota Para sincronização cruzada,
preencha a lista Adicione um bloco de verificação de saúde à configuração do Angie
( Inicie o Angie: Inicie a sincronização: Nota O script verificará automaticamente a configuração, realizará sincronização com todos
os nós e a aplicará. 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 Para vincular processos a endereços IP não locais,
permita que o sistema execute as ações correspondentes: Mais detalhes:
https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt#ip_nonlocal_bind Suponha que o VIP Se o Angie escutar neste VIP ( No nó master ( No nó de backup: Nota Na seção Inicie o serviço: 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: Elementos principais: Nota Se o nó master original se recuperar,
ele recuperará o papel MASTER (prioridade mais alta).
Para desabilitar o failback, use o parâmetro 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: Teste a tolerância a falhas: Pare o Angie no nó mestre: Verifique a transição do VIP para o nó de backup: Inicie o Angie no nó mestre novamente: Após isso, o VIP deve retornar ao nó mestre.Preparando Nós do Cluster para Sincronização#
Configurando Usuários e Permissões de Acesso#
user
) com privilégios sudo
:$ sudo adduser user
$ sudo passwd user
wheel
:$ sudo usermod -a -G wheel user
rsync
quando MAC está habilitado no Astra Linux, defina
o nível de integridade correto:$ sudo pdpl-user -i 63 user
$ echo "user ALL=(ALL:ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers
$ su - user
$ ssh-keygen -t rsa
$ ssh-copy-id user@node2_hostname
/etc/ssh/sshd_config
tenha a opção:PasswordAuthentication yes
no
para melhorar
a segurança.$ scp -p .ssh/id_rsa* user@node2_hostname:.ssh/
Instalando Angie PRO e angie-ha-sync#
Instalando angie-ha-sync#
angie-ha-sync
em um sistema limpo,
o pacote angie
também será instalado como dependência.$ sudo {apk|apt|pkg|yum|zypper} {add|install} angie-ha-sync
Configurando Sincronização de Configuração#
rsync
.angiehasync -Sd
).rsync
executa em modo daemon.Configurando
rsync
#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 = *
$ sudo service rsyncd start # ou $ sudo service rsync start
Configurando o Arquivo de Sincronização#
/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
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#
/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';
}
$ sudo angie -t && sudo service angie start
$ sudo angiehasync -Sd
Configurando Keepalived#
keepalived
não estiver instalado — instale-o:$ sudo {apk|apt|pkg|yum|zypper} {add|install} keepalived
$ sudo sysctl -w net.ipv4.ip_nonlocal_bind=1
10.21.11.230
seja atribuído ao nó master (10.21.8.26
)
ou ao backup (10.21.8.27
).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#
/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
}
}
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
}
}
vrrp_instance angie
, defina os seguintes valores:unicast_src_ip
— IP do nó atualunicast_peer
— IP dos nós vizinhosvirtual_ipaddress
— IP virtual (VIP)interface
— interface de rede$ sudo keepalived -t && sudo service keepalived start
Detalhamento da Configuração do Keepalived#
global_defs
— configurações globaisvrrp_instance
— parâmetros VRRP (comutação de VIP)enable_script_security
— permite execução de scripts de verificação de saúdevrrp_script
— script de verificação de saúde do Angiestate MASTER
— estado inicial do nópriority
— prioridade (papel MASTER é atribuído ao mais alto)advert_int
— intervalo de anúncio VRRPunicast_src_ip
— IP do nó atualunicast_peer
— IP dos vizinhosvirtual_ipaddress
— endereço VIPtrack_script
— monitoramento de disponibilidade através de scripts de verificação de saúdenopreempt
:vrrp_instance angie {
... nopreempt
}
Testando a Operação do Cluster#
$ ip addr show enp0s2 | grep "10.21.11.230"
$ sudo service angie stop
$ ip addr show enp0s2 | grep "10.21.11.230"
$ sudo service angie start