Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Requisitos previos y configuración del clúster
En esta sección, configurará la infraestructura para el tutorial de alta disponibilidad. Cree un grupo de seguridad, cree un key pair, lance instancias de Amazon EC2, instale Pacemaker y DRBD, cree un clúster y configure la replicación a nivel de bloque entre instancias.
Cree y configure un grupo de seguridad
Cree un grupo de seguridad que permita todo el tráfico entre las instancias del clúster. En este tutorial, debe abrir todos los puertos para simplificar la configuración. Este paso requiere una VPC. Si no tiene una, consulte Crear una VPC.
Consola
-
Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/
. -
En el panel de navegación, elija Grupos de seguridad y, a continuación, elija Crear grupo de seguridad.
-
Introduzca un nombre (por ejemplo
pacemaker-cluster-sg) y una descripción. -
Seleccione la VPC.
-
Elija Creación de grupo de seguridad.
-
Tras la creación, seleccione el nuevo grupo de seguridad y edite sus reglas de entrada. Seleccione Agregar regla. Defina Tipo en Todo el tráfico y Origen en el identificador propio del grupo de seguridad. Esto permite todo el tráfico entre las instancias de este grupo de seguridad.
-
Agregue una segunda regla de entrada para el acceso SSH. Defina Tipo en SSH y Fuente en Mi IP.
AWS Command Line Interface
-
Cree el grupo de seguridad.
aws ec2 create-security-group \ --group-name pacemaker-cluster-sg \ --description "Security group for Pacemaker HA cluster" \ --vpc-idyour-vpc-idAnote lo que
GroupIdaparece en el resultado (por ejemplo,sg-0123456789abcdef0). -
Agrega una regla de entrada para permitir todo el tráfico procedente de instancias del mismo grupo de seguridad.
aws ec2 authorize-security-group-ingress \ --group-idsecurity-group-id\ --protocol all \ --source-groupsecurity-group-id -
Agrega una regla de entrada para permitir el acceso SSH desde tu dirección IP.
aws ec2 authorize-security-group-ingress \ --group-idsecurity-group-id\ --protocol tcp \ --port 22 \ --cidryour-ip/32
Crear un par de claves
Crea un par de claves para usarlo en el acceso SSH a todas las instancias. Usa el mismo par de claves para todas las instancias de este tutorial.
Consola
-
Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/
. -
En el panel de navegación, elija Pares de claves y, a continuación, elija Crear par de claves.
-
Introduzca un nombre (por ejemplo,
pacemaker-key). -
Seleccione RSA como tipo de key pair y .pem como formato de archivo.
-
Elija Crear par de claves. El archivo de clave privada se descarga automáticamente.
aviso
Guarde el archivo de clave privada (.pem) en un lugar seguro. No puede volver a descargarlo. Necesitas este archivo para usar SSH en tus instancias.
AWS Command Line Interface
-
Cree el key pair.
aws ec2 create-key-pair \ --key-namekey-name\ --query 'KeyMaterial' \ --output text > pacemaker-key.pem -
Establezca los permisos correctos en el archivo de clave privada.
chmod 400 pacemaker-key.pem
Lance instancias EC2
Lance dos instancias Amazon EC2 de Ubuntu en el grupo de seguridad que creó. Un tipo de instancia pequeño (por ejemplo,t3.small) es suficiente para este tutorial.
Consola
-
Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/
. -
Elija iniciar instancias.
-
Introduzca un nombre para la instancia (por ejemplo,
pacemaker-instance-1). -
En Imágenes de aplicaciones y sistemas operativos, busque Ubuntu y seleccione una AMI de servidor Ubuntu (por ejemplo, Ubuntu Server 24.04 LTS).
-
En Tipo de instancia, selecciona t3.small.
-
En Par de claves, seleccione la clave que creó anteriormente.
-
En Configuración de red, elija Editar, seleccione su VPC y una subred y, en Firewall (grupos de seguridad), elija Seleccionar grupo de seguridad existente y seleccione.
pacemaker-cluster-sg -
Seleccione Iniciar instancia.
-
Repita este procedimiento para cada instancia adicional (por ejemplo,
pacemaker-instance-2). Asegúrese de que todas las instancias estén en la misma VPC y grupo de seguridad.
AWS Command Line Interface
-
Lance una instancia.
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 este procedimiento
Value=pacemaker-instance-2para la segunda instancia.
Necesita la dirección IP privada de cada instancia para configurar el clúster.
-
Consola: en la consola Amazon EC2, seleccione una instancia y busque la dirección IPv4 privada en la pestaña Detalles.
-
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 las utilidades Pacemaker
Utilice SSH en cada instancia e instale las utilidades de 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
Configure la comunicación de red
-
Pruebe la comunicación entre instancias. En la instancia de destino, ejecuta el siguiente comando para detectar los pings de la instancia de origen.
sudo tcpdump hostsource-instance-private-ipEn la instancia de origen, ejecuta el siguiente comando para hacer ping a la instancia de destino.
ping -c 4destination-instance-private-ipDeberías ver las respuestas de ping en ambos lados. De lo contrario, compruebe que su grupo de seguridad permita todo el tráfico entre instancias.
-
Inhabilite la administración de nombres de host inicializada en la nube. En las instancias Amazon EC2 de Ubuntu, cloud-init puede revertir el nombre de host y los cambios al reiniciar.
/etc/hostsEjecute esto en cada instancia para evitarlo.sudo bash -c 'cat > /etc/cloud/cloud.cfg.d/99-preserve-hostconfig.cfg <<EOF preserve_hostname: true manage_etc_hosts: false EOF' -
Establezca el nombre de host en cada instancia. Pacemaker usa nombres de host para identificar las instancias del clúster.
En la instancia 1:
sudo hostnamectl set-hostname instance1En la instancia 2:
sudo hostnamectl set-hostname instance2 -
Configurar
/etc/hosts. En cada instancia, añada los pares de IP privada y nombre de host a./etc/hostsEsto permite que las instancias se resuelvan entre sí por nombre de host.sudo tee -a /etc/hosts <<EOFinstance1-private-ipinstance1instance2-private-ipinstance2 EOF
Cree el clúster Pacemaker
-
Inicie el daemon pcs en cada instancia.
sudo systemctl enable pcsd.service sudo systemctl start pcsd.service -
Establece la contraseña del hacluster. El
haclusterusuario es una cuenta de sistema que se crea automáticamente al instalar elpcspaquete. Pacemaker usa esta cuenta para la autenticación de clústeres entre instancias. Establezca la misma contraseña en cada instancia.sudo passwd hacluster -
Autoriza los hosts de PC. Autorice las instancias del clúster entre sí. Ejecuta esto en cada instancia.
sudo pcs host auth instance1 instance2Se le solicitará el
haclusternombre de usuario y la contraseña. -
Configure el clúster. Ejecute este comando solo en una instancia. La
--forcemarca destruye cualquier clúster existente en el dispositivo.sudo pcs cluster setup my-gg-cluster instance1 instance2 --force -
Inicie el clúster. Ejecute este comando solo en una instancia.
sudo pcs cluster start --all sudo pcs cluster enable --all -
Compruebe el estado del clúster en cualquiera de las instancias.
sudo pcs status
Configure DRBD
El DRBD
-
Cree y adjunte volúmenes de EBS. Cree un volumen de EBS para cada instancia. El volumen debe estar en la misma zona de disponibilidad que la instancia.
Consola
-
Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/
. -
En el panel de navegación, selecciona Volúmenes y, a continuación, selecciona Crear volumen.
-
Defina el tipo de volumen en gp3, el tamaño en 8 GiB y la zona de disponibilidad en la misma zona que la instancia.
-
Seleccione Create volume (Crear volumen).
-
Seleccione el nuevo volumen, elija Acciones > Adjuntar volumen, seleccione la instancia de destino, establezca el nombre del dispositivo en y elija Adjuntar volumen.
/dev/xvdbz -
Repite el procedimiento para cada instancia.
AWS Command Line Interface
-
Cree un volumen en la misma zona de disponibilidad que su instancia.
aws ec2 create-volume \ --volume-type gp3 \ --size 8 \ --availability-zoneinstance-availability-zoneAnote lo que
VolumeIdaparece en el resultado. -
Adjunta el volumen a una instancia.
aws ec2 attach-volume \ --volume-idvolume-id\ --instance-idinstance-id\ --device /dev/xvdbzRepita el procedimiento para cada instancia.
-
-
Compruebe el volumen. Utilice SSH en cada instancia y compruebe que el volumen esté conectado mediante una lista de los dispositivos bloqueados.
lsblkEn tipos de Nitro-based instancias como
t3.small, por ejemplo, el volumen aparece como un dispositivo NVMe (por ejemplo/dev/nvme1n1) en lugar de./dev/xvdbzlsblkUtilícelo para identificar el nombre real del dispositivo y utilícelo en la configuración de DRBD. -
Instale las utilidades de DRBD en cada instancia.
sudo apt install -y drbd-utils -
Configure el recurso DRBD. Cree el directorio y el archivo de configuración de recursos del DRBD en ambas instancias.
sudo mkdir -p /etc/drbd.d sudo vi /etc/drbd.d/greengrass.resAgregue la siguiente configuración. Sustituya los nombres de host y las direcciones IP por sus 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; } } -
Cree e inicie el recurso DRBD. Ejecute en ambas instancias.
sudo drbdadm create-md greengrass sudo drbdadm up greengrassCompruebe
lsblkquedrbd0aparece debajo de su dispositivo de volumen EBS (por ejemplo,xvdbzonvme1n1). -
Configure la instancia principal. Ejecuta los siguientes comandos en la instancia 1 solo para forzarla a ser principal y esperar a que se sincronice.
sudo drbdadm -- --overwrite-data-of-peer primary greengrass sudo drbdadm statusEspere hasta que se muestre
UpToDateel estado del disco en ambas instancias. Una vez sincronizadas, todas las demás instancias se convierten en instancias en espera. -
Formatee y monte el dispositivo DRBD.
Solo en la instancia principal, formatee el dispositivo DRBD:
sudo mkfs.ext4 /dev/drbd0En todas las instancias, cree el directorio de montaje:
sudo mkdir -p /greengrass/v2Solo en la instancia principal, monte el dispositivo DRBD:
sudo mount /dev/drbd0 /greengrass/v2 -
Verifica el estado de sincronización del DRBD.
sudo drbdadm status mount | grep 'drbd'