Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Prerequisiti e configurazione del cluster
In questa sezione, configurerai l'infrastruttura per il tutorial sull'alta disponibilità. Puoi creare un gruppo di sicurezza, creare una coppia di key pair, avviare istanze Amazon EC2, installare Pacemaker e DRBD, creare un cluster e configurare la replica a livello di blocco tra le istanze.
Crea e configura un gruppo di sicurezza
Crea un gruppo di sicurezza che consenta tutto il traffico tra le istanze del cluster. In questo tutorial, apri tutte le porte per semplificare la configurazione. Questo passaggio richiede un VPC. Se non ne hai uno, consulta Creare un VPC.
Console
-
Apri la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/
. -
Nel pannello di navigazione, scegli Gruppi di sicurezza, quindi scegli Crea gruppo di sicurezza.
-
Inserisci un nome (ad esempio
pacemaker-cluster-sg) e una descrizione. -
Seleziona il tuo VPC.
-
Scegliere Create Security Group (Crea gruppo di sicurezza).
-
Dopo la creazione, seleziona il nuovo gruppo di sicurezza e modificane le regole in entrata. Scegli Aggiungi regola. Imposta Tipo su Tutto il traffico e Sorgente sull'ID del gruppo di sicurezza. Ciò consente tutto il traffico tra le istanze di questo gruppo di sicurezza.
-
Aggiungi una seconda regola in entrata per l'accesso SSH. Imposta Type su SSH e Source su My IP.
AWS Command Line Interface
-
Crea il gruppo di sicurezza.
aws ec2 create-security-group \ --group-name pacemaker-cluster-sg \ --description "Security group for Pacemaker HA cluster" \ --vpc-idyour-vpc-idGroupIdAnnotate quanto riportato nell'output (ad esempio,sg-0123456789abcdef0). -
Aggiungi una regola in entrata per consentire tutto il traffico proveniente dalle istanze dello stesso gruppo di sicurezza.
aws ec2 authorize-security-group-ingress \ --group-idsecurity-group-id\ --protocol all \ --source-groupsecurity-group-id -
Aggiungi una regola in entrata per consentire l'accesso SSH dal tuo indirizzo IP.
aws ec2 authorize-security-group-ingress \ --group-idsecurity-group-id\ --protocol tcp \ --port 22 \ --cidryour-ip/32
Creazione di una coppia di chiavi
Crea una key pair da utilizzare per l'accesso SSH a tutte le istanze. Usa la stessa key pair per tutte le istanze in questo tutorial.
Console
-
Apri la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/
. -
Nel pannello di navigazione, scegli Key Pairs, quindi scegli Crea key pair.
-
Inserisci un nome (ad esempio,
pacemaker-key). -
Seleziona RSA come tipo di key pair e .pem come formato di file.
-
Scegliere Create key pair (Crea coppia di chiavi). Il file della chiave privata viene scaricato automaticamente.
avvertimento
Salvate il file della chiave privata (.pem) in una posizione sicura. Non è possibile scaricarlo di nuovo. Hai bisogno di questo file in SSH per accedere alle tue istanze.
AWS Command Line Interface
-
Crea la key pair.
aws ec2 create-key-pair \ --key-namekey-name\ --query 'KeyMaterial' \ --output text > pacemaker-key.pem -
Imposta le autorizzazioni corrette sul file della chiave privata.
chmod 400 pacemaker-key.pem
Avvia le istanze EC2
Avvia due istanze Ubuntu Amazon EC2 nel gruppo di sicurezza che hai creato. Un piccolo tipo di istanza (ad esempiot3.small) è sufficiente per questo tutorial.
Console
-
Apri la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/
. -
Scegliere Launch Instances (Avvia istanze).
-
Immettete un nome per l'istanza (ad esempio,
pacemaker-instance-1). -
In Immagini dell'applicazione e del sistema operativo, cerca Ubuntu e seleziona un'AMI Ubuntu Server (ad esempio, Ubuntu Server 24.04 LTS).
-
In Tipo di istanza, seleziona t3.small.
-
In Coppia di chiavi, seleziona la chiave che hai creato in precedenza.
-
In Impostazioni di rete, scegli Modifica, seleziona il tuo VPC e una sottorete e, in Firewall (gruppi di sicurezza), scegli Seleziona gruppo di sicurezza esistente e seleziona.
pacemaker-cluster-sg -
Scegliere Launch Instance (Avvia istanza).
-
Ripeti l'operazione per ogni istanza aggiuntiva (ad esempio,
pacemaker-instance-2). Assicurati che tutte le istanze si trovino nello stesso VPC e nello stesso gruppo di sicurezza.
AWS Command Line Interface
-
Avvia un'istanza.
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}]'Ripeti con
Value=pacemaker-instance-2per la seconda istanza.
È necessario l'indirizzo IP privato di ogni istanza per la configurazione del cluster.
-
Console: nella console Amazon EC2, seleziona un'istanza e trova l'indirizzo IPv4 privato nella scheda Dettagli.
-
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
Installa le utilità Pacemaker
SSH in ogni istanza e installa le utilità 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
Configura la comunicazione di rete
-
Verifica la comunicazione tra le istanze. Nell'istanza di destinazione, esegui il comando seguente per ascoltare i ping dall'istanza di origine.
sudo tcpdump hostsource-instance-private-ipNell'istanza di origine, esegui il comando seguente per eseguire il ping dell'istanza di destinazione.
ping -c 4destination-instance-private-ipDovresti vedere le risposte di ping su entrambi i lati. In caso contrario, verifica che il gruppo di sicurezza consenta tutto il traffico tra le istanze.
-
Disattiva la gestione dei nomi host su cloud-init. Nelle istanze Ubuntu Amazon EC2, cloud-init può ripristinare il nome host e le modifiche al riavvio.
/etc/hostsEseguilo su ogni istanza per evitarlo.sudo bash -c 'cat > /etc/cloud/cloud.cfg.d/99-preserve-hostconfig.cfg <<EOF preserve_hostname: true manage_etc_hosts: false EOF' -
Imposta il nome host su ogni istanza. Pacemaker utilizza i nomi host per identificare le istanze del cluster.
Nell'istanza 1:
sudo hostnamectl set-hostname instance1Nell'istanza 2:
sudo hostnamectl set-hostname instance2 -
Configura
/etc/hosts. In ogni istanza, aggiungi le coppie di IP e hostname privati a./etc/hostsCiò consente alle istanze di risolversi a vicenda in base al nome host.sudo tee -a /etc/hosts <<EOFinstance1-private-ipinstance1instance2-private-ipinstance2 EOF
Crea il cluster Pacemaker
-
Avvia il demone pcs su ogni istanza.
sudo systemctl enable pcsd.service sudo systemctl start pcsd.service -
Imposta la password di hacluster. L'
haclusterutente è un account di sistema creato automaticamente quando si installa il pacchetto.pcsPacemaker utilizza questo account per l'autenticazione del cluster tra le istanze. Imposta la stessa password su ogni istanza.sudo passwd hacluster -
Autorizza gli host dei pc. Autorizzate le istanze del cluster l'una con l'altra. Eseguilo su ogni istanza.
sudo pcs host auth instance1 instance2Ti verranno richiesti il
haclusternome utente e la password. -
Configura il cluster. Esegui questo comando su una sola istanza. Il
--forceflag distrugge qualsiasi cluster esistente sul dispositivo.sudo pcs cluster setup my-gg-cluster instance1 instance2 --force -
Avvia il cluster. Esegui questo comando su una sola istanza.
sudo pcs cluster start --all sudo pcs cluster enable --all -
Verifica lo stato del cluster su entrambe le istanze.
sudo pcs status
Configura DRBD
DRBD
-
Crea e collega volumi EBS. Crea un volume EBS per ogni istanza. Il volume deve trovarsi nella stessa zona di disponibilità dell'istanza.
Console
-
Apri la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/
. -
Nel riquadro di navigazione, scegli Volumi, quindi scegli Crea volume.
-
Imposta il tipo di volume su gp3, la dimensione su 8 GiB e la zona di disponibilità sulla stessa zona dell'istanza.
-
Selezionare Create volume (Crea volume).
-
Seleziona il nuovo volume, scegli Azioni > Allega volume, seleziona l'istanza di destinazione, imposta il nome del dispositivo su e scegli Allega volume.
/dev/xvdbz -
Ripeti l'operazione per ogni istanza.
AWS Command Line Interface
-
Crea un volume nella stessa zona di disponibilità dell'istanza.
aws ec2 create-volume \ --volume-type gp3 \ --size 8 \ --availability-zoneinstance-availability-zoneNota quanto
VolumeIdriportato nell'output. -
Collegate il volume a un'istanza.
aws ec2 attach-volume \ --volume-idvolume-id\ --instance-idinstance-id\ --device /dev/xvdbzRipetere l'operazione per ogni istanza.
-
-
Verifica il volume. Inserisci SSH in ogni istanza e verifica che il volume sia collegato elencando i dispositivi a blocchi.
lsblkSu tipi di Nitro-based istanze come
t3.small, ad esempio, il volume viene visualizzato come dispositivo NVMe (ad esempio,/dev/nvme1n1) anziché./dev/xvdbzlsblkUtilizzatelo per identificare il nome effettivo del dispositivo e utilizzatelo nella configurazione DRBD. -
Installa le utilità DRBD su ogni istanza.
sudo apt install -y drbd-utils -
Configura la risorsa DRBD. Crea la directory e il file di configurazione delle risorse DRBD su entrambe le istanze.
sudo mkdir -p /etc/drbd.d sudo vi /etc/drbd.d/greengrass.resAggiungi la seguente configurazione. Sostituisci i nomi host e gli indirizzi IP con i tuoi valori.
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; } } -
Crea e avvia la risorsa DRBD. Esegui su entrambe le istanze.
sudo drbdadm create-md greengrass sudo drbdadm up greengrassVerifica
lsblkchedrbd0compaia sotto il tuo dispositivo di volume EBS (ad esempio,xvdbzonvme1n1). -
Imposta l'istanza principale. Esegui i seguenti comandi solo su instance1 per forzare che sia primaria e attendi la sincronizzazione.
sudo drbdadm -- --overwrite-data-of-peer primary greengrass sudo drbdadm statusAttendi che entrambe le istanze mostrino lo stato del
UpToDatedisco. Una volta sincronizzate, tutte le altre istanze diventano istanze di standby. -
Formatta e monta il dispositivo DRBD.
Solo sull'istanza principale, formatta il dispositivo DRBD:
sudo mkfs.ext4 /dev/drbd0In tutte le istanze, crea la directory di montaggio:
sudo mkdir -p /greengrass/v2Solo sull'istanza principale, monta il dispositivo DRBD:
sudo mount /dev/drbd0 /greengrass/v2 -
Verifica lo stato di sincronizzazione DRBD.
sudo drbdadm status mount | grep 'drbd'