As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Pré-requisitos e configuração do cluster
Nesta seção, você configura a infraestrutura para o tutorial de alta disponibilidade. Você cria um grupo de segurança, cria um key pair, inicia instâncias do Amazon EC2, instala o Pacemaker e o DRBD, cria um cluster e configura a replicação em nível de bloco entre instâncias.
Criar e configurar um grupo de segurança
Crie um grupo de segurança que permita todo o tráfego entre as instâncias do cluster. Neste tutorial, você abre todas as portas para simplificar a configuração. Essa etapa exige uma VPC. Se você não tiver uma, consulte Criar uma VPC.
Console
-
Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/
. -
No painel de navegação, escolha Grupos de segurança e, em seguida, escolha Criar grupo de segurança.
-
Insira um nome (por exemplo,
pacemaker-cluster-sg) e uma descrição. -
Selecione a VPC.
-
Escolha Criar grupo de segurança.
-
Após a criação, selecione o novo grupo de segurança e edite suas regras de entrada. Escolha Adicionar regra. Defina Tipo como Todo o tráfego e Fonte como a ID do próprio grupo de segurança. Isso permite todo o tráfego entre instâncias nesse grupo de segurança.
-
Adicione uma segunda regra de entrada para acesso SSH. Defina Tipo como SSH e Fonte como Meu IP.
AWS Command Line Interface
-
Criar o grupo de segurança
aws ec2 create-security-group \ --group-name pacemaker-cluster-sg \ --description "Security group for Pacemaker HA cluster" \ --vpc-idyour-vpc-idObserve o
GroupIdda saída (por exemplo,sg-0123456789abcdef0). -
Adicione uma regra de entrada para permitir todo o tráfego de instâncias no mesmo grupo de segurança.
aws ec2 authorize-security-group-ingress \ --group-idsecurity-group-id\ --protocol all \ --source-groupsecurity-group-id -
Adicione uma regra de entrada para permitir o acesso SSH a partir do seu endereço IP.
aws ec2 authorize-security-group-ingress \ --group-idsecurity-group-id\ --protocol tcp \ --port 22 \ --cidryour-ip/32
Criar um par de chaves.
Crie um key pair para usar no acesso SSH a todas as instâncias. Use o mesmo key pair para todas as instâncias neste tutorial.
Console
-
Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/
. -
No painel de navegação, escolha Key Pairs e, em seguida, escolha Create key pair.
-
Insira um nome (por exemplo,
pacemaker-key). -
Selecione RSA como o tipo de par de chaves e .pem como formato de arquivo.
-
Escolha Create key pair (Criar par de chaves). O arquivo de chave privada é baixado automaticamente.
Atenção
Salve o arquivo de chave privada (.pem) em um local seguro. Você não pode baixá-lo novamente. Você precisa desse arquivo para entrar por SSH em suas instâncias.
AWS Command Line Interface
-
Crie o par de chaves.
aws ec2 create-key-pair \ --key-namekey-name\ --query 'KeyMaterial' \ --output text > pacemaker-key.pem -
Defina as permissões corretas no arquivo de chave privada.
chmod 400 pacemaker-key.pem
Inicie instâncias do EC2
Inicie duas instâncias do Ubuntu Amazon EC2 no grupo de segurança que você criou. Um tipo de instância pequena (por exemplo,t3.small) é suficiente para este tutorial.
Console
-
Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/
. -
Selecione Iniciar instâncias.
-
Insira um nome para a instância (por exemplo,
pacemaker-instance-1). -
Em Imagens do aplicativo e do sistema operacional, pesquise Ubuntu e selecione uma AMI do Ubuntu Server (por exemplo, Ubuntu Server 24.04 LTS).
-
Em Tipo de instância, selecione t3.small.
-
Em Par de chaves, selecione a chave que você criou anteriormente.
-
Em Configurações de rede, escolha Editar, selecione sua VPC e uma sub-rede e, em Firewall (grupos de segurança), escolha Selecionar grupo de segurança existente e selecione.
pacemaker-cluster-sg -
Escolha Iniciar instância.
-
Repita o procedimento para cada instância adicional (por exemplo,
pacemaker-instance-2). Certifique-se de que todas as instâncias estejam na mesma VPC e no mesmo grupo de segurança.
AWS Command Line Interface
-
Execute uma instância.
aws ec2 run-instances \ --image-idubuntu-ami-id\ --instance-type t3.small \ --key-namekey-name\ --security-group-idssecurity-group-id\ --subnet-idsubnet-id\ --count 1 \ --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=pacemaker-instance-1}]'Repita com
Value=pacemaker-instance-2para a segunda instância.
Você precisa do endereço IP privado de cada instância para a configuração do cluster.
-
Console: no console do Amazon EC2, selecione uma instância e encontre o endereço IPv4 privado na guia Detalhes.
-
AWS Command Line Interface:
aws ec2 describe-instances \ --filters "Name=tag:Name,Values=pacemaker-instance-*" \ --query "Reservations[*].Instances[*].[Tags[?Key=='Name'].Value|[0],PrivateIpAddress]" \ --output table
Instale os utilitários do Pacemaker
Faça SSH em cada instância e instale os utilitários do Pacemaker.
ssh -i pacemaker-key.pem ubuntu@instance-public-ip
sudo apt update sudo apt install -y pacemaker pcs resource-agents-extra resource-agents-common resource-agents-base
Configurar a comunicação de rede
-
Teste a comunicação entre instâncias. Na instância de destino, execute o comando a seguir para ouvir os pings da instância de origem.
sudo tcpdump hostsource-instance-private-ipNa instância de origem, execute o comando a seguir para executar ping na instância de destino.
ping -c 4destination-instance-private-ipVocê deve ver as respostas de ping nos dois lados. Caso contrário, verifique se seu grupo de segurança permite todo o tráfego entre instâncias.
-
Desative o gerenciamento de nomes de host cloud-init. Nas instâncias do Ubuntu Amazon EC2, o cloud-init pode reverter o nome do host e as alterações na reinicialização.
/etc/hostsExecute isso em cada instância para evitar isso.sudo bash -c 'cat > /etc/cloud/cloud.cfg.d/99-preserve-hostconfig.cfg <<EOF preserve_hostname: true manage_etc_hosts: false EOF' -
Defina o nome do host em cada instância. O Pacemaker usa nomes de host para identificar instâncias de cluster.
Na instância 1:
sudo hostnamectl set-hostname instance1Na instância 2:
sudo hostnamectl set-hostname instance2 -
Configurar
/etc/hosts. Em cada instância, anexe os pares de IP privado e nome de host a./etc/hostsIsso permite que as instâncias se resolvam pelo nome do host.sudo tee -a /etc/hosts <<EOFinstance1-private-ipinstance1instance2-private-ipinstance2 EOF
Crie o cluster Pacemaker
-
Inicie o daemon pcs em cada instância.
sudo systemctl enable pcsd.service sudo systemctl start pcsd.service -
Defina a senha do hacluster. O
haclusterusuário é uma conta do sistema criada automaticamente quando você instala opcspacote. O Pacemaker usa essa conta para autenticação de cluster entre instâncias. Defina a mesma senha em cada instância.sudo passwd hacluster -
Autorize hosts de computadores. Autorize as instâncias do cluster umas com as outras. Execute isso em cada instância.
sudo pcs host auth instance1 instance2Você será solicitado a fornecer o nome de
haclusterusuário e a senha. -
Configure o cluster. Execute esse comando somente em uma instância. O
--forcesinalizador destrói qualquer cluster existente no dispositivo.sudo pcs cluster setup my-gg-cluster instance1 instance2 --force -
Inicie o cluster. Execute esse comando somente em uma instância.
sudo pcs cluster start --all sudo pcs cluster enable --all -
Verifique o status do cluster em qualquer instância.
sudo pcs status
Configurar o DRBD
O DRBD
-
Crie e anexe volumes do EBS. Crie um volume do EBS para cada instância. O volume deve estar na mesma zona de disponibilidade da instância.
Console
-
Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/
. -
No painel de navegação, escolha Volumes e, em seguida, escolha Criar volume.
-
Defina o tipo de volume como gp3, o tamanho para 8 GiB e a zona de disponibilidade para a mesma zona da sua instância.
-
Escolha Create volume (Criar volume).
-
Selecione o novo volume, escolha Ações > Anexar volume, selecione a instância de destino, defina o nome do dispositivo como
/dev/xvdbze escolha Anexar volume. -
Repita o procedimento para cada instância.
AWS Command Line Interface
-
Crie um volume na mesma zona de disponibilidade da sua instância.
aws ec2 create-volume \ --volume-type gp3 \ --size 8 \ --availability-zoneinstance-availability-zoneObserve o
VolumeIdda saída. -
Conecte o volume a uma instância.
aws ec2 attach-volume \ --volume-idvolume-id\ --instance-idinstance-id\ --device /dev/xvdbzRepita o procedimento para cada instância.
-
-
Verifique o volume. Faça o SSH em cada instância e verifique se o volume está conectado listando os dispositivos de bloco.
lsblkEm tipos de Nitro-based instância
t3.small, como, o volume aparece como um dispositivo NVMe (por exemplo,/dev/nvme1n1) em vez de./dev/xvdbzUselsblkpara identificar o nome real do dispositivo e use esse nome na configuração do DRBD. -
Instale os utilitários DRBD em cada instância.
sudo apt install -y drbd-utils -
Configure o recurso DRBD. Crie o diretório e o arquivo de configuração de recursos DRBD nas duas instâncias.
sudo mkdir -p /etc/drbd.d sudo vi /etc/drbd.d/greengrass.resAdicione a seguinte configuração. Substitua os nomes de host e endereços IP pelos seus valores.
resource greengrass { protocol C; on instance1 { device /dev/drbd0; disk /dev/instance1-device-name; addressinstance1-private-ip:7788; meta-disk internal; } on instance2 { device /dev/drbd0; disk /dev/instance2-device-name; addressinstance2-private-ip:7788; meta-disk internal; } } -
Crie e inicie o recurso DRBD. Execute nas duas instâncias.
sudo drbdadm create-md greengrass sudo drbdadm up greengrassVerifique se o
lsblkquedrbd0aparece abaixo do seu dispositivo de volume EBS (por exemplo,xvdbzounvme1n1). -
Defina a instância primária. Execute os comandos a seguir na instância1 somente para forçá-la a ser primária e aguardar a sincronização.
sudo drbdadm -- --overwrite-data-of-peer primary greengrass sudo drbdadm statusEspere até que ambas as instâncias mostrem
UpToDateo estado do disco. Depois de sincronizadas, todas as outras instâncias se tornam instâncias em espera. -
Formate e monte o dispositivo DRBD.
Somente na instância primária, formate o dispositivo DRBD:
sudo mkfs.ext4 /dev/drbd0Em todas as instâncias, crie o diretório de montagem:
sudo mkdir -p /greengrass/v2Somente na instância primária, monte o dispositivo DRBD:
sudo mount /dev/drbd0 /greengrass/v2 -
Verifique o status de sincronização do DRBD.
sudo drbdadm status mount | grep 'drbd'