Red Hat Training
A Red Hat training course is available for RHEL 8
Implantación de Red Hat Enterprise Linux 8 en plataformas de nube pública
Creación de imágenes personalizadas de Red Hat Enterprise Linux y configuración de un clúster de alta disponibilidad de Red Hat para plataformas de nube pública
Resumen
Hacer que el código abierto sea más inclusivo
Red Hat se compromete a sustituir el lenguaje problemático en nuestro código, documentación y propiedades web. Estamos empezando con estos cuatro términos: maestro, esclavo, lista negra y lista blanca. Debido a la enormidad de este esfuerzo, estos cambios se implementarán gradualmente a lo largo de varias versiones próximas. Para más detalles, consulte el mensaje de nuestro CTO Chris Wright.
Proporcionar comentarios sobre la documentación de Red Hat
Agradecemos su opinión sobre nuestra documentación. Por favor, díganos cómo podemos mejorarla. Para ello:
Para comentarios sencillos sobre pasajes concretos:
- Asegúrese de que está viendo la documentación en el formato Multi-page HTML. Además, asegúrese de ver el botón Feedback en la esquina superior derecha del documento.
- Utilice el cursor del ratón para resaltar la parte del texto que desea comentar.
- Haga clic en la ventana emergente Add Feedback que aparece debajo del texto resaltado.
- Siga las instrucciones mostradas.
Para enviar comentarios más complejos, cree un ticket de Bugzilla:
- Vaya al sitio web de Bugzilla.
- Como componente, utilice Documentation.
- Rellene el campo Description con su sugerencia de mejora. Incluya un enlace a la(s) parte(s) pertinente(s) de la documentación.
- Haga clic en Submit Bug.
Capítulo 1. Implantación de una imagen de Red Hat Enterprise Linux 8 como máquina virtual en Microsoft Azure
Tiene varias opciones para implementar una imagen de Red Hat Enterprise Linux (RHEL) 8 en Azure. Este capítulo discute sus opciones para elegir una imagen y enumera o se refiere a los requisitos del sistema para su sistema anfitrión y máquina virtual (VM). Este capítulo también proporciona procedimientos para crear una VM personalizada a partir de una imagen ISO, subirla a Azure y lanzar una instancia de VM de Azure.
Aunque puede crear una VM personalizada a partir de una imagen ISO, Red Hat recomienda que utilice el producto Red Hat Image Builder para crear imágenes personalizadas para su uso en proveedores de nube específicos. Con Image Builder, puede crear y cargar una imagen de disco Azure (formato VHD). Consulte Composición de una imagen de sistema RHEL personalizada para obtener más información.
Este capítulo hace referencia a la documentación de Azure en varios lugares. Para muchos procedimientos, consulte la documentación de Azure a la que se hace referencia para obtener más detalles.
Para obtener una lista de los productos de Red Hat que puede utilizar de forma segura en Azure, consulte Red Hat en Microsoft Azure.
Requisitos previos
- Regístrese para obtener una cuenta en el Portal del Cliente de Red Hat.
- Regístrese para obtener una cuenta de Microsoft Azure.
- Habilite sus suscripciones en el programa Red Hat Cloud Access. El programa Red Hat Cloud Access le permite trasladar sus suscripciones de Red Hat desde sistemas físicos o locales a Azure con el apoyo total de Red Hat.
Recursos adicionales
1.1. Opciones de imagen de Red Hat Enterprise Linux en Azure
La siguiente tabla enumera las opciones de imagen y señala las diferencias entre ellas.
Tabla 1.1. Opciones de imagen
Opción de imagen | Suscripciones | Ejemplo de escenario | Consideraciones |
---|---|---|---|
Elija implementar una imagen de Red Hat Gold. | Aproveche sus suscripciones existentes a Red Hat. | Habilite las suscripciones a través del programa Red Hat Cloud Access y luego elija una Red Hat Gold Image en Azure. Consulte el Manual de referencia de Red Hat Cloud Access para obtener detalles sobre las imágenes Gold y cómo acceder a ellas en Azure. | La suscripción incluye el coste del producto de Red Hat; el resto de los costes de las instancias se pagan a Microsoft. Las imágenes Red Hat Gold se denominan imágenes "Cloud Access" porque aprovechan sus suscripciones existentes a Red Hat. Red Hat proporciona soporte directamente para las imágenes de Cloud Access. |
Elija desplegar una imagen personalizada que traslade a Azure. | Aproveche sus suscripciones existentes a Red Hat. | Habilite las suscripciones a través del programa Red Hat Cloud Access, cargue su imagen personalizada y adjunte sus suscripciones. | La suscripción incluye el coste del producto de Red Hat; el resto de los costes de las instancias se pagan a Microsoft. Las imágenes personalizadas que se trasladan a Azure son imágenes de "Acceso a la nube" porque se aprovechan las suscripciones existentes de Red Hat. Red Hat proporciona soporte directamente para las imágenes de Cloud Access. |
Elija desplegar una imagen de Azure existente que incluya RHEL. | Las imágenes de Azure incluyen un producto de Red Hat. | Elija una imagen RHEL cuando cree una VM utilizando la consola de Azure, o elija una VM de Azure Marketplace. | Se paga a Microsoft por hora en un modelo de pago por uso. Este tipo de imágenes se denominan "on-demand" Azure proporciona soporte para las imágenes bajo demanda a través de un acuerdo de soporte. Red Hat proporciona las actualizaciones de las imágenes. Azure hace que las actualizaciones estén disponibles a través de Red Hat Update Infrastructure (RHUI). |
Puede crear una imagen personalizada para Azure utilizando Red Hat Image Builder. Consulte Composición de una imagen de sistema RHEL personalizada para obtener más información.
El resto de este capítulo incluye información y procedimientos relacionados con las imágenes personalizadas de Red Hat Enterprise Linux.
1.2. Comprender las imágenes base
Esta sección incluye información sobre el uso de imágenes base preconfiguradas y sus ajustes de configuración.
1.2.1. Utilizar una imagen base personalizada
Para configurar manualmente una VM, se empieza con una imagen de VM base (de inicio). Una vez creada la imagen de la VM base, puede modificar los ajustes de configuración y añadir los paquetes que la VM necesita para funcionar en la nube. Puede realizar cambios de configuración adicionales para su aplicación específica después de cargar la imagen.
Para preparar una imagen de nube de RHEL, siga las siguientes instrucciones. Para preparar una imagen de nube Hyper-V de RHEL, consulte la sección Preparar una máquina virtual basada en Red Hat desde Hyper-V Manager.
Recursos adicionales
1.2.2. Paquetes de sistema necesarios
Los procedimientos en este capítulo asumen que usted está usando un sistema anfitrión que ejecuta Red Hat Enterprise Linux. Para completar con éxito los procedimientos, su sistema anfitrión debe tener instalados los siguientes paquetes.
Tabla 1.2. Paquetes del sistema
Paquete | Repositorio | Descripción |
---|---|---|
libvirt | rhel-8-for-x86_64-appstream-rpms | API, demonio y herramienta de gestión de código abierto para gestionar la virtualización de plataformas |
virt-install | rhel-8-for-x86_64-appstream-rpms | Una utilidad de línea de comandos para crear máquinas virtuales |
libguestfs | rhel-8-for-x86_64-appstream-rpms | Una biblioteca para acceder y modificar los sistemas de archivos de las máquinas virtuales |
libguestfs-tools | rhel-8-for-x86_64-appstream-rpms | Herramientas de administración del sistema para máquinas virtuales; incluye la utilidad guestfish |
1.2.3. Ajustes de configuración de Azure VM
Las VM de Azure deben tener los siguientes ajustes de configuración. Algunos de estos ajustes se habilitan durante la creación inicial de la VM. Otros ajustes se establecen cuando se aprovisiona la imagen de la VM para Azure. Tenga en cuenta estos ajustes a medida que avanza en los procedimientos. Consúltelos cuando sea necesario.
Tabla 1.3. Ajustes de configuración de la máquina virtual
Configuración | Recomendación |
---|---|
ssh | ssh debe estar habilitado para proporcionar acceso remoto a sus máquinas virtuales de Azure. |
dhcp | El adaptador virtual primario debe estar configurado para dhcp (sólo IPv4). |
Espacio de intercambio | No cree un archivo de intercambio dedicado o una partición de intercambio. Puede configurar el espacio de intercambio con el agente de Windows Azure Linux (WALinuxAgent). |
NIC | Elija virtio para el adaptador de red virtual primario. |
codificación | Para las imágenes personalizadas, utilice Network Bound Disk Encryption (NBDE) para el cifrado completo del disco en Azure. |
1.2.4. Creación de una imagen base a partir de una imagen ISO
El siguiente procedimiento enumera los pasos y requisitos de configuración inicial para crear una imagen ISO personalizada. Una vez que haya configurado la imagen, puede utilizarla como plantilla para crear instancias VM adicionales.
Procedimiento
- Descargue la última imagen ISO de Red Hat Enterprise Linux 8 Binary DVD desde el Portal del Cliente de Red Hat.
- Asegúrese de que ha habilitado su máquina anfitriona para la virtualización. Consulte Activación de la virtualización en RHEL 8 para obtener información y procedimientos.
Cree e inicie una VM básica de Red Hat Enterprise Linux. Consulte Creación de máquinas virtuales para obtener instrucciones.
Si utiliza la línea de comandos para crear su VM, asegúrese de configurar la memoria y las CPUs por defecto a la capacidad que desea para la VM. Establezca su interfaz de red virtual en virtio.
A continuación se presenta un ejemplo de línea de comandos básica.
virt-install --name isotest --memory 2048 --vcpus 2 --disk size=8,bus=virtio --location rhel-8.0-x86_64-dvd.iso --os-variant=rhel8.0
Si utiliza la consola web para crear su VM, siga el procedimiento en Creación de máquinas virtuales utilizando la consola web, con estas advertencias:
- No compruebe Immediately Start VM.
- Cambie su Memory y Storage Size a su configuración preferida.
- Antes de comenzar la instalación, asegúrese de haber cambiado Model en Virtual Network Interface Settings a virtio y cambie su vCPUs a la configuración de capacidad que desee para la VM.
Revise la siguiente selección de instalación adicional y las modificaciones.
- Seleccione Minimal Install con la opción standard RHEL.
Para Installation Destination, seleccione Custom Storage Configuration. Utilice la siguiente información de configuración para realizar sus selecciones.
- Verifique al menos 500 MB para /boot.
- Para el sistema de archivos, utilice xfs, ext4 o ext3 para las particiones boot y root.
- Eliminar el espacio de intercambio. El espacio de intercambio se configura en el servidor blade físico en Azure por el WALinuxAgent.
- En la pantalla Installation Summary, seleccione Network and Host Name. Cambie Ethernet por On.
Cuando se inicia la instalación:
-
Cree una contraseña en
root
. - Cree una cuenta de usuario administrativo.
-
Cree una contraseña en
- Cuando la instalación se haya completado, reinicie la máquina virtual e inicie sesión con la cuenta raíz.
-
Una vez que haya iniciado la sesión como
root
, podrá configurar la imagen.
1.3. Configuración de la imagen base para Microsoft Azure
La imagen base requiere cambios de configuración para servir como imagen de su VM RHEL 8 en Azure. Las siguientes secciones proporcionan los cambios de configuración adicionales que requiere Azure.
1.3.1. Instalación de los controladores de dispositivos de Hyper-V
Microsoft proporciona controladores de dispositivos de red y de almacenamiento como parte de su paquete de servicios de integración de Linux (LIS) para Hyper-V. Es posible que tenga que instalar los controladores de dispositivos de Hyper-V en la imagen de la VM antes de aprovisionarla como una VM de Azure. Utilice el comando lsinitrd | grep hv
para verificar que los controladores están instalados.
Procedimiento
Introduzca el siguiente comando
grep
para determinar si los controladores de dispositivos Hyper-V necesarios están instalados.# lsinitrd | grep hv
En el ejemplo siguiente, todos los controladores necesarios están instalados.
# lsinitrd | grep hv drwxr-xr-x 2 root root 0 Aug 12 14:21 usr/lib/modules/3.10.0-932.el7.x86_64/kernel/drivers/hv -rw-r--r-- 1 root root 31272 Aug 11 08:45 usr/lib/modules/3.10.0-932.el7.x86_64/kernel/drivers/hv/hv_vmbus.ko.xz -rw-r--r-- 1 root root 25132 Aug 11 08:46 usr/lib/modules/3.10.0-932.el7.x86_64/kernel/drivers/net/hyperv/hv_netvsc.ko.xz -rw-r--r-- 1 root root 9796 Aug 11 08:45 usr/lib/modules/3.10.0-932.el7.x86_64/kernel/drivers/scsi/hv_storvsc.ko.xz
Si todos los controladores no están instalados, complete los pasos restantes.
NotaEs posible que exista un controlador
hv_vmbus
en el entorno. Incluso si este controlador está presente, complete los siguientes pasos.-
Cree un archivo llamado
hv.conf
en/etc/dracut.conf.d
. Añada los siguientes parámetros del controlador al archivo
hv.conf
.add_drivers+=" hv_vmbus " add_drivers+=" hv_netvsc " add_drivers+=" hv_storvsc "
NotaTenga en cuenta los espacios antes y después de las comillas, por ejemplo,
add_drivers =" hv_vmbus "
. Esto asegura que se carguen controladores únicos en el caso de que ya existan otros controladores Hyper-V en el entorno.Regenerar la imagen
initramfs
.# dracut -f -v --regenerate-all
Pasos de verificación
- Reinicie la máquina.
-
Ejecute el comando
lsinitrd | grep hv
para verificar que los controladores están instalados.
1.3.2. Realización de cambios de configuración adicionales
La VM requiere más cambios de configuración para operar en Azure. Realice el siguiente procedimiento para realizar los cambios adicionales.
Procedimiento
- Si es necesario, encienda la máquina virtual.
Registre la VM y habilite el repositorio de Red Hat Enterprise Linux 8.
# subscription-manager register --auto-attach
Detención y eliminación de cloud-init
Detenga el servicio
cloud-init
(si está presente).# systemctl stop cloud-init
Retire el software
cloud-init
.# yum remove cloud-init
Completar otros cambios de la MV
Edite el archivo
/etc/ssh/sshd_config
y habilite la autenticación con contraseña.PasswordAuthentication sí
Establezca un nombre de host genérico.
# hostnamectl set-hostname localhost.localdomain
Edite (o cree) el archivo
/etc/sysconfig/network-scripts/ifcfg-eth0
. Utilice únicamente los parámetros que se indican a continuación.NotaEl archivo
ifcfg-eth0
no existe en la imagen ISO del DVD de RHEL 8 y debe ser creado.DEVICE="eth0" ONBOOT="yes" BOOTPROTO="dhcp" TYPE="Ethernet" USERCTL="yes" PEERDNS="yes" IPV6INIT="no"
Eliminar todas las reglas de dispositivos de red persistentes, si están presentes.
# rm -f /etc/udev/rules.d/70-persistent-net.rules # rm -f /etc/udev/rules.d/75-persistent-net-generator.rules # rm -f /etc/udev/rules.d/80-net-name-slot-rules
Configure
ssh
para que se inicie automáticamente.# systemctl enable sshd # systemctl is-enabled sshd
Modificar los parámetros de arranque del kernel.
-
Añada
crashkernel=256M
al principio de la líneaGRUB_CMDLINE_LINUX
en el archivo/etc/default/grub
. Sicrashkernel=auto
está presente, cámbielo porcrashkernel=256M
. Añada las siguientes líneas al final de la línea
GRUB_CMDLINE_LINUX
, si no están presentes.earlyprintk=ttyS0 console=ttyS0 rootdelay=300
Elimine las siguientes opciones, si están presentes.
rhgb quiet
-
Añada
Regenerar el archivo
grub.cfg
.# grub2-mkconfig -o /boot/grub2/grub.cfg
Instale y habilite el Agente de Windows Azure Linux (WALinuxAgent). Red Hat Enterprise Linux 8 Application Stream (AppStream) incluye el WALinuxAgent. Consulte Uso de AppStream para obtener más información.
# yum install WALinuxAgent -y # systemctl enable waagent
Edite las siguientes líneas en el archivo
/etc/waagent.conf
para configurar el espacio de intercambio para las máquinas virtuales provisionadas. Configure el espacio de intercambio para lo que sea apropiado para sus máquinas virtuales aprovisionadas.Provisioning.DeleteRootPassword=n ResourceDisk.Filesystem=ext4 ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048
Preparando la provisión
Desregistre la VM de Red Hat Subscription Manager.
# subscription-manager unregister
Prepara la VM para el aprovisionamiento de Azure limpiando los detalles de aprovisionamiento existentes. Azure vuelve a aprovisionar la VM en Azure. Este comando genera advertencias, lo cual es de esperar.
# waagent -force -deprovision
Limpia el historial del shell y apaga la VM.
# export HISTSIZE=0 # poweroff
1.4. Convertir la imagen a un formato VHD fijo
Todas las imágenes de Microsoft Azure VM deben estar en un formato fijo VHD
. La imagen debe estar alineada en un límite de 1 MB antes de ser convertida a VHD. Esta sección describe cómo convertir la imagen de qcow2
a un formato fijo de VHD
y alinear la imagen, si es necesario. Una vez que haya convertido la imagen, puede subirla a Azure.
Procedimiento
Convierte la imagen de
qcow2
al formatoraw
.$ qemu-img convert -f qcow2 -O raw <image-name>.qcow2 <image-name>.raw
Cree un script de shell con el contenido que se indica a continuación.
#!/bin/bash MB=$((1024 * 1024)) size=$(qemu-img info -f raw --output json "$1" | gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}') rounded_size=$((($size/$MB + 1) * $MB)) if [ $(($size % $MB)) -eq 0 ] then echo "Your image is already aligned. You do not need to resize." exit 1 fi echo "rounded size = $rounded_size" export rounded_size
Ejecute el script. Este ejemplo utiliza el nombre
align.sh
.$ sh align.sh <image-xxx>.raw
- Si aparece el mensaje "Your image is already aligned. You do not need to resize.", continúe con el siguiente paso.
- Si aparece un valor, su imagen no está alineada.
Utilice el siguiente comando para convertir el archivo a un formato fijo
VHD
.The sample uses qemu-img version 2.12.0.
$ qemu-img convert -f raw -o subformat=fixed,force_size -O vpc <image-xxx>.raw <image.xxx>.vhd
Una vez convertido, el archivo
VHD
está listo para subir a Azure.
Aligning the image
Complete los siguientes pasos sólo si el archivo raw
no está alineado.
Cambie el tamaño del archivo
raw
utilizando el valor redondeado que se muestra al ejecutar el script de verificación.$ qemu-img resize -f raw <image-xxx>.raw <rounded-value>
Convierte el archivo de imagen
raw
a un formatoVHD
.The sample uses qemu-img version 2.12.0.
$ qemu-img convert -f raw -o subformat=fixed,force_size -O vpc <image-xxx>.raw <image.xxx>.vhd
Una vez convertido, el archivo
VHD
está listo para subir a Azure.
1.5. Instalación de la CLI de Azure
Complete los siguientes pasos para instalar la interfaz de línea de comandos de Azure (Azure CLI 2.1). Azure CLI 2.1 es una utilidad basada en Python que crea y gestiona máquinas virtuales en Azure.
Requisitos previos
- Es necesario tener una cuenta en Microsoft Azure para poder utilizar la CLI de Azure.
- La instalación de Azure CLI requiere Python 3.x.
Procedimiento
Importe la clave de repositorio de Microsoft.
$ sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
Cree una entrada en el repositorio local de Azure CLI.
$ sudo sh -c 'echo -e \N"[azure-cli]\Nnombre=Azure CLI\nbaseurl=https://packages.microsoft.com/yumrepos/azure-cli\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/azure-cli.repo'
Actualice el índice de paquetes de
yum
.$ yum check-update
Compruebe su versión de Python (
python --version
) e instale Python 3.x, si es necesario.$ sudo yum install python3
Instale la CLI de Azure.
$ sudo yum install -y azure-cli
Ejecute la CLI de Azure.
$ az
Recursos adicionales
1.6. Creación de recursos en Azure
Complete el siguiente procedimiento para crear los recursos de Azure que necesita antes de poder cargar el archivo VHD
y crear la imagen de Azure.
Procedimiento
Introduzca el siguiente comando para autenticar su sistema con Azure e iniciar la sesión.
$ az login
NotaSi hay un navegador disponible en su entorno, la CLI abre su navegador a la página de inicio de sesión de Azure. Consulte Iniciar sesión con Azure CLI para obtener más información y opciones.
Cree un grupo de recursos en una región de Azure.
$ az group create --nombre <grupo de recursos> --ubicación <región>
Ejemplo:
[clouduser@localhost]$ az group create --name azrhelclirsgrp --location southcentralus { "id": "/subscriptions//resourceGroups/azrhelclirsgrp", "location": "southcentralus", "managedBy": null, "name": "azrhelclirsgrp", "properties": { "provisioningState": "Succeeded" }, "tags": null }
Cree una cuenta de almacenamiento. Consulte Tipos de SKU para obtener más información sobre los valores de SKU válidos.
$ az storage account create -l <azure-region> -n <storage-account-name> -g <resource-group> --sku <sku_type>
Ejemplo:
[clouduser@localhost]$ az storage account create -l southcentralus -n azrhelclistact -g azrhelclirsgrp --sku Standard_LRS { "accessTier": null, "creationTime": "2017-04-05T19:10:29.855470+00:00", "customDomain": null, "encryption": null, "id": "/subscriptions//resourceGroups/azrhelclirsgrp/providers/Microsoft.Storage/storageAccounts/azrhelclistact", "kind": "StorageV2", "lastGeoFailoverTime": null, "location": "southcentralus", "name": "azrhelclistact", "primaryEndpoints": { "blob": "https://azrhelclistact.blob.core.windows.net/", "file": "https://azrhelclistact.file.core.windows.net/", "queue": "https://azrhelclistact.queue.core.windows.net/", "table": "https://azrhelclistact.table.core.windows.net/" }, "primaryLocation": "southcentralus", "provisioningState": "Succeeded", "resourceGroup": "azrhelclirsgrp", "secondaryEndpoints": null, "secondaryLocation": null, "sku": { "name": "Standard_LRS", "tier": "Standard" }, "statusOfPrimary": "available", "statusOfSecondary": null, "tags": {}, "type": "Microsoft.Storage/storageAccounts" }
Obtiene la cadena de conexión de la cuenta de almacenamiento.
$ az storage account show-connection-string -n <storage-account-name> -g <resource-group>
Ejemplo:
[clouduser@localhost]$ az storage account show-connection-string -n azrhelclistact -g azrhelclirsgrp { "connectionString": "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=azrhelclistact;AccountKey=NreGk...==" }
Exporte la cadena de conexión copiando la cadena de conexión y pegándola en el siguiente comando. Esta cadena conecta su sistema con la cuenta de almacenamiento.
$ export AZURE_STORAGE_CONNECTION_STRING="<cadena de conexión de almacenamiento>"
Ejemplo:
[clouduser@localhost]$ export AZURE_STORAGE_CONNECTION_STRING="DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=azrhelclistact;AccountKey=NreGk...=="
Crear el contenedor de almacenamiento.
$ az storage container create -n <nombre-contenedor>
Ejemplo:
[clouduser@localhost]$ az storage container create -n azrhelclistcont { "created": true }
Crea una red virtual.
$ az network vnet create -g <grupo de recursos> -nombre <nombre de la red> -nombre de la subred <nombre de la subred>
Ejemplo:
[clouduser@localhost]$ az network vnet create --resource-group azrhelclirsgrp --name azrhelclivnet1 --subnet-name azrhelclisubnet1 { "newVNet": { "addressSpace": { "addressPrefixes": [ "10.0.0.0/16" ] }, "dhcpOptions": { "dnsServers": [] }, "etag": "W/\"\"", "id": "/subscriptions//resourceGroups/azrhelclirsgrp/providers/Microsoft.Network/virtualNetworks/azrhelclivnet1", "location": "southcentralus", "name": "azrhelclivnet1", "provisioningState": "Succeeded", "resourceGroup": "azrhelclirsgrp", "resourceGuid": "0f25efee-e2a6-4abe-a4e9-817061ee1e79", "subnets": [ { "addressPrefix": "10.0.0.0/24", "etag": "W/\"\"", "id": "/subscriptions//resourceGroups/azrhelclirsgrp/providers/Microsoft.Network/virtualNetworks/azrhelclivnet1/subnets/azrhelclisubnet1", "ipConfigurations": null, "name": "azrhelclisubnet1", "networkSecurityGroup": null, "provisioningState": "Succeeded", "resourceGroup": "azrhelclirsgrp", "resourceNavigationLinks": null, "routeTable": null } ], "tags": {}, "type": "Microsoft.Network/virtualNetworks", "virtualNetworkPeerings": null } }
Recursos adicionales
1.7. Carga y creación de una imagen de Azure
Complete los siguientes pasos para cargar el archivo VHD
en su contenedor y crear una imagen personalizada de Azure.
La cadena de conexión de almacenamiento exportada no persiste después de un reinicio del sistema. Si alguno de los comandos de los siguientes pasos falla, exporte de nuevo la cadena de conexión.
Procedimiento
Suba el archivo
VHD
al contenedor de almacenamiento. Puede tardar varios minutos. Para obtener una lista de contenedores de almacenamiento, introduzca el comandoaz storage container list
.$ az storage blob upload --account-name <storage-account-name> --container-name <container-name> --type page --file <path-to-vhd> --name <image-name>.vhd
Ejemplo:
[clouduser@localhost]$ az storage blob upload --account-name azrhelclistact --container-name azrhelclistcont --type page --file rhel-image-8.vhd --name rhel-image-8.vhd Percent complete: %100.0
Obtenga la URL del archivo
VHD
cargado para utilizarlo en el siguiente paso.$ az storage blob url -c <nombre-contenedor> -n <nombre-imagen>.vhd
Ejemplo:
[clouduser@localhost]$ az storage blob url -c azrhelclistcont -n rhel-image-8.vhd "https://azrhelclistact.blob.core.windows.net/azrhelclistcont/rhel-image-8.vhd"
Cree la imagen personalizada de Azure.
$ az image create -n <image-name> -g <resource-group> -l <azure-region> --source <URL> --os-type linux
NotaLa generación de hipervisor por defecto de la VM es V1. Puede especificar opcionalmente una generación de hipervisor V2 incluyendo la opción
--hyper-v-generation V2
. Las VM de generación 2 utilizan una arquitectura de arranque basada en UEFI. Consulte Soporte para máquinas virtuales de generación 2 en Azure para obtener información sobre las máquinas virtuales de generación 2.El comando puede devolver el error "Sólo se pueden importar blobs formateados como VHDs" Este error puede significar que la imagen no fue alineada al límite más cercano de 1 MB antes de ser convertida a
VHD
.Ejemplo:
[clouduser@localhost]$ az image create -n rhel8 -g azrhelclirsgrp2 -l southcentralus --source https://azrhelclistact.blob.core.windows.net/azrhelclistcont/rhel-image-8.vhd --os-type linux
1.8. Creación e inicio de la VM en Azure
Los siguientes pasos proporcionan las opciones mínimas del comando para crear una VM Azure de disco gestionado a partir de la imagen. Consulte az vm create para conocer las opciones adicionales.
Procedimiento
Introduzca el siguiente comando para crear la VM.
NotaLa opción
--generate-ssh-keys
crea un par de claves privadas/públicas. Los archivos de claves privadas y públicas se crean en~/.ssh
en su sistema. La clave pública se añade al archivoauthorized_keys
en la VM para el usuario especificado por la opción--admin-username
. Consulte Otros métodos de autenticación para obtener información adicional.$ az vm create -g <nombre-de-recursos> -l <región> -n <nombre-de-vm> --nombre-de-red <nombre-de-red> --subred <nombre-de-subred> --size Standard_A2 --os-disk-name <simple-name> --admin-username <administrator-name> --generate-ssh-keys --image <path-to-image>
Ejemplo:
[clouduser@localhost]$ az vm create -g azrhelclirsgrp2 -l southcentralus -n rhel-azure-vm-1 --vnet-name azrhelclivnet1 --subnet azrhelclisubnet1 --size Standard_A2 --os-disk-name vm-1-osdisk --admin-username clouduser --generate-ssh-keys --image rhel8 { "fqdns": "", "id": "/subscriptions//resourceGroups/azrhelclirsgrp/providers/Microsoft.Compute/virtualMachines/rhel-azure-vm-1", "location": "southcentralus", "macAddress": "", "powerState": "VM running", "privateIpAddress": "10.0.0.4", "publicIpAddress": "<public-IP-address>", "resourceGroup": "azrhelclirsgrp2"
Tenga en cuenta la dirección
publicIpAddress
. Necesitará esta dirección para iniciar la sesión en la máquina virtual en el siguiente paso.Inicie una sesión SSH e inicie sesión en la VM.
[clouduser@localhost]$ ssh -i /home/clouduser/.ssh/id_rsa clouduser@<public-IP-address>. The authenticity of host ',<public-IP-address>' can't be established. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '<public-IP-address>' (ECDSA) to the list of known hosts. [clouduser@rhel-azure-vm-1 ~]$
Si ve un aviso de usuario, ha desplegado con éxito su VM de Azure.
Ahora puede ir al portal de Microsoft Azure y comprobar los registros de auditoría y las propiedades de sus recursos. Puede gestionar sus máquinas virtuales directamente en este portal. Si está gestionando varias máquinas virtuales, debe utilizar la CLI de Azure. La CLI de Azure proporciona una potente interfaz para sus recursos en Azure. Introduzca az --help
en la CLI o consulte la referencia de comandos de la CLI de Azure para obtener más información sobre los comandos que utiliza para gestionar sus máquinas virtuales en Microsoft Azure.
1.9. Otros métodos de autenticación
Aunque se recomienda para aumentar la seguridad, no es necesario utilizar el par de claves generado por Azure. Los siguientes ejemplos muestran dos métodos de autenticación SSH.
Example 1: Estas opciones de comando aprovisionan una nueva VM sin generar un archivo de clave pública. Permiten la autenticación SSH utilizando una contraseña.
$ az vm create -g <nombre-del-grupo-de-recursos> -l <nombre-de-la-región> -n <nombre-del-mundo> --nombre-de-la-red <nombre-de-la-red> --subred <nombre-de-la-red> --tamaño-Estándar_A2 --os-disk-name <simple-name> --authentication-type password --admin-username <administrator-name> --admin-password <ssh-password> --image <path-to-image>
$ ssh <nombre-de-usuario>@<dirección-ip-pública>
Example 2: Estas opciones de comando aprovisionan una nueva VM de Azure y permiten la autenticación SSH utilizando un archivo de clave pública existente.
$ az vm create -g <nombre-del-grupo-de-recursos> -l <nombre-de-la-región> -n <nombre-del-vm> --nombre-de-la-red <nombre-de-la-red> --subred <nombre-de-la-red> --size Standard_A2 --os-disk-name <simple-name> --admin-username <administrator-name> --ssh-key-value <path-to-existing-ssh-key> --image <path-to-image>
$ ssh -i <path-to-existing-ssh-key> <admin-username>@<public-ip-address>
1.10. Adjuntar suscripciones a Red Hat
Complete los siguientes pasos para adjuntar las suscripciones que haya habilitado previamente a través del programa Red Hat Cloud Access.
Requisitos previos
Debe haber activado sus suscripciones.
Procedimiento
Registre su sistema.
subscription-manager register --auto-attach
Adjunte sus suscripciones.
- Puede utilizar una clave de activación para adjuntar suscripciones. Consulte Creación de claves de activación del Portal del Cliente de Red Hat para obtener más información.
- Como alternativa, puede adjuntar manualmente una suscripción utilizando el ID del grupo de suscripciones (ID del grupo). Consulte Adjuntar y eliminar suscripciones a través de la línea de comandos.
Capítulo 2. Configuración de un clúster de alta disponibilidad de Red Hat en Microsoft Azure
Este capítulo incluye información y procedimientos para configurar un cluster de Alta Disponibilidad (HA) de Red Hat en Azure utilizando instancias de máquinas virtuales (VM) de Azure como nodos de cluster. Los procedimientos en este capítulo asumen que usted está creando una imagen personalizada para Azure. Tiene varias opciones para obtener las imágenes de RHEL 8 que utiliza para su cluster. Consulte Opciones de imagen de Red Hat Enterprise Linux en Azure para obtener información sobre las opciones de imagen para Azure.
Este capítulo incluye los procedimientos necesarios para configurar su entorno para Azure. Una vez que haya configurado su entorno, puede crear y configurar instancias de VM de Azure.
El capítulo también incluye procedimientos específicos para la creación de clústeres de alta disponibilidad, que transforman nodos individuales en un clúster de nodos de alta disponibilidad en Azure. Estos incluyen procedimientos para la instalación de los paquetes y agentes de alta disponibilidad en cada nodo del clúster, la configuración del cercado y la instalación de los agentes de recursos de red de Azure.
El capítulo hace referencia a la documentación de Azure en varios lugares. Para muchos procedimientos, consulte la documentación de Azure a la que se hace referencia para obtener más información.
Requisitos previos
- Regístrese para obtener una cuenta en el Portal del Cliente de Red Hat.
- Regístrese en una cuenta de Microsoft Azure con privilegios de administrador.
- Es necesario instalar la interfaz de línea de comandos (CLI) de Azure. Para obtener más información, consulte Sección 1.5, “Instalación de la CLI de Azure”.
- Habilite sus suscripciones en el programa Red Hat Cloud Access. El programa Red Hat Cloud Access le permite trasladar sus suscripciones de Red Hat desde sistemas físicos o locales a Azure con el apoyo total de Red Hat.
Recursos adicionales
2.1. Creación de recursos en Azure
Complete el siguiente procedimiento para crear una región, un grupo de recursos, una cuenta de almacenamiento, una red virtual y un conjunto de disponibilidad. Necesitará estos recursos para completar las tareas posteriores de este capítulo.
Procedimiento
Autentifique su sistema con Azure e inicie sesión.
$ az login
NotaSi hay un navegador disponible en su entorno, la CLI abre su navegador a la página de inicio de sesión de Azure.
Ejemplo:
[clouduser@localhost]$ az login To sign in, use a web browser to open the page https://aka.ms/devicelogin and enter the code FDMSCMETZ to authenticate. [ { "cloudName": "AzureCloud", "id": "Subscription ID", "isDefault": true, "name": "MySubscriptionName", "state": "Enabled", "tenantId": "Tenant ID", "user": { "name": "clouduser@company.com", "type": "user" } } ]
Cree un grupo de recursos en una región de Azure.
$ az group create --name resource-group --location azure-region
Ejemplo:
[clouduser@localhost]$ az group create --name azrhelclirsgrp --location southcentralus { "id": "/subscriptions//resourceGroups/azrhelclirsgrp", "location": "southcentralus", "managedBy": null, "name": "azrhelclirsgrp", "properties": { "provisioningState": "Succeeded" }, "tags": null }
Crea una cuenta de almacenamiento.
$ az storage account create -l azure-region -n storage-account-name -g resource-group --sku sku_type --kind StorageV2
Ejemplo:
[clouduser@localhost]$ az storage account create -l southcentralus -n azrhelclistact -g azrhelclirsgrp --sku Standard_LRS --kind StorageV2 { "accessTier": null, "creationTime": "2017-04-05T19:10:29.855470+00:00", "customDomain": null, "encryption": null, "id": "/subscriptions//resourceGroups/azrhelclirsgrp/providers/Microsoft.Storage/storageAccounts/azrhelclistact", "kind": "StorageV2", "lastGeoFailoverTime": null, "location": "southcentralus", "name": "azrhelclistact", "primaryEndpoints": { "blob": "https://azrhelclistact.blob.core.windows.net/", "file": "https://azrhelclistact.file.core.windows.net/", "queue": "https://azrhelclistact.queue.core.windows.net/", "table": "https://azrhelclistact.table.core.windows.net/" }, "primaryLocation": "southcentralus", "provisioningState": "Succeeded", "resourceGroup": "azrhelclirsgrp", "secondaryEndpoints": null, "secondaryLocation": null, "sku": { "name": "Standard_LRS", "tier": "Standard" }, "statusOfPrimary": "available", "statusOfSecondary": null, "tags": {}, "type": "Microsoft.Storage/storageAccounts" }
Obtiene la cadena de conexión de la cuenta de almacenamiento.
$ az storage account show-connection-string -n storage-account-name -g resource-group
Ejemplo:
[clouduser@localhost]$ az storage account show-connection-string -n azrhelclistact -g azrhelclirsgrp { "connectionString": "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=azrhelclistact;AccountKey=NreGk...==" }
Exporte la cadena de conexión copiando la cadena de conexión y pegándola en el siguiente comando. Esta cadena conecta su sistema con la cuenta de almacenamiento.
$ export AZURE_STORAGE_CONNECTION_STRING="storage-connection-string"
Ejemplo:
[clouduser@localhost]$ export AZURE_STORAGE_CONNECTION_STRING="DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=azrhelclistact;AccountKey=NreGk...=="
Crear el contenedor de almacenamiento.
$ az storage container create -n container-name
Ejemplo:
[clouduser@localhost]$ az storage container create -n azrhelclistcont { "created": true }
Cree una red virtual. Todos los nodos del clúster deben estar en la misma red virtual.
$ az network vnet create -g resource group --name vnet-name --subnet-name subnet-name
Ejemplo:
[clouduser@localhost]$ az network vnet create --resource-group azrhelclirsgrp --name azrhelclivnet1 --subnet-name azrhelclisubnet1 { "newVNet": { "addressSpace": { "addressPrefixes": [ "10.0.0.0/16" ] }, "dhcpOptions": { "dnsServers": [] }, "etag": "W/\"\"", "id": "/subscriptions//resourceGroups/azrhelclirsgrp/providers/Microsoft.Network/virtualNetworks/azrhelclivnet1", "location": "southcentralus", "name": "azrhelclivnet1", "provisioningState": "Succeeded", "resourceGroup": "azrhelclirsgrp", "resourceGuid": "0f25efee-e2a6-4abe-a4e9-817061ee1e79", "subnets": [ { "addressPrefix": "10.0.0.0/24", "etag": "W/\"\"", "id": "/subscriptions//resourceGroups/azrhelclirsgrp/providers/Microsoft.Network/virtualNetworks/azrhelclivnet1/subnets/azrhelclisubnet1", "ipConfigurations": null, "name": "azrhelclisubnet1", "networkSecurityGroup": null, "provisioningState": "Succeeded", "resourceGroup": "azrhelclirsgrp", "resourceNavigationLinks": null, "routeTable": null } ], "tags": {}, "type": "Microsoft.Network/virtualNetworks", "virtualNetworkPeerings": null } }
Cree un conjunto de disponibilidad. Todos los nodos del clúster deben estar en el mismo conjunto de disponibilidad.
$ az vm availability-set create --name MyAvailabilitySet --resource-group MyResourceGroup
Ejemplo:
[clouduser@localhost]$ az vm availability-set create --name rhelha-avset1 --resource-group azrhelclirsgrp { "additionalProperties": {}, "id": "/subscriptions/.../resourceGroups/azrhelclirsgrp/providers/Microsoft.Compute/availabilitySets/rhelha-avset1", "location": "southcentralus", "name": “rhelha-avset1", "platformFaultDomainCount": 2, "platformUpdateDomainCount": 5, ...omitted
Recursos adicionales
2.2. Paquetes de sistema necesarios para la Alta Disponibilidad
El procedimiento asume que está creando una imagen de VM para Azure HA usando Red Hat Enterprise Linux. Para completar con éxito el procedimiento, los siguientes paquetes deben ser instalados.
Tabla 2.1. Paquetes del sistema
Paquete | Repositorio | Descripción |
---|---|---|
libvirt | rhel-8-for-x86_64-appstream-rpms | API, demonio y herramienta de gestión de código abierto para gestionar la virtualización de plataformas |
virt-install | rhel-8-for-x86_64-appstream-rpms | Una utilidad de línea de comandos para crear máquinas virtuales |
libguestfs | rhel-8-for-x86_64-appstream-rpms | Una biblioteca para acceder y modificar los sistemas de archivos de las máquinas virtuales |
libguestfs-tools | rhel-8-for-x86_64-appstream-rpms | Herramientas de administración del sistema para máquinas virtuales; incluye la utilidad guestfish |
2.3. Ajustes de configuración de Azure VM
Las VM de Azure deben tener los siguientes ajustes de configuración. Algunos de estos ajustes se habilitan durante la creación inicial de la VM. Otros ajustes se establecen cuando se aprovisiona la imagen de la VM para Azure. Tenga en cuenta estos ajustes a medida que avanza en los procedimientos. Consúltelos cuando sea necesario.
Tabla 2.2. Ajustes de configuración de la máquina virtual
Configuración | Recomendación |
---|---|
ssh | ssh debe estar habilitado para proporcionar acceso remoto a sus máquinas virtuales de Azure. |
dhcp | El adaptador virtual primario debe estar configurado para dhcp (sólo IPv4). |
Espacio de intercambio | No cree un archivo de intercambio dedicado o una partición de intercambio. Puede configurar el espacio de intercambio con el agente de Windows Azure Linux (WALinuxAgent). |
NIC | Elija virtio para el adaptador de red virtual primario. |
codificación | Para las imágenes personalizadas, utilice Network Bound Disk Encryption (NBDE) para el cifrado completo del disco en Azure. |
2.4. Instalación de los controladores de dispositivos de Hyper-V
Microsoft proporciona controladores de dispositivos de red y de almacenamiento como parte de su paquete de servicios de integración de Linux (LIS) para Hyper-V. Es posible que tenga que instalar los controladores de dispositivos de Hyper-V en la imagen de la VM antes de aprovisionarla como una VM de Azure. Utilice el comando lsinitrd | grep hv
para verificar que los controladores están instalados.
Procedimiento
Introduzca el siguiente comando
grep
para determinar si los controladores de dispositivos Hyper-V necesarios están instalados.# lsinitrd | grep hv
En el ejemplo siguiente, todos los controladores necesarios están instalados.
# lsinitrd | grep hv drwxr-xr-x 2 root root 0 Aug 12 14:21 usr/lib/modules/3.10.0-932.el7.x86_64/kernel/drivers/hv -rw-r--r-- 1 root root 31272 Aug 11 08:45 usr/lib/modules/3.10.0-932.el7.x86_64/kernel/drivers/hv/hv_vmbus.ko.xz -rw-r--r-- 1 root root 25132 Aug 11 08:46 usr/lib/modules/3.10.0-932.el7.x86_64/kernel/drivers/net/hyperv/hv_netvsc.ko.xz -rw-r--r-- 1 root root 9796 Aug 11 08:45 usr/lib/modules/3.10.0-932.el7.x86_64/kernel/drivers/scsi/hv_storvsc.ko.xz
Si todos los controladores no están instalados, complete los pasos restantes.
NotaEs posible que exista un controlador
hv_vmbus
en el entorno. Incluso si este controlador está presente, complete los siguientes pasos.-
Cree un archivo llamado
hv.conf
en/etc/dracut.conf.d
. Añada los siguientes parámetros del controlador al archivo
hv.conf
.add_drivers+=" hv_vmbus " add_drivers+=" hv_netvsc " add_drivers+=" hv_storvsc "
NotaTenga en cuenta los espacios antes y después de las comillas, por ejemplo,
add_drivers =" hv_vmbus "
. Esto asegura que se carguen controladores únicos en el caso de que ya existan otros controladores Hyper-V en el entorno.Regenerar la imagen
initramfs
.# dracut -f -v --regenerate-all
Pasos de verificación
- Reinicie la máquina.
-
Ejecute el comando
lsinitrd | grep hv
para verificar que los controladores están instalados.
2.5. Realización de cambios de configuración adicionales
La VM requiere más cambios de configuración para operar en Azure. Realice el siguiente procedimiento para realizar los cambios adicionales.
Procedimiento
- Si es necesario, encienda la máquina virtual.
Registre la VM y habilite el repositorio de Red Hat Enterprise Linux 8.
# subscription-manager register --auto-attach
Detención y eliminación de cloud-init
Detenga el servicio
cloud-init
(si está presente).# systemctl stop cloud-init
Retire el software
cloud-init
.# yum remove cloud-init
Completar otros cambios de la MV
Edite el archivo
/etc/ssh/sshd_config
y habilite la autenticación con contraseña.PasswordAuthentication sí
Establezca un nombre de host genérico.
# hostnamectl set-hostname localhost.localdomain
Edite (o cree) el archivo
/etc/sysconfig/network-scripts/ifcfg-eth0
. Utilice únicamente los parámetros que se indican a continuación.NotaEl archivo
ifcfg-eth0
no existe en la imagen ISO del DVD de RHEL 8 y debe ser creado.DEVICE="eth0" ONBOOT="yes" BOOTPROTO="dhcp" TYPE="Ethernet" USERCTL="yes" PEERDNS="yes" IPV6INIT="no"
Eliminar todas las reglas de dispositivos de red persistentes, si están presentes.
# rm -f /etc/udev/rules.d/70-persistent-net.rules # rm -f /etc/udev/rules.d/75-persistent-net-generator.rules # rm -f /etc/udev/rules.d/80-net-name-slot-rules
Configure
ssh
para que se inicie automáticamente.# systemctl enable sshd # systemctl is-enabled sshd
Modificar los parámetros de arranque del kernel.
-
Añada
crashkernel=256M
al principio de la líneaGRUB_CMDLINE_LINUX
en el archivo/etc/default/grub
. Sicrashkernel=auto
está presente, cámbielo porcrashkernel=256M
. Añada las siguientes líneas al final de la línea
GRUB_CMDLINE_LINUX
, si no están presentes.earlyprintk=ttyS0 console=ttyS0 rootdelay=300
Elimine las siguientes opciones, si están presentes.
rhgb quiet
-
Añada
Regenerar el archivo
grub.cfg
.# grub2-mkconfig -o /boot/grub2/grub.cfg
Instale y habilite el Agente de Windows Azure Linux (WALinuxAgent). Red Hat Enterprise Linux 8 Application Stream (AppStream) incluye el WALinuxAgent. Consulte Uso de AppStream para obtener más información.
# yum install WALinuxAgent -y # systemctl enable waagent
Edite las siguientes líneas en el archivo
/etc/waagent.conf
para configurar el espacio de intercambio para las máquinas virtuales provisionadas. Configure el espacio de intercambio para lo que sea apropiado para sus máquinas virtuales aprovisionadas.Provisioning.DeleteRootPassword=n ResourceDisk.Filesystem=ext4 ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048
Preparando la provisión
Desregistre la VM de Red Hat Subscription Manager.
# subscription-manager unregister
Prepara la VM para el aprovisionamiento de Azure limpiando los detalles de aprovisionamiento existentes. Azure vuelve a aprovisionar la VM en Azure. Este comando genera advertencias, lo cual es de esperar.
# waagent -force -deprovision
Limpia el historial del shell y apaga la VM.
# export HISTSIZE=0 # poweroff
2.6. Creación de una aplicación de Azure Active Directory
Complete el siguiente procedimiento para crear una aplicación Azure AD. La aplicación Azure AD autoriza y automatiza el acceso a las operaciones de HA para todos los nodos del clúster.
Requisitos previos
Instale la interfaz de línea de comandos (CLI) de Azure.
Procedimiento
- Asegúrese de que es administrador o propietario de la suscripción de Microsoft Azure. Necesita esta autorización para crear una aplicación de Azure AD.
Inicie sesión en su cuenta de Azure.
$ az login
Introduzca el siguiente comando para crear la aplicación Azure AD. Para utilizar su propia contraseña, añada la opción
--password
al comando. Asegúrese de crear una contraseña fuerte.$ az ad sp create-for-rbac --name FencingApplicationName --role owner --scopes "/subscriptions/SubscriptionID/resourceGroups/MyResourseGroup"
Ejemplo:
[clouduser@localhost ~] $ az ad sp create-for-rbac --name FencingApp --role owner --scopes "/subscriptions/2586c64b-xxxxxx-xxxxxxx-xxxxxxx/resourceGroups/azrhelclirsgrp" Retrying role assignment creation: 1/36 Retrying role assignment creation: 2/36 Retrying role assignment creation: 3/36 { "appId": "1a3dfe06-df55-42ad-937b-326d1c211739", "displayName": "FencingApp", "name": "http://FencingApp", "password": "43a603f0-64bb-482e-800d-402efe5f3d47", "tenant": "77ecefb6-xxxxxxxxxx-xxxxxxx-757a69cb9485" }
Guarde la siguiente información antes de continuar. Necesita esta información para configurar el agente de cercado.
- ID de aplicación de Azure AD
- Contraseña de la aplicación Azure AD
- Identificación del inquilino
- ID de suscripción a Microsoft Azure
Recursos adicionales
2.7. Convertir la imagen a un formato VHD fijo
Todas las imágenes de Microsoft Azure VM deben estar en un formato fijo VHD
. La imagen debe estar alineada en un límite de 1 MB antes de ser convertida a VHD. Esta sección describe cómo convertir la imagen de qcow2
a un formato fijo de VHD
y alinear la imagen, si es necesario. Una vez que haya convertido la imagen, puede subirla a Azure.
Procedimiento
Convierte la imagen de
qcow2
al formatoraw
.$ qemu-img convert -f qcow2 -O raw <image-name>.qcow2 <image-name>.raw
Cree un script de shell con el contenido que se indica a continuación.
#!/bin/bash MB=$((1024 * 1024)) size=$(qemu-img info -f raw --output json "$1" | gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}') rounded_size=$((($size/$MB + 1) * $MB)) if [ $(($size % $MB)) -eq 0 ] then echo "Your image is already aligned. You do not need to resize." exit 1 fi echo "rounded size = $rounded_size" export rounded_size
Ejecute el script. Este ejemplo utiliza el nombre
align.sh
.$ sh align.sh <image-xxx>.raw
- Si aparece el mensaje "Your image is already aligned. You do not need to resize.", continúe con el siguiente paso.
- Si aparece un valor, su imagen no está alineada.
Utilice el siguiente comando para convertir el archivo a un formato fijo
VHD
.The sample uses qemu-img version 2.12.0.
$ qemu-img convert -f raw -o subformat=fixed,force_size -O vpc <image-xxx>.raw <image.xxx>.vhd
Una vez convertido, el archivo
VHD
está listo para subir a Azure.
Aligning the image
Complete los siguientes pasos sólo si el archivo raw
no está alineado.
Cambie el tamaño del archivo
raw
utilizando el valor redondeado que se muestra al ejecutar el script de verificación.$ qemu-img resize -f raw <image-xxx>.raw <rounded-value>
Convierte el archivo de imagen
raw
a un formatoVHD
.The sample uses qemu-img version 2.12.0.
$ qemu-img convert -f raw -o subformat=fixed,force_size -O vpc <image-xxx>.raw <image.xxx>.vhd
Una vez convertido, el archivo
VHD
está listo para subir a Azure.
2.8. Carga y creación de una imagen de Azure
Complete los siguientes pasos para cargar el archivo VHD
en su contenedor y crear una imagen personalizada de Azure.
La cadena de conexión de almacenamiento exportada no persiste después de un reinicio del sistema. Si alguno de los comandos de los siguientes pasos falla, exporte de nuevo la cadena de conexión.
Procedimiento
Suba el archivo
VHD
al contenedor de almacenamiento. Puede tardar varios minutos. Para obtener una lista de contenedores de almacenamiento, introduzca el comandoaz storage container list
.$ az storage blob upload --account-name <storage-account-name> --container-name <container-name> --type page --file <path-to-vhd> --name <image-name>.vhd
Ejemplo:
[clouduser@localhost]$ az storage blob upload --account-name azrhelclistact --container-name azrhelclistcont --type page --file rhel-image-8.vhd --name rhel-image-8.vhd Percent complete: %100.0
Obtenga la URL del archivo
VHD
cargado para utilizarlo en el siguiente paso.$ az storage blob url -c <nombre-contenedor> -n <nombre-imagen>.vhd
Ejemplo:
[clouduser@localhost]$ az storage blob url -c azrhelclistcont -n rhel-image-8.vhd "https://azrhelclistact.blob.core.windows.net/azrhelclistcont/rhel-image-8.vhd"
Cree la imagen personalizada de Azure.
$ az image create -n <image-name> -g <resource-group> -l <azure-region> --source <URL> --os-type linux
NotaLa generación de hipervisor por defecto de la VM es V1. Puede especificar opcionalmente una generación de hipervisor V2 incluyendo la opción
--hyper-v-generation V2
. Las VM de generación 2 utilizan una arquitectura de arranque basada en UEFI. Consulte Soporte para máquinas virtuales de generación 2 en Azure para obtener información sobre las máquinas virtuales de generación 2.El comando puede devolver el error "Sólo se pueden importar blobs formateados como VHDs" Este error puede significar que la imagen no fue alineada al límite más cercano de 1 MB antes de ser convertida a
VHD
.Ejemplo:
[clouduser@localhost]$ az image create -n rhel8 -g azrhelclirsgrp2 -l southcentralus --source https://azrhelclistact.blob.core.windows.net/azrhelclistcont/rhel-image-8.vhd --os-type linux
2.9. Instalación de paquetes y agentes de Red Hat HA
Complete los siguientes pasos en todos los nodos.
Procedimiento
Inicie una sesión de terminal SSH y conéctese a la máquina virtual utilizando el nombre del administrador y la dirección IP pública.
$ ssh administrator@PublicIP
Para obtener la dirección IP pública de una VM de Azure, abra las propiedades de la VM en el Portal de Azure o introduzca el siguiente comando de la CLI de Azure.
$ az vm list -g <grupo de recursos> -d --tabla de salida
Ejemplo:
[clouduser@localhost ~] $ az vm list -g azrhelclirsgrp -d --output table Name ResourceGroup PowerState PublicIps Location ------ ---------------------- -------------- ------------- -------------- node01 azrhelclirsgrp VM running 192.98.152.251 southcentralus
Registre la VM con Red Hat.
$ sudo -i # subscription-manager register --auto-attach
NotaSi el comando
--auto-attach
falla, registre manualmente la VM en su suscripción.Desactivar todos los repositorios.
# subscription-manager repos --disable=*
Habilite los repositorios de RHEL 8 Server y RHEL 8 Server HA.
# subscription-manager repos --enable=rhel-8-server-rpms # subscription-manager repos --enable=rhel-ha-for-rhel-8-server-rpms
Actualice todos los paquetes.
# yum update -y
Instale los paquetes de software Red Hat High Availability Add-On, junto con todos los agentes de cercado disponibles en el canal de Alta Disponibilidad.
# yum install pcs pacemaker fence-agents-azure-arm
El usuario
hacluster
fue creado durante la instalación de pcs y pacemaker en el paso anterior. Cree una contraseña parahacluster
en todos los nodos del clúster. Utilice la misma contraseña para todos los nodos.# passwd hacluster
Añada el servicio
high availability
al cortafuegos de RHEL si está instaladofirewalld.service
.# firewall-cmd --permanent --add-service=high-availability # firewall-cmd --reload
Inicie el servicio
pcs
y permita que se inicie en el arranque.# systemctl start pcsd.service # systemctl enable pcsd.service Created symlink from /etc/systemd/system/multi-user.target.wants/pcsd.service to /usr/lib/systemd/system/pcsd.service.
Paso de verificación
Asegúrese de que el servicio pcs
está funcionando.
# systemctl status pcsd.service pcsd.service - PCS GUI and remote configuration interface Loaded: loaded (/usr/lib/systemd/system/pcsd.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2018-02-23 11:00:58 EST; 1min 23s ago Docs: man:pcsd(8) man:pcs(8) Main PID: 46235 (pcsd) CGroup: /system.slice/pcsd.service └─46235 /usr/bin/ruby /usr/lib/pcsd/pcsd > /dev/null &
2.10. Creación de un clúster
Complete los siguientes pasos para crear el cluster de nodos.
Procedimiento
En uno de los nodos, introduzca el siguiente comando para autenticar al usuario pcs
hacluster
. En el comando, especifique el nombre de cada nodo del clúster.# pcs host auth hostname1 hostname2 hostname3 Username: hacluster Password: hostname1: Authorized hostname2: Authorized hostname3: Authorized
Ejemplo:
[root@node01 clouduser]# pcs host auth node01 node02 node03 Username: hacluster Password: node01: Authorized node02: Authorized node03: Authorized
Crea el clúster.
# pcs cluster setup cluster-name hostname1 hostname2 hostname3
Ejemplo:
[root@node01 clouduser]# pcs cluster setup --name newcluster node01 node02 node03 ...omitted Synchronizing pcsd certificates on nodes node01, node02, node03... node02: Success node03: Success node01: Success Restarting pcsd on the nodes in order to reload the certificates... node02: Success node03: Success node01: Success
Pasos de verificación
Habilitar el clúster.
root@node01 clouduser]# pcs cluster enable --all
Poner en marcha el clúster.
[root@node01 clouduser]# pcs cluster start --all
Ejemplo:
[root@node01 clouduser]# pcs cluster enable --all node02: Cluster Enabled node03: Cluster Enabled node01: Cluster Enabled [root@node01 clouduser]# pcs cluster start --all node02: Starting Cluster... node03: Starting Cluster... node01: Starting Cluster...
2.11. Visión general de la esgrima
Si la comunicación con un solo nodo del clúster falla, los demás nodos del clúster deben ser capaces de restringir o liberar el acceso a los recursos a los que el nodo del clúster que ha fallado pueda tener acceso. Esto no puede lograrse contactando con el propio nodo del clúster, ya que éste puede no responder. En su lugar, debe proporcionar un método externo, que se llama fencing con un agente de fencing.
Un nodo que no responde puede seguir accediendo a los datos. La única manera de estar seguro de que sus datos están a salvo es cercar el nodo utilizando STONITH. STONITH es un acrónimo de "Shoot The Other Node In The Head" (Disparar al otro nodo en la cabeza) y protege sus datos de la corrupción de nodos deshonestos o del acceso concurrente. Utilizando STONITH, puede estar seguro de que un nodo está realmente desconectado antes de permitir que se acceda a los datos desde otro nodo.
Recursos adicionales
2.12. Creación de un dispositivo de esgrima
Complete los siguientes pasos para configurar el cercado. Complete estos comandos desde cualquier nodo del clúster
Requisitos previos
Es necesario establecer la propiedad del clúster stonith-enabled
en true
.
Procedimiento
Identifique el nombre del nodo Azure para cada VM RHEL. Utilice los nombres de nodo de Azure para configurar el dispositivo de valla.
fence_azure_arm -l AD-Application-ID -p AD-Password --resourceGroup MyResourceGroup --tenantId Tenant-ID --subscriptionId Subscription-ID -o list
Ejemplo:
[root@node01 clouduser]# fence_azure_arm -l e04a6a49-9f00-xxxx-xxxx-a8bdda4af447 -p z/a05AwCN0IzAjVwXXXXXXXEWIoeVp0xg7QT//JE= --resourceGroup azrhelclirsgrp --tenantId 77ecefb6-cff0-XXXX-XXXX-757XXXX9485 --subscriptionId XXXXXXXX-38b4-4527-XXXX-012d49dfc02c -o list node01, node02, node03,
Vea las opciones del agente Azure ARM STONITH.
pcs stonith describe fence_azure_arm
Ejemplo:
# pass:quotes[
pcs stonith describe fence_apc
] Stonith options: password: Authentication key password_script: Script to run to retrieve passwordAvisoPara los agentes de la valla que proporcionan una opción de método, no especifique un valor de ciclo, ya que no es compatible y puede causar la corrupción de datos.
Algunos dispositivos de cercado sólo pueden cercar un único nodo, mientras que otros dispositivos pueden cercar varios nodos. Los parámetros que se especifican al crear un dispositivo de vallado dependen de lo que el dispositivo de vallado admita y requiera.
Puede utilizar el parámetro
pcmk_host_list
al crear un dispositivo de cercado para especificar todas las máquinas que están controladas por ese dispositivo de cercado.Puede utilizar el parámetro
pcmk_host_map
al crear un dispositivo de vallado para asignar nombres de host a las especificaciones que comprende el dispositivo de vallado.Crea un dispositivo de vallas.
# pcs stonith create clusterfence fence_azure_arm
Pruebe el agente de esgrima para uno de los otros nodos.
# pcs stonith fence azurenodename
Ejemplo:
[root@node01 clouduser]# pcs status Cluster name: newcluster Stack: corosync Current DC: node01 (version 1.1.18-11.el7-2b07d5c5a9) - partition with quorum Last updated: Fri Feb 23 11:44:35 2018 Last change: Fri Feb 23 11:21:01 2018 by root via cibadmin on node01 3 nodes configured 1 resource configured Online: [ node01 node03 ] OFFLINE: [ node02 ] Full list of resources: clusterfence (stonith:fence_azure_arm): Started node01 Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled
Inicie el nodo que fue cercado en el paso anterior.
# pcs cluster start hostname
Comprueba el estado para verificar que el nodo se ha iniciado.
# estado de las pcs
Ejemplo:
[root@node01 clouduser]# pcs status Cluster name: newcluster Stack: corosync Current DC: node01 (version 1.1.18-11.el7-2b07d5c5a9) - partition with quorum Last updated: Fri Feb 23 11:34:59 2018 Last change: Fri Feb 23 11:21:01 2018 by root via cibadmin on node01 3 nodes configured 1 resource configured Online: [ node01 node02 node03 ] Full list of resources: clusterfence (stonith:fence_azure_arm): Started node01 Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled
2.13. Creación de un equilibrador de carga interno de Azure
El equilibrador de carga interno de Azure elimina los nodos del clúster que no responden a las solicitudes de sondeo de salud.
Realice el siguiente procedimiento para crear un equilibrador de carga interno de Azure. Cada paso hace referencia a un procedimiento específico de Microsoft e incluye la configuración para personalizar el equilibrador de carga para HA.
Requisitos previos
Procedimiento
- Creeun equilibrador de carga básico. Seleccione Internal load balancer, el Basic SKU, y Dynamic para el tipo de asignación de direcciones IP.
- Creeun pool de direcciones back-end. Asocie el pool de backend al conjunto de disponibilidad creado al crear los recursos de Azure en HA. No establezca ninguna configuración de IP de red de destino.
- Cree una sonda de salud. Para la sonda de salud, seleccione TCP e introduzca el puerto 61000. Puede utilizar un número de puerto TCP que no interfiera con otro servicio. Para determinadas aplicaciones de productos de HA (por ejemplo, SAP HANA y SQL Server), es posible que tenga que trabajar con Microsoft para identificar el puerto correcto que debe utilizar.
- Creeuna regla de equilibrio de carga. Para crear la regla de balanceo de carga, los valores por defecto están pre-rellenados. Asegúrese de establecer Floating IP (direct server return) en Enabled.
2.14. Configuración del agente de recursos del equilibrador de carga
Después de crear la sonda de salud, debe configurar el agente de recursos load balancer
. Este agente de recursos ejecuta un servicio que responde a las solicitudes de sonda de salud del equilibrador de carga de Azure y elimina los nodos del clúster que no responden a las solicitudes.
Procedimiento
Instale los agentes de recursos de
nmap-ncat
en todos los nodos.# yum install nmap-ncat resource-agents
Realice los siguientes pasos en un solo nodo.
Cree los recursos y el grupo
pcs
. Utilice su FrontendIP del equilibrador de carga para la dirección IPaddr2.# pcs resource create resource-name IPaddr2 ip="10.0.0.7" --grupo cluster-resources-group
Configure el agente de recursos
load balancer
.# pcs resource create resource-loadbalancer-name azure-lb port=port-number --group cluster-resources-group
Paso de verificación
Ejecute pcs status
para ver los resultados.
[root@node01 clouduser]# pcs status
Ejemplo:
Cluster name: clusterfence01 Stack: corosync Current DC: node02 (version 1.1.16-12.el7_4.7-94ff4df) - partition with quorum Last updated: Tue Jan 30 12:42:35 2018 Last change: Tue Jan 30 12:26:42 2018 by root via cibadmin on node01 3 nodes configured 3 resources configured Online: [ node01 node02 node03 ] Full list of resources: clusterfence (stonith:fence_azure_arm): Started node01 Resource Group: g_azure vip_azure (ocf::heartbeat:IPaddr2): Started node02 lb_azure (ocf::heartbeat:azure-lb): Started node02 Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled
2.15. Configuración del almacenamiento en bloque compartido
Esta sección proporciona un procedimiento opcional para configurar el almacenamiento de bloques compartido para un clúster de alta disponibilidad de Red Hat con discos compartidos de Microsoft Azure. El procedimiento asume tres VMs de Azure (un cluster de tres nodos) con un disco compartido de 1 TB.
Este es un procedimiento de ejemplo independiente para configurar el almacenamiento en bloque. El procedimiento asume que aún no ha creado su clúster.
Requisitos previos
- Debe haber instalado la CLI de Azure en su sistema anfitrión y haber creado su(s) clave(s) SSH.
Debe haber creado su entorno de clúster en Azure, lo que incluye la creación de los siguientes recursos. Los enlaces son a la documentación de Microsoft Azure.
Procedimiento
Crear un volumen de bloques compartido mediante el comando Azure
az disk create
.$ az disk create -g <resource_group> -n <shared_block_volume_name> --size-gb <disk_size> --max-shares <number_vms> -l <location>
Por ejemplo, el siguiente comando crea un volumen de bloques compartido llamado
shared-block-volume.vhd
en el grupo de recursossharedblock
dentro de la zona de disponibilidad de Azurewestcentralus
.$ az disk create -g sharedblock-rg -n shared-block-volume.vhd --size-gb 1024 --max-shares 3 -l westcentralus { "creationData": { "createOption": "Empty", "galleryImageReference": null, "imageReference": null, "sourceResourceId": null, "sourceUniqueId": null, "sourceUri": null, "storageAccountId": null, "uploadSizeBytes": null }, "diskAccessId": null, "diskIopsReadOnly": null, "diskIopsReadWrite": 5000, "diskMbpsReadOnly": null, "diskMbpsReadWrite": 200, "diskSizeBytes": 1099511627776, "diskSizeGb": 1024, "diskState": "Unattached", "encryption": { "diskEncryptionSetId": null, "type": "EncryptionAtRestWithPlatformKey" }, "encryptionSettingsCollection": null, "hyperVgeneration": "V1", "id": "/subscriptions/12345678910-12345678910/resourceGroups/sharedblock-rg/providers/Microsoft.Compute/disks/shared-block-volume.vhd", "location": "westcentralus", "managedBy": null, "managedByExtended": null, "maxShares": 3, "name": "shared-block-volume.vhd", "networkAccessPolicy": "AllowAll", "osType": null, "provisioningState": "Succeeded", "resourceGroup": "sharedblock-rg", "shareInfo": null, "sku": { "name": "Premium_LRS", "tier": "Premium" }, "tags": {}, "timeCreated": "2020-08-27T15:36:56.263382+00:00", "type": "Microsoft.Compute/disks", "uniqueId": "cd8b0a25-6fbe-4779-9312-8d9cbb89b6f2", "zones": null }
Compruebe que ha creado el volumen de bloques compartido mediante el comando Azure
az disk show
.$ az disk show -g <grupo_de_recursos> -n <nombre_de_bloque_compartido>
Por ejemplo, el siguiente comando muestra los detalles del volumen de bloques compartido
shared-block-volume.vhd
dentro del grupo de recursossharedblock-rg
.$ az disk show -g sharedblock-rg -n shared-block-volume.vhd { "creationData": { "createOption": "Empty", "galleryImageReference": null, "imageReference": null, "sourceResourceId": null, "sourceUniqueId": null, "sourceUri": null, "storageAccountId": null, "uploadSizeBytes": null }, "diskAccessId": null, "diskIopsReadOnly": null, "diskIopsReadWrite": 5000, "diskMbpsReadOnly": null, "diskMbpsReadWrite": 200, "diskSizeBytes": 1099511627776, "diskSizeGb": 1024, "diskState": "Unattached", "encryption": { "diskEncryptionSetId": null, "type": "EncryptionAtRestWithPlatformKey" }, "encryptionSettingsCollection": null, "hyperVgeneration": "V1", "id": "/subscriptions/12345678910-12345678910/resourceGroups/sharedblock-rg/providers/Microsoft.Compute/disks/shared-block-volume.vhd", "location": "westcentralus", "managedBy": null, "managedByExtended": null, "maxShares": 3, "name": "shared-block-volume.vhd", "networkAccessPolicy": "AllowAll", "osType": null, "provisioningState": "Succeeded", "resourceGroup": "sharedblock-rg", "shareInfo": null, "sku": { "name": "Premium_LRS", "tier": "Premium" }, "tags": {}, "timeCreated": "2020-08-27T15:36:56.263382+00:00", "type": "Microsoft.Compute/disks", "uniqueId": "cd8b0a25-6fbe-4779-9312-8d9cbb89b6f2", "zones": null }
Crear tres interfaces de red con el comando Azure
az network nic create
. Ejecute el siguiente comando tres veces utilizando un<nic_name>
diferente para cada uno.az network nic create -g <resource_group> -n <nic_name> --subnet <subnet_name> --vnet-name <virtual_network> --location <location> --network-security-group <network_security_group> --private-ip-address-version IPv4
Por ejemplo, el siguiente comando crea una interfaz de red con el nombre
shareblock-nodea-vm-nic-protected
.$ az network nic create -g sharedblock-rg -n sharedblock-nodea-vm-nic-protected --subnet sharedblock-subnet-protected --vnet-name sharedblock-vn --location westcentralus --network-security-group sharedblock-nsg --private-ip-address-version IPv4
Cree tres máquinas virtuales y adjunte el volumen de bloques compartido mediante el comando Azure
az vm create
. Los valores de las opciones son los mismos para cada VM excepto que cada VM tiene su propio<vm_name>
,<new_vm_disk_name>
, y<nic_name>
.az vm create -n <nombre_del_móvil> -g <grupo_de_recursos> --attach-data-disks <nombre_del_volumen_de_bloques_compartidos> --data-disk-caching None --os-disk-caching ReadWrite --os-disk-name <new-vm-disk-name> --os-disk-size-gb <disk_size> --location <location> --size <virtual_machine_size> --image <image_name> --admin-username <vm_username> --authentication-type ssh --ssh-key-values <ssh_key> --nics <nic_name> --availability-set <availability_set> --ppg <proximity_placement_group>
Por ejemplo, el siguiente comando crea una VM llamada
sharedblock-nodea-vm
.$ az vm create -n sharedblock-nodea-vm -g sharedblock-rg --attach-data-disks shared-block-volume.vhd --data-disk-caching None --os-disk-caching ReadWrite --os-disk-name sharedblock-nodea-vm.vhd --os-disk-size-gb 64 --location westcentralus --size Standard_D2s_v3 --image /subscriptions/12345678910-12345678910/resourceGroups/sample-azureimagesgroupwestcentralus/providers/Microsoft.Compute/images/sample-azure-rhel-8.3.0-20200713.n.0.x86_64 --admin-username sharedblock-user --authentication-type ssh --ssh-key-values @sharedblock-key.pub --nics sharedblock-nodea-vm-nic-protected --availability-set sharedblock-as --ppg sharedblock-ppg { "fqdns": "", "id": "/subscriptions/12345678910-12345678910/resourceGroups/sharedblock-rg/providers/Microsoft.Compute/virtualMachines/sharedblock-nodea-vm", "location": "westcentralus", "macAddress": "00-22-48-5D-EE-FB", "powerState": "VM running", "privateIpAddress": "198.51.100.3", "publicIpAddress": "", "resourceGroup": "sharedblock-rg", "zones": "" }
Pasos de verificación
Para cada una de las máquinas virtuales de su clúster, verifique que el dispositivo de bloque está disponible utilizando el comando
ssh
con su máquina virtual<ip_address>
.# ssh <ip_address> "hostname ; lsblk -d | grep ' 1T '"
Por ejemplo, el siguiente comando enumera los detalles, incluyendo el nombre del host y el dispositivo de bloque para la IP de la VM
198.51.100.3
.# ssh 198.51.100.3 "hostname ; lsblk -d | grep ' 1T '" nodea sdb 8:16 0 1T 0 disk
Utilice el comando
ssh
para verificar que cada máquina virtual de su clúster utiliza el mismo disco compartido.# ssh <ip_address> "hostname ; lsblk -d | grep ' 1T ' | awk '{print \$1}' | xargs -i udevadm info --query=all --name=/dev/{} | grep '^E: ID_SERIAL='"
Por ejemplo, el siguiente comando enumera los detalles, incluyendo el nombre del host y el ID del volumen de disco compartido para la dirección IP de la instancia
198.51.100.3
.# ssh 198.51.100.3 "hostname ; lsblk -d | grep ' 1T ' | awk '{print \$1}' | xargs -i udevadm info --query=all --name=/dev/{} | grep '^E: ID_SERIAL='" nodea E: ID_SERIAL=3600224808dd8eb102f6ffc5822c41d89
Después de haber verificado que el disco compartido está conectado a cada VM, puede configurar el almacenamiento resistente para el cluster. Para obtener información sobre la configuración del almacenamiento resistente para un cluster de Alta Disponibilidad de Red Hat, consulte Configuración de un sistema de archivos GFS2 en un cluster. Para obtener información general sobre el sistema de archivos GFS2, consulte Configuración de sistemas de archivos GFS2.
Capítulo 3. Implantación de una imagen de Red Hat Enterprise Linux como instancia EC2 en Amazon Web Services
Tiene varias opciones para implementar una imagen de Red Hat Enterprise Linux (RHEL) 8 como una instancia EC2 en Amazon Web Services (AWS). Este capítulo discute sus opciones para elegir una imagen y enumera o se refiere a los requisitos del sistema para su sistema anfitrión y máquina virtual (VM). Este capítulo también proporciona procedimientos para crear una VM personalizada a partir de una imagen ISO, subirla a EC2 y lanzar una instancia EC2.
Aunque puede crear una VM personalizada a partir de una imagen ISO, Red Hat recomienda que utilice el producto Red Hat Image Builder para crear imágenes personalizadas para su uso en proveedores de nube específicos. Con Image Builder, puede crear y cargar una imagen de máquina de Amazon (AMI) en el formato ami
. Consulte Composición de una imagen de sistema RHEL personalizada para obtener más información.
Este capítulo hace referencia a la documentación de Amazon en varios lugares. Para muchos procedimientos, consulte la documentación de Amazon a la que se hace referencia para obtener más detalles.
Para obtener una lista de los productos de Red Hat que puede utilizar de forma segura en AWS, consulte Red Hat en Amazon Web Services.
Requisitos previos
- Regístrese para obtener una cuenta en el Portal del Cliente de Red Hat.
- Regístrese en AWS y configure sus recursos de AWS. Consulte Configuración con Amazon EC2 para obtener más información.
- Habilite sus suscripciones en el programa Red Hat Cloud Access. El programa Red Hat Cloud Access le permite trasladar sus suscripciones de Red Hat desde sistemas físicos o locales a AWS con el apoyo total de Red Hat.
Recursos adicionales
3.1. Opciones de imagen de Red Hat Enterprise Linux en AWS
La siguiente tabla enumera las opciones de imagen y señala las diferencias entre ellas.
Tabla 3.1. Opciones de imagen
Opción de imagen | Suscripciones | Ejemplo de escenario | Consideraciones |
---|---|---|---|
Elija implementar una imagen de Red Hat Gold. | Aproveche sus suscripciones existentes a Red Hat. | Habilite las suscripciones a través del programa Red Hat Cloud Access y, a continuación, elija una Red Hat Gold Image en AWS. | La suscripción incluye el coste del producto de Red Hat; el resto de los costes de las instancias se pagan a Amazon. Las imágenes Red Hat Gold se denominan imágenes "Cloud Access" porque aprovechan sus suscripciones existentes a Red Hat. Red Hat proporciona soporte directamente para las imágenes de Cloud Access. |
Elija desplegar una imagen personalizada que traslade a AWS. | Aproveche sus suscripciones existentes a Red Hat. | Habilite las suscripciones a través del programa Red Hat Cloud Access, cargue su imagen personalizada y adjunte sus suscripciones. | La suscripción incluye el coste del producto de Red Hat; el resto de los costes de las instancias se pagan a Amazon. Las imágenes personalizadas que traslada a AWS son imágenes de "Acceso a la nube" porque aprovecha sus suscripciones existentes a Red Hat. Red Hat proporciona soporte directamente para las imágenes de Cloud Access. |
Elija desplegar una imagen de Amazon existente que incluya RHEL. | Las imágenes de AWS EC2 incluyen un producto de Red Hat. | Elija una imagen de RHEL cuando lance una instancia en la consola de administración de AWS o elija una imagen de AWS Marketplace. | Usted paga a Amazon por hora en un modelo de pago por uso. Estas imágenes se denominan imágenes "a la carta". Amazon ofrece soporte para las imágenes bajo demanda. Red Hat proporciona las actualizaciones de las imágenes. AWS hace que las actualizaciones estén disponibles a través de Red Hat Update Infrastructure (RHUI). |
Puede crear una imagen personalizada para AWS utilizando Red Hat Image Builder. Consulte Composición de una imagen del sistema RHEL personalizada para obtener más información.
No se puede convertir una instancia bajo demanda en una instancia de Red Hat Cloud Access. Para cambiar de una imagen bajo demanda a una imagen de Red Hat Cloud Access de suscripción propia (BYOS), cree una nueva instancia de Red Hat Cloud Access y migre los datos de su instancia bajo demanda. Cancele su instancia bajo demanda después de migrar sus datos para evitar la doble facturación.
El resto de este capítulo incluye información y procedimientos relativos a las imágenes personalizadas.
3.2. Comprender las imágenes base
Esta sección incluye información sobre el uso de imágenes base preconfiguradas y sus ajustes de configuración.
3.2.1. Utilizar una imagen base personalizada
Para configurar manualmente una VM, se empieza con una imagen de VM base (de inicio). Una vez creada la imagen de la VM base, puede modificar los ajustes de configuración y añadir los paquetes que la VM necesita para funcionar en la nube. Puede realizar cambios de configuración adicionales para su aplicación específica después de cargar la imagen.
Recursos adicionales
3.2.2. Ajustes de configuración de la máquina virtual
Las VM de la nube deben tener los siguientes ajustes de configuración.
Tabla 3.2. Ajustes de configuración de la máquina virtual
Configuración | Recomendación |
---|---|
ssh | ssh debe estar habilitado para proporcionar acceso remoto a sus máquinas virtuales. |
dhcp | El adaptador virtual primario debe estar configurado para dhcp. |
3.3. Creación de una VM base a partir de una imagen ISO
Siga los procedimientos de esta sección para crear una imagen base a partir de una imagen ISO.
Requisitos previos
Habilite la virtualización para su máquina anfitriona Red Hat Enterprise Linux 8.
3.3.1. Descarga de la imagen ISO
Procedimiento
- Descargue la última imagen ISO de Red Hat Enterprise Linux desde el Portal del Cliente de Red Hat.
-
Mueve la imagen a
/var/lib/libvirt/images
.
3.3.2. Creación de una VM a partir de la imagen ISO
Procedimiento
- Asegúrese de que ha habilitado su máquina anfitriona para la virtualización. Consulte Activación de la virtualización en RHEL 8 para obtener información y procedimientos.
Cree e inicie una VM básica de Red Hat Enterprise Linux. Consulte Creación de máquinas virtuales para obtener instrucciones.
Si utiliza la línea de comandos para crear su VM, asegúrese de configurar la memoria y las CPUs por defecto a la capacidad que desea para la VM. Establezca su interfaz de red virtual en virtio.
A continuación, un ejemplo básico de línea de comandos.
virt-install --name isotest --memory 2048 --vcpus 2 --disk size=8,bus=virtio --location rhel-8.0-x86_64-dvd.iso --os-variant=rhel8.0
Si utiliza la consola web para crear su VM, siga el procedimiento en Creación de máquinas virtuales utilizando la consola web, con estas advertencias:
- No compruebe Immediately Start VM.
- Cambie su Memory y Storage Size a su configuración preferida.
- Antes de comenzar la instalación, asegúrese de haber cambiado Model en Virtual Network Interface Settings a virtio y cambie su vCPUs a la configuración de capacidad que desee para la VM.
3.3.3. Completar la instalación de RHEL
Realice los siguientes pasos para completar la instalación y para habilitar el acceso de root una vez que se inicie la VM.
Procedimiento
- Elija el idioma que desea utilizar durante el proceso de instalación.
En la vista Installation Summary:
- Haga clic en Software Selection y marque Minimal Install.
- Haga clic en Done.
Haga clic en Installation Destination y marque Custom en Storage Configuration.
-
Verifique al menos 500 MB para
/boot
. Puede utilizar el espacio restante para la raíz/
. - Se recomiendan las particiones estándar, pero se puede utilizar Logical Volume Management (LVM).
- Puedes usar xfs, ext4 o ext3 para el sistema de archivos.
- Haga clic en Done cuando haya terminado con los cambios.
-
Verifique al menos 500 MB para
- Haga clic en Begin Installation.
- Establezca un Root Password. Cree otros usuarios según corresponda.
-
Reinicie la máquina virtual e inicie sesión como
root
una vez que la instalación se haya completado. Configurar la imagen.
NotaAsegúrese de que el paquete
cloud-init
está instalado y habilitado.Important: This step is only for VMs you intend to upload to AWS.
Para las máquinas virtuales x86, instale los controladores
nvme
,xen-netfront
yxen-blkfront
.# dracut -f --add-drivers \ "nvme xen-netfront xen-blkfront"
Para las máquinas virtuales aarch64, instale el controlador
nvme
.# dracut -f --add-drivers \ "nvme"
La inclusión de estos controladores elimina la posibilidad de que se produzca un tiempo muerto de draconiano.
También puede añadir los controladores a
/etc/dracut.conf.d/
y luego introducirdracut -f
para sobrescribir el archivo existenteinitramfs
.
- Apague la máquina virtual.
3.4. Carga de la imagen de Red Hat Enterprise Linux en AWS
Sigue los procedimientos de esta sección para subir tu imagen a AWS.
3.4.1. Instalación de la CLI de AWS
Muchos de los procedimientos de este capítulo incluyen el uso de la CLI de AWS. Complete los siguientes pasos para instalar la CLI de AWS.
Requisitos previos
Necesita haber creado y tener acceso a un ID de clave de acceso de AWS y a una clave de acceso secreta de AWS. Consulte Configuración rápida de la CLI de AWS para obtener información e instrucciones.
Procedimiento
Instale Python 3 y la herramienta
pip
.# yum install python3 # yum install python3-pip
Instale las herramientas de línea de comandos de AWS con el comando
pip
.# pip3 install awscli
Ejecute el comando
aws --version
para verificar que ha instalado la CLI de AWS.$ aws --version aws-cli/1.16.182 Python/2.7.5 Linux/3.10.0-957.21.3.el7.x86_64 botocore/1.12.172
Configure el cliente de línea de comandos de AWS según sus datos de acceso a AWS.
$ aws configure AWS Access Key ID [None]: AWS Secret Access Key [None]: Default region name [None]: Default output format [None]:
Recursos adicionales
3.4.2. Creación de un bucket S3
La importación a AWS requiere un bucket de Amazon S3. Un cubo de Amazon S3 es un recurso de Amazon en el que se almacenan objetos. Como parte del proceso de carga de su imagen, debe crear un bucket de S3 y luego mover su imagen al bucket. Complete los siguientes pasos para crear un cubo.
Procedimiento
- Inicie la consola de Amazon S3.
- Haga clic en Create Bucket. Aparece el cuadro de diálogo Create Bucket.
En la vista Name and region:
- Introduzca un Bucket name.
- Introduzca un Region.
- Haga clic en Next.
- En la vista Configure options, seleccione las opciones deseadas y haga clic en Next.
- En la vista Set permissions, cambie o acepte las opciones por defecto y haga clic en Next.
- Revise la configuración de su cubo.
Haga clic en Create bucket.
NotaTambién puede utilizar la CLI de AWS para crear un cubo. Por ejemplo, el comando
aws s3 mb s3://my-new-bucket
crea un bucket de S3 denominadomy-new-bucket
. Consulte la Referencia de comandos de la CLI de AWS para obtener más información sobre el comandomb
.
Recursos adicionales
3.4.3. Creación del rol vmimport
Realice el siguiente procedimiento para crear el rol vmimport
, que es necesario para la importación de VM. Consulta el rol de servicio de importación de VM en la documentación de Amazon para obtener más información.
Procedimiento
Cree un archivo llamado
trust-policy.json
e incluya la siguiente política. Guarde el archivo en su sistema y anote su ubicación.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "vmie.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals":{ "sts:Externalid": "vmimport" } } } ] }
Utilice el comando
create role
para crear el rolvmimport
. Especifique la ruta completa a la ubicación del archivotrust-policy.json
. Añada el prefijofile://
a la ruta. A continuación se muestra un ejemplo.aws iam create-role --role-name vmimport --assume-role-policy-document file:///home/sample/ImportService/trust-policy.json
Crea un archivo llamado
role-policy.json
e incluye la siguiente política. Sustituyes3-bucket-name
por el nombre de tu bucket de S3.{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::s3-bucket-name", "arn:aws:s3:::s3-bucket-name/*" ] }, { "Effect":"Allow", "Action":[ "ec2:ModifySnapshotAttribute", "ec2:CopySnapshot", "ec2:RegisterImage", "ec2:Describe*" ], "Resource":"*" } ] }
Utilice el comando
put-role-policy
para adjuntar la política al rol que ha creado. Especifique la ruta completa del archivorole-policy.json
. A continuación se muestra un ejemplo.aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file:///home/sample/ImportService/role-policy.json
Recursos adicionales
3.4.4. Conversión y envío de la imagen a S3
Complete el siguiente procedimiento para convertir y enviar su imagen a S3. Los ejemplos son representativos; convierten una imagen formateada en el formato de archivo qcow2
al formato raw
. Amazon acepta imágenes en los formatos OVA
, VHD
, VHDX
, VMDK
y raw
. Consulte Cómo funciona la importación/exportación de VM para obtener más información sobre los formatos de imagen que acepta Amazon.
Procedimiento
Ejecute el comando
qemu-img
para convertir su imagen. A continuación se muestra un ejemplo.qemu-img convert -f qcow2 -O raw rhel-8.2-sample.qcow2 rhel-8.2-sample.raw
Empuje la imagen a S3.
aws s3 cp rhel-8.2-sample.raw s3://s3-bucket-name
NotaEste procedimiento puede tardar unos minutos. Una vez completado, puede comprobar que su imagen se ha cargado correctamente en su cubo de S3 utilizando la consola de AWS S3.
Recursos adicionales
3.4.5. Importar la imagen como una instantánea
Realice el siguiente procedimiento para importar una imagen como instantánea.
Procedimiento
Cree un archivo para especificar un cubo y una ruta para su imagen. Nombra el archivo
containers.json
. En el ejemplo que sigue, sustituyes3-bucket-name
por el nombre de tu cubo ys3-key
por tu clave. Puedes obtener la clave de la imagen mediante la consola de Amazon S3.{ "Description": "rhel-8.2-sample.raw", "Format": "raw", "UserBucket": { "S3Bucket": "s3-bucket-name", "S3Key": "s3-key" } }
Importe la imagen como una instantánea. Este ejemplo utiliza un archivo público de Amazon S3; puede utilizar la consola de Amazon S3 para cambiar la configuración de los permisos en su bucket.
aws ec2 import-snapshot --disk-container file://containers.json
El terminal muestra un mensaje como el siguiente. Observe el
ImportTaskID
dentro del mensaje.{ "SnapshotTaskDetail": { "Status": "active", "Format": "RAW", "DiskImageSize": 0.0, "UserBucket": { "S3Bucket": "s3-bucket-name", "S3Key": "rhel-8.2-sample.raw" }, "Progress": "3", "StatusMessage": "pending" }, "ImportTaskId": "import-snap-06cea01fa0f1166a8" }
Siga el progreso de la importación utilizando el comando
describe-import-snapshot-tasks
. Incluya el comandoImportTaskID
.aws ec2 describe-import-snapshot-tasks --import-task-ids import-snap-06cea01fa0f1166a8
El mensaje devuelto muestra el estado actual de la tarea. Cuando se completa,
Status
muestracompleted
. Dentro del estado, anote el ID de la instantánea.
3.4.6. Creación de una AMI a partir de la instantánea cargada
En EC2, debe elegir una imagen de máquina de Amazon (AMI) al lanzar una instancia. Realice el siguiente procedimiento para crear una AMI a partir de su instantánea cargada.
Procedimiento
- Vaya al panel de control de AWS EC2.
- En Elastic Block Store, seleccione Snapshots.
-
Busque su ID de instantánea (por ejemplo,
snap-0e718930bd72bcda0
). - Haga clic con el botón derecho del ratón en la instantánea y seleccione Create image.
- Nombra tu imagen.
- En Virtualization type, seleccione Hardware-assisted virtualization.
- Haga clic en Create. En la nota relativa a la creación de imágenes, hay un enlace a su imagen.
Haz clic en el enlace de la imagen. Su imagen aparece en Images>AMIs.
NotaComo alternativa, puede utilizar el comando de la CLI de AWS
register-image
para crear una AMI a partir de una instantánea. Consulte register-image para obtener más información. A continuación se muestra un ejemplo.$ aws ec2 register-image --name "myimagename" --description "myimagedescription" --architecture x86_64 --virtualization-type hvm --root-device-name "/dev/sda1" --block-device-mappings "{\"DeviceName\": \"/dev/sda1\",\"Ebs\": {\"SnapshotId\": \"snap-0ce7f009b69ab274d\"}}" --ena-support
Debe especificar el volumen de dispositivo raíz
/dev/sda1
como suroot-device-name
. Para obtener información conceptual sobre la asignación de dispositivos para AWS, consulte Ejemplo de asignación de dispositivos de bloque.
3.4.7. Lanzamiento de una instancia desde la AMI
Realice el siguiente procedimiento para lanzar y configurar una instancia desde la AMI.
Procedimiento
- En el panel de control de AWS EC2, seleccione Images y luego AMIs.
- Haga clic con el botón derecho del ratón en su imagen y seleccione Launch.
Elija un Instance Type que cumpla o supere los requisitos de su carga de trabajo.
Consulte Tipos de instancias de Amazon EC2 para obtener información sobre los tipos de instancias.
Haga clic en Next: Configure Instance Details.
- Introduzca la dirección Number of instances que desea crear.
- En Network, seleccione la VPC que creó al configurar su entorno de AWS. Seleccione una subred para la instancia o cree una nueva subred.
Seleccione Enable para la autoasignación de la IP pública.
NotaEstas son las opciones de configuración mínimas necesarias para crear una instancia básica. Revise las opciones adicionales en función de los requisitos de su aplicación.
- Haga clic en Next: Add Storage. Compruebe que el almacenamiento por defecto es suficiente.
Haga clic en Next: Add Tags.
NotaLas etiquetas pueden ayudarle a administrar sus recursos de AWS. Consulte Etiquetado de sus recursos de Amazon EC2 para obtener información sobre el etiquetado.
- Haga clic en Next: Configure Security Group. Seleccione el grupo de seguridad que creó al configurar su entorno AWS.
- Haga clic en Review and Launch. Verifique sus selecciones.
Haga clic en Launch. Se le pedirá que seleccione un par de claves existente o que cree un nuevo par de claves. Seleccione el par de claves que creó al configurar su entorno de AWS.
NotaComprueba que los permisos de tu clave privada son correctos. Utiliza las opciones del comando
chmod 400 <keyname>.pem
para cambiar los permisos, si es necesario.- Haga clic en Launch Instances.
Haga clic en View Instances. Puede nombrar la(s) instancia(s).
Ahora puede iniciar una sesión SSH en su(s) instancia(s) seleccionando una instancia y haciendo clic en Connect. Utilice el ejemplo proporcionado para A standalone SSH client.
NotaTambién puede lanzar una instancia utilizando la CLI de AWS. Consulte Lanzamiento, listado y finalización de instancias de Amazon EC2 en la documentación de Amazon para obtener más información.
3.4.8. Adjuntar suscripciones a Red Hat
Complete los siguientes pasos para adjuntar las suscripciones que haya habilitado previamente a través del programa Red Hat Cloud Access.
Requisitos previos
Debe haber activado sus suscripciones.
Procedimiento
Registre su sistema.
subscription-manager register --auto-attach
Adjunte sus suscripciones.
- Puede utilizar una clave de activación para adjuntar suscripciones. Consulte Creación de claves de activación del Portal del Cliente de Red Hat para obtener más información.
- Como alternativa, puede adjuntar manualmente una suscripción utilizando el ID del grupo de suscripciones (ID del grupo). Consulte Adjuntar y eliminar suscripciones a través de la línea de comandos.
Capítulo 4. Configuración de un clúster de alta disponibilidad de Red Hat en AWS
Este capítulo incluye información y procedimientos para configurar un cluster de Alta Disponibilidad (HA) de Red Hat en Amazon Web Services (AWS) utilizando instancias EC2 como nodos de cluster. Tenga en cuenta que tiene varias opciones para obtener las imágenes de Red Hat Enterprise Linux (RHEL) que utiliza para su cluster. Para obtener información sobre las opciones de imagen para AWS, consulte Opciones de imagen de Red Hat Enterprise Linux en AWS.
Este capítulo incluye los procedimientos necesarios para configurar su entorno para AWS. Una vez que haya configurado su entorno, puede crear y configurar instancias EC2.
Este capítulo también incluye procedimientos específicos para la creación de clústeres de HA, que transforman nodos individuales en un clúster de nodos de HA en AWS. Estos incluyen procedimientos para instalar los paquetes y agentes de alta disponibilidad en cada nodo del clúster, configurar el cercado e instalar los agentes de recursos de red de AWS.
El capítulo hace referencia a la documentación de Amazon en varios lugares. Para muchos procedimientos, consulte la documentación de Amazon a la que se hace referencia para obtener más información.
Requisitos previos
- Regístrese para obtener una cuenta en el Portal del Cliente de Red Hat.
- Regístrese en AWS y configure sus recursos de AWS. Consulte Configuración con Amazon EC2 para obtener más información.
- Habilite sus suscripciones en el programa Red Hat Cloud Access. El programa Red Hat Cloud Access le permite trasladar sus suscripciones de Red Hat desde sistemas físicos o locales a AWS con el apoyo total de Red Hat.
Recursos adicionales
4.1. Creación de la clave de acceso de AWS y de la clave de acceso secreta de AWS
Debe crear una clave de acceso de AWS y una clave de acceso secreta de AWS antes de instalar la CLI de AWS. Las API del agente de recursos y de fencing utilizan la clave de acceso de AWS y la clave de acceso secreta para conectarse a cada nodo del clúster.
Complete los siguientes pasos para crear estas claves.
Requisitos previos
Su cuenta de usuario IAM debe tener acceso programático. Consulte Configuración del entorno de AWS para obtener más información.
Procedimiento
- Inicie la consola de AWS.
- Haga clic en su ID de cuenta de AWS para que aparezca el menú desplegable y seleccione My Security Credentials.
- Haga clic en Users.
- Seleccione el usuario y abra la pantalla Summary.
- Haga clic en la pestaña Security credentials.
- Haga clic en Create access key.
-
Descargue el archivo
.csv
(o guarde ambas claves). Deberá introducir estas claves al crear el dispositivo de esgrima.
4.2. Instalación de la CLI de AWS
Muchos de los procedimientos de este capítulo incluyen el uso de la CLI de AWS. Complete los siguientes pasos para instalar la CLI de AWS.
Requisitos previos
Necesita haber creado y tener acceso a un ID de clave de acceso de AWS y a una clave de acceso secreta de AWS. Consulte Configuración rápida de la CLI de AWS para obtener información e instrucciones.
Procedimiento
Instale Python 3 y la herramienta
pip
.# yum install python3 # yum install python3-pip
Instale las herramientas de línea de comandos de AWS con el comando
pip
.# pip3 install awscli
Ejecute el comando
aws --version
para verificar que ha instalado la CLI de AWS.$ aws --version aws-cli/1.16.182 Python/2.7.5 Linux/3.10.0-957.21.3.el7.x86_64 botocore/1.12.172
Configure el cliente de línea de comandos de AWS según sus datos de acceso a AWS.
$ aws configure AWS Access Key ID [None]: AWS Secret Access Key [None]: Default region name [None]: Default output format [None]:
Recursos adicionales
4.3. Creación de una instancia EC2 en HA
Complete los siguientes pasos para crear las instancias que utilizará como nodos de su cluster de HA. Tenga en cuenta que tiene varias opciones para obtener las imágenes RHEL que utiliza para su cluster. Consulte Opciones de imagen de Red Hat Enterprise Linux en AWS para obtener información sobre las opciones de imagen para AWS.
Puedes crear y subir una imagen personalizada que utilices para tus nodos de clúster, o puedes elegir una imagen Gold (imagen Cloud Access) o una imagen bajo demanda.
Requisitos previos
Necesita haber configurado un entorno de AWS. Consulte Configuración con Amazon EC2 para obtener más información.
Procedimiento
- En el panel de control de AWS EC2, seleccione Images y luego AMIs.
- Haga clic con el botón derecho del ratón en su imagen y seleccione Launch.
- Elija un Instance Type que cumpla o supere los requisitos de su carga de trabajo. En función de su aplicación de HA, es posible que cada instancia deba tener mayor capacidad.
Consulte Tipos de instancias de Amazon EC2 para obtener información sobre los tipos de instancias.
Haga clic en Next: Configure Instance Details.
Introduzca la dirección Number of instances que desea crear para el clúster. Los ejemplos de este capítulo utilizan tres nodos de clúster.
NotaNo se lanza a un grupo de autoescalado.
- Para Network, seleccione la VPC que creó en Configurar el entorno de AWS. Seleccione la subred de la instancia para crear una nueva subred.
Seleccione Enable para la autoasignación de la IP pública. Estas son las selecciones mínimas que debe hacer para Configure Instance Details. Dependiendo de su aplicación específica de HA, es posible que tenga que hacer selecciones adicionales.
NotaEstas son las opciones de configuración mínimas necesarias para crear una instancia básica. Revise las opciones adicionales en función de los requisitos de su aplicación de HA.
- Haga clic en Next: Add Storage y compruebe que el almacenamiento por defecto es suficiente. No es necesario modificar esta configuración a menos que su aplicación de HA requiera otras opciones de almacenamiento.
Haga clic en Next: Add Tags.
NotaLas etiquetas pueden ayudarle a administrar sus recursos de AWS. Consulte Etiquetado de sus recursos de Amazon EC2 para obtener información sobre el etiquetado.
- Haga clic en Next: Configure Security Group. Seleccione el grupo de seguridad existente que creó en Configuración del entorno de AWS.
- Haga clic en Review and Launch y verifique sus selecciones.
- Haga clic en Launch. Se le pedirá que seleccione un par de claves existente o que cree un nuevo par de claves. Seleccione el par de claves que creó al configurar el entorno de AWS.
- Haga clic en Launch Instances.
Haga clic en View Instances. Puede nombrar la(s) instancia(s).
NotaComo alternativa, puede lanzar instancias utilizando la CLI de AWS. Consulte Lanzamiento, listado y finalización de instancias de Amazon EC2 en la documentación de Amazon para obtener más información.
4.4. Configuración de la clave privada
Complete las siguientes tareas de configuración para utilizar el archivo de clave privada SSH (.pem
) antes de que pueda ser utilizado en una sesión SSH.
Procedimiento
-
Mueva el archivo de claves del directorio
Downloads
a su directorioHome
o a su~/.ssh directory
. Introduzca el siguiente comando para cambiar los permisos del archivo de claves para que sólo el usuario root pueda leerlo.
# chmod 400 NombreClave.pem
4.5. Conexión a una instancia
Complete los siguientes pasos en todos los nodos para conectarse a una instancia.
Procedimiento
- Inicie la consola de AWS y seleccione la instancia EC2.
- Haga clic en Connect y seleccione A standalone SSH client.
-
Desde su sesión de terminal SSH, conéctese a la instancia utilizando el ejemplo de AWS proporcionado en la ventana emergente. Añada la ruta correcta a su archivo
KeyName.pem
si la ruta no se muestra en el ejemplo.
4.6. Instalación de los paquetes y agentes de alta disponibilidad
Complete los siguientes pasos en todos los nodos para instalar los paquetes y agentes de Alta Disponibilidad.
Procedimiento
Introduzca el siguiente comando para eliminar el cliente AWS Red Hat Update Infrastructure (RHUI). Dado que va a utilizar una suscripción a Red Hat Cloud Access, no debe utilizar AWS RHUI además de su suscripción.
$ sudo -i # yum -y remove rh-amazon-rhui-client*
Registre la VM con Red Hat.
# subscription-manager register --auto-attach
Desactivar todos los repositorios.
# subscription-manager repos --disable=*
Habilite los repositorios de RHEL 8 Server y RHEL 8 Server HA.
# subscription-manager repos --enable=rhel-8-server-rpms # subscription-manager repos --enable=rhel-ha-for-rhel-8-server-rpms
Actualice la instancia AWS de RHEL.
# yum update -y
Instale los paquetes de software Red Hat High Availability Add-On, junto con todos los agentes de cercado disponibles en el canal de Alta Disponibilidad.
# yum install pcs pacemaker fence-agents-aws
El usuario
hacluster
fue creado durante la instalación depcs
ypacemaker
en el paso anterior. Cree una contraseña parahacluster
en todos los nodos del clúster. Utilice la misma contraseña para todos los nodos.# passwd hacluster
Añada el servicio
high availability
al cortafuegos de RHEL si está instaladofirewalld.service
.# firewall-cmd --permanent --add-service=high-availability # firewall-cmd --reload
Inicie el servicio
pcs
y permita que se inicie en el arranque.# systemctl start pcsd.service # systemctl enable pcsd.service
-
Edite
/etc/hosts
y añada los nombres de los hosts RHEL y las direcciones IP internas. Consulte ¿Cómo debe configurarse el archivo /etc/hosts en los nodos del clúster RHEL? para obtener más detalles.
Paso de verificación
Asegúrese de que el servicio pcs
está funcionando.
# systemctl status pcsd.service pcsd.service - PCS GUI and remote configuration interface Loaded: loaded (/usr/lib/systemd/system/pcsd.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2018-03-01 14:53:28 UTC; 28min ago Docs: man:pcsd(8) man:pcs(8) Main PID: 5437 (pcsd) CGroup: /system.slice/pcsd.service └─5437 /usr/bin/ruby /usr/lib/pcsd/pcsd > /dev/null & Mar 01 14:53:27 ip-10-0-0-48.ec2.internal systemd[1]: Starting PCS GUI and remote configuration interface… Mar 01 14:53:28 ip-10-0-0-48.ec2.internal systemd[1]: Started PCS GUI and remote configuration interface.
4.7. Creación de un clúster
Complete los siguientes pasos para crear el cluster de nodos.
Procedimiento
En uno de los nodos, introduzca el siguiente comando para autenticar al usuario pcs
hacluster
. En el comando, especifique el nombre de cada nodo del clúster.# pcs host auth hostname1 hostname2 hostname3 Username: hacluster Password: hostname1: Authorized hostname2: Authorized hostname3: Authorized
Ejemplo:
[root@node01 clouduser]# pcs host auth node01 node02 node03 Username: hacluster Password: node01: Authorized node02: Authorized node03: Authorized
Crea el clúster.
# pcs cluster setup cluster-name hostname1 hostname2 hostname3
Ejemplo:
[root@node01 clouduser]# pcs cluster setup --name newcluster node01 node02 node03 ...omitted Synchronizing pcsd certificates on nodes node01, node02, node03... node02: Success node03: Success node01: Success Restarting pcsd on the nodes in order to reload the certificates... node02: Success node03: Success node01: Success
Pasos de verificación
Habilitar el clúster.
root@node01 clouduser]# pcs cluster enable --all
Poner en marcha el clúster.
[root@node01 clouduser]# pcs cluster start --all
Ejemplo:
[root@node01 clouduser]# pcs cluster enable --all node02: Cluster Enabled node03: Cluster Enabled node01: Cluster Enabled [root@node01 clouduser]# pcs cluster start --all node02: Starting Cluster... node03: Starting Cluster... node01: Starting Cluster...
4.8. Configuración de las vallas
Complete los siguientes pasos para configurar el cercado.
Procedimiento
Introduzca la siguiente consulta de metadatos de AWS para obtener el ID de instancia de cada nodo. Necesita estos IDs para configurar el dispositivo de la valla. Consulte Metadatos de la instancia y datos del usuario para obtener información adicional.
# echo $(curl -s http://169.254.169.254/latest/meta-data/instance-id)
Ejemplo:
root@ip-10-0-0-48 ~]# echo $(curl -s http://169.254.169.254/latest/meta-data/instance-id) i-07f1ac63af0ec0ac6
Introduzca el siguiente comando para configurar el dispositivo de valla. Utilice el comando
pcmk_host_map
para asignar el nombre del host RHEL al ID de la instancia. Utilice la clave de acceso de AWS y la clave de acceso secreta de AWS que configuró previamente.# pcs stonith create name fence_aws access_key=clave de acceso secret_key=secret-access-key region=region pcmk_host_map="rhel-hostname-1:Instance-ID-1;rhel-hostname-2:Instance-ID-2;rhel-hostname-3:Instance-ID-3" power_timeout=240 pcmk_reboot_timeout=480 pcmk_reboot_retries=4
Ejemplo:
root@ip-10-0-0-48 ~]# pcs stonith create clusterfence fence_aws access_key=AKIAI*******6MRMJA secret_key=a75EYIG4RVL3h*******K7koQ8dzaDyn5yoIZ/ region=us-east-1 pcmk_host_map="ip-10-0-0-48:i-07f1ac63af0ec0ac6;ip-10-0-0-46:i-063fc5fe93b4167b2;ip-10-0-0-58:i-08bd39eb03a6fd2c7" power_timeout=240 pcmk_reboot_timeout=480 pcmk_reboot_retries=4
Pruebe el agente de esgrima para uno de los otros nodos.
# pcs stonith fence awsnodename
NotaLa respuesta del comando puede tardar varios minutos en aparecer. Si observa la sesión de terminal activa para el nodo que se está cercando, verá que la conexión de terminal se termina inmediatamente después de introducir el comando fence.
Ejemplo:
[root@ip-10-0-0-48 ~]# pcs stonith fence ip-10-0-0-58 Node: ip-10-0-0-58 fenced
Pasos de verificación
Compruebe el estado para verificar que el nodo está cercado.
# estado de las pcs
Ejemplo:
[root@ip-10-0-0-48 ~]# pcs status Cluster name: newcluster Stack: corosync Current DC: ip-10-0-0-46 (version 1.1.18-11.el7-2b07d5c5a9) - partition with quorum Last updated: Fri Mar 2 19:55:41 2018 Last change: Fri Mar 2 19:24:59 2018 by root via cibadmin on ip-10-0-0-46 3 nodes configured 1 resource configured Online: [ ip-10-0-0-46 ip-10-0-0-48 ] OFFLINE: [ ip-10-0-0-58 ] Full list of resources: clusterfence (stonith:fence_aws): Started ip-10-0-0-46 Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled
Inicie el nodo que fue cercado en el paso anterior.
# pcs cluster start awshostname
Comprueba el estado para verificar que el nodo se ha iniciado.
# estado de las pcs
Ejemplo:
[root@ip-10-0-0-48 ~]# pcs status Cluster name: newcluster Stack: corosync Current DC: ip-10-0-0-46 (version 1.1.18-11.el7-2b07d5c5a9) - partition with quorum Last updated: Fri Mar 2 20:01:31 2018 Last change: Fri Mar 2 19:24:59 2018 by root via cibadmin on ip-10-0-0-48 3 nodes configured 1 resource configured Online: [ ip-10-0-0-46 ip-10-0-0-48 ip-10-0-0-58 ] Full list of resources: clusterfence (stonith:fence_aws): Started ip-10-0-0-46 Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled
4.9. Instalación de la CLI de AWS en los nodos del clúster
Anteriormente, ha instalado la CLI de AWS en su sistema anfitrión. Debe instalar la CLI de AWS en los nodos del clúster antes de configurar los agentes de recursos de red.
Complete el siguiente procedimiento en cada nodo del clúster.
Requisitos previos
Debe haber creado una AWS Access Key y una AWS Secret Access Key. Consulte Crear la clave de acceso de AWS y la clave de acceso secreta de AWS para obtener más información.
Procedimiento
- Realice el procedimiento de instalación de la CLI de AWS.
Introduzca el siguiente comando para verificar que la CLI de AWS está configurada correctamente. Deberían aparecer los ID de instancia y los nombres de instancia.
Ejemplo:
[root@ip-10-0-0-48 ~]# aws ec2 describe-instances --output text --query 'Reservations[*].Instances[*].[InstanceId,Tags[?Key==`Name`].Value]' i-07f1ac63af0ec0ac6 ip-10-0-0-48 i-063fc5fe93b4167b2 ip-10-0-0-46 i-08bd39eb03a6fd2c7 ip-10-0-0-58
4.10. Instalación de agentes de recursos de red
Para que las operaciones de HA funcionen, el clúster utiliza agentes de recursos de red de AWS para habilitar la funcionalidad de conmutación por error. Si un nodo no responde a una comprobación de heartbeat en un tiempo determinado, el nodo se bloquea y las operaciones pasan a un nodo adicional del clúster. Los agentes de recursos de red deben estar configurados para que esto funcione.
Añada los dos recursos al mismo grupo para aplicar las restricciones de order
y colocation
.
Create a secondary private IP resource and virtual IP resource
Complete el siguiente procedimiento para añadir una dirección IP privada secundaria y crear una IP virtual. Puede completar este procedimiento desde cualquier nodo del clúster.
Procedimiento
Introduzca el siguiente comando para ver la descripción del agente de recursos
AWS Secondary Private IP Address
(awsvip). Esto muestra las opciones y operaciones por defecto para este agente.# pcs resource describe awsvip
Introduzca el siguiente comando para crear la dirección IP privada secundaria utilizando una dirección IP privada no utilizada en el bloque
VPC CIDR
.# pcs resource create privip awsvip secondary_private_ip=Unused-IP-Address --group group-name
Ejemplo:
root@ip-10-0-0-48 ~]# pcs resource create privip awsvip secondary_private_ip=10.0.0.68 --group networking-group
Cree un recurso IP virtual. Se trata de una dirección IP de la VPC que se puede reasignar rápidamente del nodo vallado al nodo de conmutación por error, enmascarando el fallo del nodo vallado dentro de la subred.
# pcs resource create vip IPaddr2 ip=secondary-private-IP --group group-name
Ejemplo:
root@ip-10-0-0-48 ~]# pcs resource create vip IPaddr2 ip=10.0.0.68 --group networking-group
Paso de verificación
Introduzca el comando pcs status
para verificar que los recursos se están ejecutando.
# estado de las pcs
Ejemplo:
[root@ip-10-0-0-48 ~]# pcs status Cluster name: newcluster Stack: corosync Current DC: ip-10-0-0-46 (version 1.1.18-11.el7-2b07d5c5a9) - partition with quorum Last updated: Fri Mar 2 22:34:24 2018 Last change: Fri Mar 2 22:14:58 2018 by root via cibadmin on ip-10-0-0-46 3 nodes configured 3 resources configured Online: [ ip-10-0-0-46 ip-10-0-0-48 ip-10-0-0-58 ] Full list of resources: clusterfence (stonith:fence_aws): Started ip-10-0-0-46 Resource Group: networking-group privip (ocf::heartbeat:awsvip): Started ip-10-0-0-48 vip (ocf::heartbeat:IPaddr2): Started ip-10-0-0-58 Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled
Create an elastic IP address
Una dirección IP elástica es una dirección IP pública que puede ser rápidamente reasignada desde el nodo vallado al nodo de conmutación por error, enmascarando el fallo del nodo vallado.
Tenga en cuenta que esto es diferente del recurso IP virtual creado anteriormente. La dirección IP elástica se utiliza para las conexiones a Internet de cara al público en lugar de las conexiones de subred.
-
Añada los dos recursos al mismo grupo que se creó anteriormente para aplicar las restricciones de
order
ycolocation
. Introduzca el siguiente comando de la CLI de AWS para crear una dirección IP elástica.
[root@ip-10-0-0-48 ~]# aws ec2 allocate-address --domain vpc --output text eipalloc-4c4a2c45 vpc 35.169.153.122
Introduzca el siguiente comando para ver la descripción del agente de recursos AWS Secondary Elastic IP Address (awseip). Esto muestra las opciones y las operaciones predeterminadas para este agente.
# pcs resource describe awseip
Cree el recurso de dirección IP elástica secundaria utilizando la dirección IP asignada creada en el paso 1.
# pcs resource create elastic awseip elastic_ip=_Elastic-IP-Address_allocation_id=_Elastic-IP-Association-ID_ --group networking-group
Ejemplo:
# pcs resource create elastic awseip elastic_ip=35.169.153.122 allocation_id=eipalloc-4c4a2c45 --group networking-group
Paso de verificación
Introduzca el comando pcs status
para verificar que el recurso se está ejecutando.
# estado de las pcs
Ejemplo:
[root@ip-10-0-0-58 ~]# pcs status Cluster name: newcluster Stack: corosync Current DC: ip-10-0-0-58 (version 1.1.18-11.el7-2b07d5c5a9) - partition with quorum Last updated: Mon Mar 5 16:27:55 2018 Last change: Mon Mar 5 15:57:51 2018 by root via cibadmin on ip-10-0-0-46 3 nodes configured 4 resources configured Online: [ ip-10-0-0-46 ip-10-0-0-48 ip-10-0-0-58 ] Full list of resources: clusterfence (stonith:fence_aws): Started ip-10-0-0-46 Resource Group: networking-group privip (ocf::heartbeat:awsvip): Started ip-10-0-0-48 vip (ocf::heartbeat:IPaddr2): Started ip-10-0-0-48 elastic (ocf::heartbeat:awseip): Started ip-10-0-0-48 Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled
Test the elastic IP address
Introduzca los siguientes comandos para verificar que los recursos de IP virtual (awsvip) e IP elástica (awseip) están funcionando.
Procedimiento
Inicie una sesión SSH desde su estación de trabajo local a la dirección IP elástica creada anteriormente.
$ ssh -l ec2-user -i ~/.ssh/<Nombre-Clave>.pem elastic-IP
Ejemplo:
$ ssh -l ec2-user -i ~/.ssh/cluster-admin.pem 35.169.153.122
- Comprueba que el host al que te has conectado vía SSH es el host asociado al recurso elástico creado.
4.11. Configuración del almacenamiento en bloque compartido
Esta sección proporciona un procedimiento opcional para configurar el almacenamiento de bloques compartido para un cluster de Red Hat High Availability con volúmenes de Amazon EBS Multi-Attach. El procedimiento supone tres instancias (un clúster de tres nodos) con un disco compartido de 1 TB.
Procedimiento
Crea un volumen de bloques compartido con el comando AWS create-volume.
$ aws ec2 create-volume --availability-zone <availability_zone> --no-encrypted --size 1024 --volume-type io1 --iops 51200 --multi-attach-enabled
Por ejemplo, el siguiente comando crea un volumen en la zona de disponibilidad
us-east-1a
.$ aws ec2 create-volume --availability-zone us-east-1a --no-encrypted --size 1024 --volume-type io1 --iops 51200 --multi-attach-enabled { "AvailabilityZone": "us-east-1a", "CreateTime": "2020-08-27T19:16:42.000Z", "Encrypted": false, "Size": 1024, "SnapshotId": "", "State": "creating", "VolumeId": "vol-042a5652867304f09", "Iops": 51200, "Tags": [ ], "VolumeType": "io1" }
NotaNecesita el
VolumeId
en el siguiente paso.Para cada instancia de su clúster, adjunte un volumen de bloques compartido utilizando el comando AWS attach-volume. Utilice su
<instance_id>
y<volume_id>
.$ aws ec2 attach-volume --device /dev/xvdd --instance-id <instance_id> --volume-id <volume_id>
Por ejemplo, el siguiente comando adjunta un volumen de bloques compartido
vol-042a5652867304f09
ainstance i-0eb803361c2c887f2
.$ aws ec2 attach-volume --device /dev/xvdd --instance-id i-0eb803361c2c887f2 --volume-id vol-042a5652867304f09 { "AttachTime": "2020-08-27T19:26:16.086Z", "Device": "/dev/xvdd", "InstanceId": "i-0eb803361c2c887f2", "State": "attaching", "VolumeId": "vol-042a5652867304f09" }
Pasos de verificación
Para cada instancia de su cluster, verifique que el dispositivo de bloque está disponible utilizando el comando
ssh
con su instancia<ip_address>
.# ssh <ip_address> "hostname ; lsblk -d | grep ' 1T '"
Por ejemplo, el siguiente comando enumera los detalles, incluyendo el nombre de host y el dispositivo de bloque para la instancia IP
198.51.100.3
.# ssh 198.51.100.3 "hostname ; lsblk -d | grep ' 1T '" nodea nvme2n1 259:1 0 1T 0 disk
Utilice el comando
ssh
para verificar que cada instancia de su clúster utiliza el mismo disco compartido.# ssh <ip_address> "hostname ; lsblk -d | grep ' 1T ' | awk '{print \$1}' | xargs -i udevadm info --query=all --name=/dev/{} | grep '^E: ID_SERIAL='"
Por ejemplo, el siguiente comando enumera los detalles, incluyendo el nombre del host y el ID del volumen de disco compartido para la dirección IP de la instancia
198.51.100.3
.# ssh 198.51.100.3 "hostname ; lsblk -d | grep ' 1T ' | awk '{print \$1}' | xargs -i udevadm info --query=all --name=/dev/{} | grep '^E: ID_SERIAL='" nodea E: ID_SERIAL=Amazon Elastic Block Store_vol0fa5342e7aedf09f7
Después de verificar que el disco compartido está conectado a cada instancia, puede configurar el almacenamiento resistente para el cluster. Para obtener información sobre la configuración del almacenamiento resistente para un cluster de Red Hat High Availability, consulte Configuración de un sistema de archivos GFS2 en un cluster. Para obtener información general sobre el sistema de archivos GFS2, consulte Configuración de sistemas de archivos GFS2.
Capítulo 5. Implantación de una imagen de Red Hat Enterprise Linux como instancia de Google Compute Engine en Google Cloud Platform
Tiene varias opciones para implementar una imagen de Red Hat Enterprise Linux (RHEL) 8 como una instancia de Google Compute Engine (GCE) en Google Cloud Platform (GCP). Este capítulo discute sus opciones para elegir una imagen y enumera o se refiere a los requisitos del sistema para su sistema anfitrión y máquina virtual (VM). El capítulo proporciona procedimientos para crear una VM personalizada a partir de una imagen ISO, subirla a GCE y lanzar una instancia.
Este capítulo hace referencia a la documentación de Google en varios lugares. Para muchos procedimientos, consulte la documentación de Google a la que se hace referencia para obtener más detalles.
Para ver una lista de certificaciones de productos Red Hat para GCP, consulte Red Hat en Google Cloud Platform.
Requisitos previos
- Necesita una cuenta en el Portal del Cliente de Red Hat para completar los procedimientos de este capítulo.
- Cree una cuenta en GCP para acceder a la consola de Google Cloud Platform. Consulte Google Cloud para obtener más información.
- Habilite sus suscripciones de Red Hat a través del programa Red Hat Cloud Access. El programa Red Hat Cloud Access le permite trasladar sus suscripciones de Red Hat desde sistemas físicos o locales a GCP con el apoyo total de Red Hat.
Recursos adicionales
5.1. Opciones de imagen de Red Hat Enterprise Linux en GCP
La siguiente tabla enumera las opciones de imagen y las diferencias entre ellas.
Tabla 5.1. Opciones de imagen
Opción de imagen | Suscripciones | Ejemplo de escenario | Consideraciones |
---|---|---|---|
Elija desplegar una imagen personalizada que mueva a GCP. | Aproveche sus suscripciones existentes a Red Hat. | Habilite las suscripciones a través del programa Red Hat Cloud Access, cargue su imagen personalizada y adjunte sus suscripciones. | La suscripción incluye el coste del producto de Red Hat; usted paga todos los demás costes de la instancia. Las imágenes personalizadas que se trasladan a GCP se denominan imágenes de "Acceso a la nube" porque se aprovechan las suscripciones existentes de Red Hat. Red Hat proporciona soporte directamente para las imágenes de Cloud Access. |
Elija desplegar una imagen de GCP existente que incluya RHEL. | Las imágenes de GCP incluyen un producto de Red Hat. | Elija una imagen RHEL cuando lance una instancia en GCP Compute Engine o elija una imagen de Google Cloud Platform Marketplace. | Usted paga a GCP por hora en un modelo de pago por uso. Estas imágenes se denominan imágenes "a la carta". GCP ofrece soporte para las imágenes bajo demanda a través de un acuerdo de soporte. |
No se puede convertir una instancia bajo demanda en una instancia de Red Hat Cloud Access. Para cambiar de una imagen bajo demanda a una imagen de Red Hat Cloud Access de suscripción propia (BYOS), cree una nueva instancia de Red Hat Cloud Access y migre los datos de su instancia bajo demanda. Cancele su instancia bajo demanda después de migrar sus datos para evitar la doble facturación.
El resto de este capítulo incluye información y procedimientos relativos a las imágenes personalizadas.
5.2. Comprender las imágenes base
Esta sección incluye información sobre el uso de imágenes base preconfiguradas y sus ajustes de configuración.
5.2.1. Utilizar una imagen base personalizada
Para configurar manualmente una VM, se empieza con una imagen de VM base (de inicio). Una vez creada la imagen de la VM base, puede modificar los ajustes de configuración y añadir los paquetes que la VM necesita para funcionar en la nube. Puede realizar cambios de configuración adicionales para su aplicación específica después de cargar la imagen.
Recursos adicionales
5.2.2. Ajustes de configuración de la máquina virtual
Las VM de la nube deben tener los siguientes ajustes de configuración.
Tabla 5.2. Ajustes de configuración de la máquina virtual
Configuración | Recomendación |
---|---|
ssh | ssh debe estar habilitado para proporcionar acceso remoto a sus máquinas virtuales. |
dhcp | El adaptador virtual primario debe estar configurado para dhcp. |
5.3. Creación de una VM base a partir de una imagen ISO
Siga los procedimientos de esta sección para crear una imagen base a partir de una imagen ISO.
Requisitos previos
Habilite la virtualización para su máquina anfitriona Red Hat Enterprise Linux 8.
5.3.1. Descarga de la imagen ISO
Procedimiento
- Descargue la última imagen ISO de Red Hat Enterprise Linux desde el Portal del Cliente de Red Hat.
-
Mueve la imagen a
/var/lib/libvirt/images
.
5.3.2. Creación de una VM a partir de la imagen ISO
Procedimiento
- Asegúrese de que ha habilitado su máquina anfitriona para la virtualización. Consulte Activación de la virtualización en RHEL 8 para obtener información y procedimientos.
Cree e inicie una VM básica de Red Hat Enterprise Linux. Consulte Creación de máquinas virtuales para obtener instrucciones.
Si utiliza la línea de comandos para crear su VM, asegúrese de configurar la memoria y las CPUs por defecto a la capacidad que desea para la VM. Establezca su interfaz de red virtual en virtio.
A continuación, un ejemplo básico de línea de comandos.
virt-install --name isotest --memory 2048 --vcpus 2 --disk size=8,bus=virtio --location rhel-8.0-x86_64-dvd.iso --os-variant=rhel8.0
Si utiliza la consola web para crear su VM, siga el procedimiento en Creación de máquinas virtuales utilizando la consola web, con estas advertencias:
- No compruebe Immediately Start VM.
- Cambie su Memory y Storage Size a su configuración preferida.
- Antes de comenzar la instalación, asegúrese de haber cambiado Model en Virtual Network Interface Settings a virtio y cambie su vCPUs a la configuración de capacidad que desee para la VM.
5.3.3. Completar la instalación de RHEL
Realice los siguientes pasos para completar la instalación y para habilitar el acceso de root una vez que se inicie la VM.
Procedimiento
- Elija el idioma que desea utilizar durante el proceso de instalación.
En la vista Installation Summary:
- Haga clic en Software Selection y marque Minimal Install.
- Haga clic en Done.
Haga clic en Installation Destination y marque Custom en Storage Configuration.
-
Verifique al menos 500 MB para
/boot
. Puede utilizar el espacio restante para la raíz/
. - Se recomiendan las particiones estándar, pero se puede utilizar Logical Volume Management (LVM).
- Puedes usar xfs, ext4 o ext3 para el sistema de archivos.
- Haga clic en Done cuando haya terminado con los cambios.
-
Verifique al menos 500 MB para
- Haga clic en Begin Installation.
- Establezca un Root Password. Cree otros usuarios según corresponda.
-
Reinicie la máquina virtual e inicie sesión como
root
una vez que la instalación se haya completado. Configurar la imagen.
NotaAsegúrese de que el paquete
cloud-init
está instalado y habilitado.- Apague la máquina virtual.
5.4. Carga de la imagen RHEL en GCP
Siga los procedimientos de esta sección para cargar su imagen en GCP.
5.4.1. Creación de un nuevo proyecto en GCP
Complete los siguientes pasos para crear un nuevo proyecto en GCP.
Requisitos previos
Debe haber creado una cuenta en GCP. Si no lo ha hecho, consulte Google Cloud para obtener más información.
Procedimiento
- Inicie la consola de GCP.
- Haga clic en el menú desplegable a la derecha de Google Cloud Platform.
- En el menú emergente, haga clic en NEW PROJECT.
- En la ventana New Project, introduzca un nombre para su nuevo proyecto.
- Marque la casilla Organization. Haga clic en el menú desplegable para cambiar la organización, si es necesario.
- Confirme el Location de su organización o carpeta principal. Haga clic en Browse para buscar y cambiar este valor, si es necesario.
Haga clic en CREATE para crear su nuevo proyecto GCP.
NotaUna vez instalado el SDK de Google Cloud, puede utilizar el comando CLI
gcloud projects create
para crear un proyecto. A continuación se presenta un ejemplo sencillo.gcloud projects create mi-gcp-proyecto3 --nombre proyecto3
El ejemplo crea un proyecto con el ID de proyecto
my-gcp-project3
y el nombre de proyectoproject3
. Ver gcloud project create para más información.
Recursos adicionales
5.4.2. Instalación del SDK de Google Cloud
Complete los siguientes pasos para instalar el SDK de Google Cloud.
Requisitos previos
- Cree un proyecto en GCP si aún no lo ha hecho. Consulte Crear un nuevo proyecto en Google Cloud Platform para obtener más información.
- Asegúrese de que su sistema anfitrión incluye Python 2.7. Si no lo hace, instale Python 2.7.
Procedimiento
- Siga las instrucciones de GCP para descargar y extraer el archivo del SDK de Google Cloud. Consulte el documento de GCP Quickstart for Linux para obtener más detalles.
Siga las mismas instrucciones para inicializar el SDK de Google Cloud.
NotaUna vez que haya inicializado el SDK de Google Cloud, puede utilizar los comandos de la CLI de
gcloud
para realizar tareas y obtener información sobre su proyecto e instancias. Por ejemplo, puede mostrar información del proyecto con el comandogcloud compute project-info describe --project <project-name>
.
5.4.3. Creación de claves SSH para Google Compute Engine
Realice el siguiente procedimiento para generar y registrar claves SSH con GCE, de modo que pueda acceder directamente a una instancia utilizando su dirección IP pública.
Procedimiento
Utilice el comando
ssh-keygen
para generar un par de claves SSH para su uso con la CME.# ssh-keygen -t rsa -f ~/.ssh/google_compute_engine
- En la página del panel de control de la consola de GCP, haga clic en el menú Navigation situado a la izquierda de Google Cloud Console banner y seleccione Compute Engine y, a continuación, Metadata.
- Haga clic en SSH Keys y luego en Edit.
Introduzca la salida generada desde el archivo
~/.ssh/google_compute_engine.pub
y haga clic en Save.Ahora puede conectarse a su instancia usando SSH estándar.
# ssh -i ~/.ssh/google_compute_engine <nombre_de_usuario>@<instance_external_ip>
Puede ejecutar el comando gcloud compute config-ssh
para rellenar su archivo de configuración con alias para sus instancias. Los alias permiten conexiones SSH simples por nombre de instancia. Para obtener información sobre el comando gcloud compute config-ssh
, consulte gcloud compute config-ssh.
Recursos adicionales
5.4.4. Creación de un cubo de almacenamiento en GCP Storage
La importación a GCP requiere un cubo de almacenamiento de GCP. Complete los siguientes pasos para crear un cubo.
Procedimiento
Si aún no ha iniciado la sesión en GCP, hágalo con el siguiente comando.
# gcloud auth login
Crear un cubo de almacenamiento.
# gsutil mb gs://nombre_del_cubo
NotaTambién puedes utilizar la consola de Google Cloud para crear un cubo. Consulte Crear un cubo para obtener información.
Recursos adicionales
5.4.5. Conversión y carga de la imagen en el cubo de GCP
Complete el siguiente procedimiento para convertir y cargar su imagen en su cubo GCP. Los ejemplos son representativos; convierten una imagen de qcow2
al formato raw
y luego alquitranan esa imagen para cargarla.
Procedimiento
Ejecute el comando
qemu-img
para convertir su imagen. La imagen convertida debe tener el nombredisk.raw
.# qemu-img convert -f qcow2 -O raw rhel-8.2-sample.qcow2 disk.raw
Alquitrán la imagen.
# tar --format=oldgnu -Sczf disk.raw.tar.gz disk.raw
Sube la imagen al cubo que has creado anteriormente. La subida puede tardar unos minutos.
# gsutil cp disco.raw.tar.gz gs://nombre_del_cubo
- En la pantalla de inicio de Google Cloud Platform, haga clic en el icono del menú colapsado y seleccione Storage y luego Browser.
Haz clic en el nombre de tu cubo.
La imagen alquitranada aparece bajo el nombre de su cubo.
NotaTambién puedes subir tu imagen utilizando la página GCP Console. Para ello, haz clic en el nombre de tu cubo y luego en Upload files.
Recursos adicionales
5.4.6. Creación de una imagen a partir del objeto en el cubo del GCP
Realice el siguiente procedimiento para crear una imagen del objeto en su cubo de GCP.
Procedimiento
Ejecute el siguiente comando para crear una imagen para la CME. Especifique el nombre de la imagen que está creando, el nombre del cubo y el nombre de la imagen alquitranada.
# gcloud compute images create my-image-name --source-uri gs://my-bucket-name/disk.raw.tar.gz
NotaTambién puede utilizar la consola de Google Cloud para crear una imagen. Para obtener más información, consulte Creación, eliminación y eliminación de imágenes personalizadas.
Opcionalmente, busque la imagen en la Consola GCP.
- Haga clic en el menú Navigation situado a la izquierda del banner Google Cloud Console.
- Seleccione Compute Engine y luego Images.
Recursos adicionales
5.4.7. Creación de una instancia de Google Compute Engine a partir de una imagen
Realice los siguientes pasos para configurar una instancia VM de GCE mediante la consola de GCP.
El siguiente procedimiento proporciona instrucciones para crear una instancia VM básica utilizando la Consola GCP. Consulte Creación e inicio de una instancia VM para obtener más información sobre las instancias VM de GCE y sus opciones de configuración.
Procedimiento
- En la página del panel de control de la consola de GCP, haga clic en el menú Navigation situado a la izquierda de Google Cloud Console banner y seleccione Compute Engine y, a continuación, Images.
- Seleccione su imagen.
- Haga clic en Create Instance.
- En la página Create an instance, introduzca un Name para su instancia.
- Elija un Region y Zone.
- Elija un Machine configuration que cumpla o supere los requisitos de su carga de trabajo.
- Asegúrese de que Boot disk especifica el nombre de su imagen.
- Opcionalmente, en Firewall, seleccione Allow HTTP traffic o Allow HTTPS traffic.
Haga clic en Create.
NotaEstas son las opciones de configuración mínimas necesarias para crear una instancia básica. Revise las opciones adicionales en función de los requisitos de su aplicación.
- Encuentre su imagen en VM instances.
En el panel de control de la consola de GCP, haga clic en el menú Navigation situado a la izquierda de Google Cloud Console banner y seleccione Compute Engine y, a continuación, VM instances.
NotaComo alternativa, puede utilizar el comando CLI
gcloud compute instances create
para crear una instancia de VM GCE a partir de una imagen. A continuación se presenta un ejemplo sencillo.gcloud compute instances create myinstance3 --zone=us-central1-a --image test-iso2-image
El ejemplo crea una instancia VM llamada
myinstance3
en la zonaus-central1-a
basada en la imagen existentetest-iso2-image
. Ver gcloud compute instances create para más información.
5.4.8. Conectarse a su instancia
Realice el siguiente procedimiento para conectarse a su instancia GCE utilizando su dirección IP pública.
Procedimiento
Ejecute el siguiente comando para asegurarse de que su instancia se está ejecutando. El comando muestra información sobre su instancia GCE, incluyendo si la instancia se está ejecutando y, si es así, la dirección IP pública de la instancia en ejecución.
# lista de instancias de computación de gcloud
Conéctese a su instancia utilizando SSH estándar. El ejemplo utiliza la clave
google_compute_engine
creada anteriormente.# ssh -i ~/.ssh/google_compute_engine <nombre_de_usuario>@<instance_external_ip>
NotaGCP ofrece varias formas de acceder a su instancia mediante SSH. Consulte Conectarse a las instancias para obtener más información. También puede conectarse a su instancia utilizando la cuenta y la contraseña de root que estableció anteriormente.
Recursos adicionales
5.4.9. Adjuntar suscripciones a Red Hat
Complete los siguientes pasos para adjuntar las suscripciones que haya habilitado previamente a través del programa Red Hat Cloud Access.
Requisitos previos
Debe haber activado sus suscripciones.
Procedimiento
Registre su sistema.
subscription-manager register --auto-attach
Adjunte sus suscripciones.
- Puede utilizar una clave de activación para adjuntar suscripciones. Consulte Creación de claves de activación del Portal del Cliente de Red Hat para obtener más información.
- Como alternativa, puede adjuntar manualmente una suscripción utilizando el ID del grupo de suscripciones (ID del grupo). Consulte Adjuntar y eliminar suscripciones a través de la línea de comandos.
Capítulo 6. Configuración de Red Hat High Availability Cluster en Google Cloud Platform
Este capítulo incluye información y procedimientos para configurar un cluster de alta disponibilidad (HA) de Red Hat en Google Cloud Platform (GCP) utilizando instancias de máquinas virtuales (VM) de Google Compute Engine (GCE) como nodos de cluster.
Este capítulo incluye los procedimientos necesarios para configurar su entorno para GCP. Una vez que haya configurado su entorno, puede crear y configurar instancias de VM.
Este capítulo también incluye procedimientos específicos para la creación de clústeres de alta disponibilidad, que transforman nodos individuales en un clúster de nodos de alta disponibilidad en GCP. Estos procedimientos incluyen la instalación de los paquetes y agentes de alta disponibilidad en cada nodo del clúster, la configuración de las cercas y la instalación de agentes de recursos de red.
Requisitos previos
Debe estar inscrito en el programa Red Hat Cloud Access y tener suscripciones a RHEL sin utilizar. La suscripción adjunta debe incluir el acceso a los siguientes repositorios para cada instancia de GCP.
- Red Hat Enterprise Linux 8 Server: rhel-8-server-rpms/8Server/x86_64
- Red Hat Enterprise Linux 8 Server (Alta Disponibilidad): rhel-8-server-ha-rpms/8Server/x86_64
- Debe pertenecer a un proyecto activo de GCP y tener permisos suficientes para crear recursos en el proyecto.
- Su proyecto debe tener una cuenta de servicio que pertenezca a una instancia de VM y no a un usuario individual. Consulte Uso de la cuenta de servicio predeterminada de Compute Engine para obtener información sobre el uso de la cuenta de servicio predeterminada en lugar de crear una cuenta de servicio independiente.
Si usted o el administrador de su proyecto crean una cuenta de servicio personalizada, la cuenta de servicio debe ser configurada para los siguientes roles.
- Agente de rastreo en la nube
- Administración informática
- Administración de la red informática
- Usuario del almacén de datos en la nube
- Administración del registro
- Editor de control
- Monitorización del escritor de métricas
- Administrador de cuentas de servicio
- Administración del almacenamiento
Recursos adicionales
- Políticas de soporte para clusters de alta disponibilidad de RHEL - Protocolos de transporte
- Resumen de la red VPC
- Exploración de los componentes, conceptos y características de RHEL High Availability - Visión general de los protocolos de transporte
- Guía de diseño para clusters de alta disponibilidad de RHEL - Selección del protocolo de transporte
6.1. Paquetes de sistema necesarios
Los procedimientos en este capítulo asumen que usted está usando un sistema anfitrión que ejecuta Red Hat Enterprise Linux. Para completar con éxito los procedimientos, su sistema anfitrión debe tener instalados los siguientes paquetes.
Tabla 6.1. Paquetes del sistema
Paquete | Repositorio | Descripción |
---|---|---|
libvirt | rhel-8-for-x86_64-appstream-rpms | API, demonio y herramienta de gestión de código abierto para gestionar la virtualización de plataformas |
virt-install | rhel-8-for-x86_64-appstream-rpms | Una utilidad de línea de comandos para crear máquinas virtuales |
libguestfs | rhel-8-for-x86_64-appstream-rpms | Una biblioteca para acceder y modificar los sistemas de archivos de las máquinas virtuales |
libguestfs-tools | rhel-8-for-x86_64-appstream-rpms | Herramientas de administración del sistema para máquinas virtuales; incluye la utilidad guestfish |
6.2. Opciones de imagen de Red Hat Enterprise Linux en GCP
La siguiente tabla enumera las opciones de imagen y las diferencias entre ellas.
Tabla 6.2. Opciones de imagen
Opción de imagen | Suscripciones | Ejemplo de escenario | Consideraciones |
---|---|---|---|
Elija desplegar una imagen personalizada que mueva a GCP. | Aproveche sus suscripciones existentes a Red Hat. | Habilite las suscripciones a través del programa Red Hat Cloud Access, cargue su imagen personalizada y adjunte sus suscripciones. | La suscripción incluye el coste del producto de Red Hat; usted paga todos los demás costes de la instancia. Las imágenes personalizadas que se trasladan a GCP se denominan imágenes de "Acceso a la nube" porque se aprovechan las suscripciones existentes de Red Hat. Red Hat proporciona soporte directamente para las imágenes de Cloud Access. |
Elija desplegar una imagen de GCP existente que incluya RHEL. | Las imágenes de GCP incluyen un producto de Red Hat. | Elija una imagen RHEL cuando lance una instancia en GCP Compute Engine o elija una imagen de Google Cloud Platform Marketplace. | Usted paga a GCP por hora en un modelo de pago por uso. Estas imágenes se denominan imágenes "a la carta". GCP ofrece soporte para las imágenes bajo demanda a través de un acuerdo de soporte. |
No se puede convertir una instancia bajo demanda en una instancia de Red Hat Cloud Access. Para cambiar de una imagen bajo demanda a una imagen de Red Hat Cloud Access de suscripción propia (BYOS), cree una nueva instancia de Red Hat Cloud Access y migre los datos de su instancia bajo demanda. Cancele su instancia bajo demanda después de migrar sus datos para evitar la doble facturación.
El resto de este capítulo incluye información y procedimientos relativos a las imágenes personalizadas.
6.3. Instalación del SDK de Google Cloud
Complete los siguientes pasos para instalar el SDK de Google Cloud.
Requisitos previos
- Cree un proyecto en GCP si aún no lo ha hecho. Consulte Crear un nuevo proyecto en Google Cloud Platform para obtener más información.
- Asegúrese de que su sistema anfitrión incluye Python 2.7. Si no lo hace, instale Python 2.7.
Procedimiento
- Siga las instrucciones de GCP para descargar y extraer el archivo del SDK de Google Cloud. Consulte el documento de GCP Quickstart for Linux para obtener más detalles.
Siga las mismas instrucciones para inicializar el SDK de Google Cloud.
NotaUna vez que haya inicializado el SDK de Google Cloud, puede utilizar los comandos de la CLI de
gcloud
para realizar tareas y obtener información sobre su proyecto e instancias. Por ejemplo, puede mostrar información del proyecto con el comandogcloud compute project-info describe --project <project-name>
.
6.4. Creación de un cubo de imágenes de GCP
El siguiente documento incluye los requisitos mínimos para crear un cubo multirregional en su ubicación predeterminada.
Requisitos previos
Utilidad de almacenamiento de GCP (gsutil)
Procedimiento
Si aún no ha iniciado sesión en Google Cloud Platform, hágalo con el siguiente comando.
# gcloud auth login
Crear un cubo de almacenamiento.
$ gsutil mb gs://BucketName
Ejemplo:
$ gsutil mb gs://rhel-ha-bucket
Recursos adicionales
6.5. Creación de una red y subred de nube privada virtual personalizada
Complete los siguientes pasos para crear una red y una subred de nube privada virtual (VPC) personalizada.
Procedimiento
- Inicie la consola de GCP.
- Seleccione VPC networks en Networking en el panel de navegación izquierdo.
- Haga clic en Create VPC Network.
- Introduzca un nombre para la red VPC.
- En la página New subnet, cree un Custom subnet en la región en la que desea crear el clúster.
- Haga clic en Create.
6.6. Preparación e importación de una imagen base de GCP
Complete los siguientes pasos para preparar la imagen para GCP.
Procedimiento
Introduzca el siguiente comando para convertir el archivo. Las imágenes cargadas en GCP deben estar en formato
raw
y llamarsedisk.raw
.$ qemu-img convert -f qcow2 ImageName.qcow2 -O raw disk.raw
Introduzca el siguiente comando para comprimir el archivo
raw
. Las imágenes subidas a GCP deben estar comprimidas.$ tar -Sczf ImageName.tar.gz disco.raw
Importe la imagen comprimida al cubo creado anteriormente.
$ gsutil cp ImageName.tar.gz gs://BucketName
6.7. Creación y configuración de una instancia básica de GCP
Complete los siguientes pasos para crear y configurar una instancia de GCP que cumpla con los requisitos de funcionamiento y seguridad de GCP.
Procedimiento
Introduzca el siguiente comando para crear una imagen a partir del archivo comprimido en el cubo.
$ gcloud compute images create BaseImageName --source-uri gs://BucketName/BaseImageName.tar.gz
Ejemplo:
[admin@localhost ~] $ gcloud compute images create rhel-76-server --source-uri gs://user-rhelha/rhel-server-76.tar.gz Created [https://www.googleapis.com/compute/v1/projects/MyProject/global/images/rhel-server-76]. NAME PROJECT FAMILY DEPRECATED STATUS rhel-76-server rhel-ha-testing-on-gcp READY
Introduzca el siguiente comando para crear una instancia de plantilla a partir de la imagen. El tamaño mínimo requerido para una instancia RHEL base es n1-standard-2. Consulte gcloud compute instances create para conocer las opciones de configuración adicionales.
$ gcloud compute instances create BaseInstanceName --can-ip-forward --machine-type n1-standard-2 --image BaseImageName --service-account ServiceAccountEmail
Ejemplo:
[admin@localhost ~] $ gcloud compute instances create rhel-76-server-base-instance --can-ip-forward --machine-type n1-standard-2 --image rhel-76-server --service-account account@project-name-on-gcp.iam.gserviceaccount.com Created [https://www.googleapis.com/compute/v1/projects/rhel-ha-testing-on-gcp/zones/us-east1-b/instances/rhel-76-server-base-instance]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS rhel-76-server-base-instance us-east1-bn1-standard-2 10.10.10.3 192.227.54.211 RUNNING
Conéctese a la instancia con una sesión de terminal SSH.
$ ssh root@DirecciónIPpública
Actualice el software RHEL.
- Regístrese en Red Hat Subscription Manager (RHSM).
-
Habilitar un ID de grupo de suscripción (o utilizar el comando
--auto-attach
). Desactivar todos los repositorios.
# subscription-manager repos --disable=*
Habilitar el siguiente repositorio.
# subscription-manager repos --enable=rhel-8-server-rpms
Ejecute el comando
yum update
.# yum update -y
Instale el entorno invitado Linux de GCP en la instancia en ejecución (instalación in situ).
Consulte Instalar el entorno de invitados en el lugar para obtener instrucciones.
- Seleccione la opción CentOS/RHEL.
- Copie la secuencia de comandos y péguela en el símbolo del sistema para ejecutar la secuencia de comandos inmediatamente.
Realice los siguientes cambios de configuración en la instancia. Estos cambios se basan en las recomendaciones de GCP para las imágenes personalizadas. Consulte la lista de imágenes de gcloudcompute para obtener más información.
-
Edite el archivo
/etc/chrony.conf
y elimine todos los servidores NTP. Añade el siguiente servidor NTP.
metadata.google.internal iburst Servidor NTP de Google
Elimine cualquier regla de dispositivo de red persistente.
# rm -f /etc/udev/rules.d/70-persistent-net.rules # rm -f /etc/udev/rules.d/75-persistent-net-generator.rules
Configure el servicio de red para que se inicie automáticamente.
# chkconfig network on
Configure el
sshd service
para que se inicie automáticamente.# systemctl enable sshd # systemctl is-enabled sshd
Introduzca el siguiente comando para ajustar la zona horaria a UTC.
# ln -sf /usr/share/zoneinfo/UTC /etc/localtime
(Opcional) Edite el archivo
/etc/ssh/ssh_config
y añada las siguientes líneas al final del archivo. Esto mantiene su sesión SSH activa durante largos períodos de inactividad.# Server times out connections after several minutes of inactivity. # Keep alive ssh connections by sending a packet every 7 minutes. ServerAliveInterval 420
Edite el archivo
/etc/ssh/sshd_config
y haga los siguientes cambios, si es necesario. El ajuste ClientAliveInterval 420 es opcional; esto mantiene su sesión SSH activa durante largos períodos de inactividad.PermitRootLogin no PasswordAuthentication no AllowTcpForwarding yes X11Forwarding no PermitTunnel no # Compute times out connections after 10 minutes of inactivity. # Keep ssh connections alive by sending a packet every 7 minutes. ClientAliveInterval 420
-
Edite el archivo
Introduzca el siguiente comando para desactivar el acceso con contraseña. Edite el archivo
/etc/cloud/cloud.cfg
.ssh_pwauth from 1 to 0. ssh_pwauth: 0
ImportanteAnteriormente, usted habilitó el acceso con contraseña para permitir el acceso a la sesión SSH para configurar la instancia. Debe desactivar el acceso con contraseña. Todo el acceso a la sesión SSH debe ser sin contraseña.
Introduzca el siguiente comando para anular el registro de la instancia desde el gestor de suscripciones.
# subscription-manager unregister
Introduzca el siguiente comando para limpiar el historial del shell. Mantenga la instancia en funcionamiento para el siguiente procedimiento.
# export HISTSIZE=0
6.8. Creación de una imagen instantánea
Complete los siguientes pasos para conservar los ajustes de configuración de la instancia y crear una instantánea.
Procedimiento
En la instancia en ejecución, introduzca el siguiente comando para sincronizar los datos en el disco.
# sync
En su sistema anfitrión, introduzca el siguiente comando para crear la instantánea.
$ gcloud compute disks snapshot InstanceName --snapshot-names SnapshotName
En su sistema anfitrión, introduzca el siguiente comando para crear la imagen configurada a partir de la instantánea.
$ gcloud compute images create ConfiguredImageFromSnapshot --source-snapshot SnapshotName
Recursos adicionales
6.9. Creación de una instancia de plantilla de nodo de HA y de nodos de HA
Una vez que haya configurado una imagen desde la instantánea, puede crear una plantilla de nodo. Utilice esta plantilla para crear todos los nodos de HA. Complete los siguientes pasos para crear la plantilla y los nodos de HA.
Procedimiento
Introduzca el siguiente comando para crear una plantilla de instancia.
$ gcloud compute instance-templates create InstanceTemplateName --can-ip-forward --machine-type n1-standard-2 --image ConfiguredImageFromSnapshot --service-account ServiceAccountEmailAddress
Ejemplo:
[admin@localhost ~] $ gcloud compute instance-templates create rhel-81-instance-template --can-ip-forward --machine-type n1-standard-2 --image rhel-81-gcp-image --service-account account@project-name-on-gcp.iam.gserviceaccount.com Created [https://www.googleapis.com/compute/v1/projects/project-name-on-gcp/global/instanceTemplates/rhel-81-instance-template]. NAME MACHINE_TYPE PREEMPTIBLE CREATION_TIMESTAMP rhel-81-instance-template n1-standard-2 2018-07-25T11:09:30.506-07:00
Introduzca el siguiente comando para crear varios nodos en una zona.
# gcloud compute instances create NodeName01 NodeName02 --source-instance-template InstanceTemplateName --zone RegionZone --network=NetworkName --subnet=SubnetName
Ejemplo:
[admin@localhost ~] $ gcloud compute instances create rhel81-node-01 rhel81-node-02 rhel81-node-03 --source-instance-template rhel-81-instance-template --zone us-west1-b --network=projectVPC --subnet=range0 Created [https://www.googleapis.com/compute/v1/projects/project-name-on-gcp/zones/us-west1-b/instances/rhel81-node-01]. Created [https://www.googleapis.com/compute/v1/projects/project-name-on-gcp/zones/us-west1-b/instances/rhel81-node-02]. Created [https://www.googleapis.com/compute/v1/projects/project-name-on-gcp/zones/us-west1-b/instances/rhel81-node-03]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS rhel81-node-01 us-west1-b n1-standard-2 10.10.10.4 192.230.25.81 RUNNING rhel81-node-02 us-west1-b n1-standard-2 10.10.10.5 192.230.81.253 RUNNING rhel81-node-03 us-east1-b n1-standard-2 10.10.10.6 192.230.102.15 RUNNING
6.10. Instalación de paquetes y agentes de HA
Complete los siguientes pasos en todos los nodos.
Procedimiento
- En la consola de Google Cloud, seleccione Compute Engine y, a continuación, seleccione VM instances.
- Seleccione la instancia, haga clic en la flecha junto a SSH, y seleccione la opción de comando View gcloud.
- Pegue este comando en una línea de comandos para acceder sin contraseña a la instancia.
- Habilite el acceso a la cuenta sudo y regístrese en Red Hat Subscription Manager.
-
Habilitar un ID de grupo de suscripción (o utilizar el comando
--auto-attach
). Desactivar todos los repositorios.
# subscription-manager repos --disable=*
Habilite los siguientes repositorios.
# subscription-manager repos --enable=rhel-8-server-rpms # subscription-manager repos --enable=rhel-ha-for-rhel-8-server-rpms
Instale
pcs pacemaker
, los agentes de la valla y los agentes de los recursos.# yum install -y pcs pacemaker fence-agents-gce resource-agents-gcp
Actualice todos los paquetes.
# yum update -y
6.11. Configuración de los servicios de HA
Complete los siguientes pasos en todos los nodos para configurar los servicios de HA.
Procedimiento
El usuario
hacluster
fue creado durante la instalación depcs
ypacemaker
en el paso anterior. Cree una contraseña para el usuariohacluster
en todos los nodos del clúster. Utilice la misma contraseña para todos los nodos.# passwd hacluster
Si el servicio
firewalld
está instalado, introduzca el siguiente comando para añadir el servicio HA.# firewall-cmd --permanent --add-service=high-availability # firewall-cmd --reload
Introduzca el siguiente comando para iniciar el servicio
pcs
y permitir que se inicie en el arranque.# systemctl start pcsd.service # systemctl enable pcsd.service Created symlink from /etc/systemd/system/multi-user.target.wants/pcsd.service to /usr/lib/systemd/system/pcsd.service.
Pasos de verificación
Asegúrese de que el servicio
pcsd
está funcionando.# systemctl status pcsd.service pcsd.service - PCS GUI and remote configuration interface Loaded: loaded (/usr/lib/systemd/system/pcsd.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2018-06-25 19:21:42 UTC; 15s ago Docs: man:pcsd(8) man:pcs(8) Main PID: 5901 (pcsd) CGroup: /system.slice/pcsd.service └─5901 /usr/bin/ruby /usr/lib/pcsd/pcsd > /dev/null &
-
Edite el archivo
/etc/hosts
. Añade los nombres de host RHEL y las direcciones IP internas de todos los nodos.
Recursos adicionales
¿Cómo debe configurarse el archivo /etc/hosts en los nodos del cluster RHEL?
6.12. Creación de un clúster
Complete los siguientes pasos para crear el cluster de nodos.
Procedimiento
En uno de los nodos, introduzca el siguiente comando para autenticar al usuario pcs. Especifique el nombre de cada nodo del clúster en el comando.
# pcs host auth hostname1 hostname2 hostname3 Username: hacluster Password: hostname1: Authorized hostname2: Authorized hostname3: Authorized
Introduzca el siguiente comando para crear el cluster.
# pcs cluster setup cluster-name hostname1 hostname2 _hostname3-
Pasos de verificación
Ejecute el siguiente comando para permitir que los nodos se unan al clúster automáticamente cuando se inicie.
# pcs cluster enable --all
Introduzca el siguiente comando para iniciar el clúster.
# pcs cluster start --all
6.13. Creación de un dispositivo de esgrima
En la mayoría de las configuraciones por defecto, los nombres de las instancias de GCP y los nombres de los hosts de RHEL son idénticos.
Complete los siguientes pasos para crear un dispositivo de cercado.
Procedimiento
Introduzca el siguiente comando para obtener los nombres de las instancias de GCP. Tenga en cuenta que la salida también muestra el ID interno de la instancia.
# fence_gce --zone us-west1-b --project=rhel-ha-on-gcp -o list
Ejemplo:
Example: [root@rhel81-node-01 ~]# fence_gce --zone us-west1-b --project=rhel-ha-testing-on-gcp -o list 44358**********3181,InstanceName-3 40819**********6811,InstanceName-1 71736**********3341,InstanceName-2
Introduzca el siguiente comando para crear un dispositivo de valla.
# pcs stonith create _FenceDeviceName_ fence_gce zone=_Region-Zone_ project=_MyProject_
Paso de verificación
Compruebe que los dispositivos de la valla se han puesto en marcha.
# estado de las pcs
Ejemplo:
[root@rhel81-node-01 ~]# pcs status Cluster name: gcp-cluster Stack: corosync Current DC: rhel81-node-02 (version 1.1.18-11.el7_5.3-2b07d5c5a9) - partition with quorum Last updated: Fri Jul 27 12:53:25 2018 Last change: Fri Jul 27 12:51:43 2018 by root via cibadmin on rhel81-node-01 3 nodes configured 3 resources configured Online: [ rhel81-node-01 rhel81-node-02 rhel81-node-03 ] Full list of resources: us-west1-b-fence (stonith:fence_gce): Started rhel81-node-01 Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled
6.14. Configuración de la autorización del nodo GCP
Configure las herramientas del SDK de la nube para utilizar las credenciales de su cuenta para acceder a GCP.
Procedimiento
Introduzca el siguiente comando en cada nodo para inicializar cada nodo con su ID de proyecto y las credenciales de la cuenta.
# gcloud-ra init
6.15. Configuración del agente de recursos gcp-vcp-move-vip
El agente de recursos gcp-vpc-move-vip
adjunta una dirección IP secundaria (alias IP) a una instancia en ejecución. Se trata de una dirección IP flotante que puede pasar entre diferentes nodos del clúster.
Introduzca el siguiente comando para mostrar más información sobre este recurso.
# pcs resource describe gcp-vpc-move-vip
Puede configurar el agente de recursos para que utilice un rango de direcciones de subred primario o un rango de direcciones de subred secundario. Esta sección incluye procedimientos para ambos rangos.
Primary subnet address range
Complete los siguientes pasos para configurar el recurso para la subred primaria de la VPC.
Procedimiento
Introduzca el siguiente comando para crear el recurso
aliasip
. Incluya una dirección IP interna no utilizada. Incluya el bloque CIDR en el comando.# pcs resource create aliasip gcp-vpc-move-vip alias_ip=UnusedIPaddress/CIDRblock
Ejemplo:
root@rhel81-node-01 ~]# pcs resource create aliasip gcp-vpc-move-vip alias_ip=10.10.10.200/32
Introduzca el siguiente comando para crear un recurso
IPaddr2
para gestionar la IP en el nodo.# pcs resource create vip IPaddr2 nic=interface ip=AliasIPaddress cidr_netmask=32
Ejemplo:
root@rhel81-node-01 ~]# pcs resource create vip IPaddr2 nic=eth0 ip=10.10.10.200 cidr_netmask=32
Introduzca el siguiente comando para agrupar los recursos de red en
vipgrp
.# pcs resource group add vipgrp aliasip vip
Pasos de verificación
Introduzca el siguiente comando para verificar que los recursos se han iniciado y están agrupados en
vipgrp
.[root@rhel81-node-01 ~]# pcs status
Introduzca el siguiente comando para verificar que el recurso puede moverse a un nodo diferente.
# pcs resource move vip _Node_
Ejemplo:
[root@rhel81-node-01 ~]# pcs resource move vip rhel81-node-03
Introduzca el siguiente comando para verificar que el
vip
se ha iniciado con éxito en un nodo diferente.[root@rhel81-node-01 ~]# pcs status
Secondary subnet address range
Complete los siguientes pasos para configurar el recurso para un rango de direcciones de subred secundario.
Requisitos previos
Procedimiento
Introduzca el siguiente comando para crear un rango de direcciones de subred secundario.
# gcloud-ra compute networks subnets update SubnetName --region RegionName --add-second-ranges SecondarySubnetName=SecondarySubnetRange
Ejemplo:
# gcloud-ra compute networks subnets update range0 --region us-west1 --add-second-ranges range1=10.10.20.0/24
Introduzca el siguiente comando para crear el recurso
aliasip
. Cree una dirección IP interna no utilizada en el rango de direcciones de la subred secundaria. Incluya el bloque CIDR en el comando.# pcs resource create aliasip gcp-vpc-move-vip alias_ip=UnusedIPaddress/CIDRblock
Ejemplo:
root@rhel81-node-01 ~]# pcs resource create aliasip gcp-vpc-move-vip alias_ip=10.10.20.200/32
Introduzca el siguiente comando para crear un recurso
IPaddr2
para gestionar la IP en el nodo.# pcs resource create vip IPaddr2 nic=interface ip=AliasIPaddress cidr_netmask=32
Ejemplo:
root@rhel81-node-01 ~]# pcs resource create vip IPaddr2 nic=eth0 ip=10.10.20.200 cidr_netmask=32
Agrupe los recursos de red en
vipgrp
.# pcs resource group add vipgrp aliasip vip
Pasos de verificación
Introduzca el siguiente comando para verificar que los recursos se han iniciado y están agrupados en
vipgrp
.[root@rhel81-node-01 ~]# pcs status
Introduzca el siguiente comando para verificar que el recurso puede moverse a un nodo diferente.
# pcs resource move vip _Node_
Ejemplo:
[root@rhel81-node-01 ~]# pcs resource move vip rhel81-node-03
Introduzca el siguiente comando para verificar que el
vip
se ha iniciado con éxito en un nodo diferente.[root@rhel81-node-01 ~]# pcs status