Saltar al contenido

¿Cómo soluciono el error de una instalación de AWS Replication Agent en servidor de Linux?

8 minutos de lectura
0

Quiero instalar AWS Replication Agent para AWS Application Migration Service o AWS Elastic Disaster Recovery, pero se ha producido un error en la instalación.

Resolución

Para identificar automáticamente los problemas al instalar Application Migration Service o el agente de replicación de Elastic Disaster Recovery en los servidores de origen de Linux, utiliza el runbook de automatización AWSSupport-TroubleshootLinuxMGNDRSAgentLogs. En el runbook se utilizan los archivos de registro de instalación de AWS Replication Agent para proporcionar una lista de los errores detectados y cómo resolverlos.

Antes de iniciar el runbook AWSSupport-TroubleshootLinuxMGNDRSAgentLogs, asegúrate de que tu usuario o rol de AWS Identity and Access Management (IAM) tenga los permisos necesarios. Para obtener más información, consulta Required IAM permissions (Permisos de IAM necesarios) en AWSSupport-TroubleshootLinuxMGNDRSAgentLogs. Además, carga el archivo de registro del agente de replicación installer-path/aws_replication_agent_installer.log a un bucket de Amazon Simple Storage Service (Amazon S3).

Para ejecutar AWSSupport-TroubleshootLinuxMGNDRSAgentLogs, consulta Instructions (Instrucciones) en AWSSupport-TroubleshootLinuxMGNDRSAgentLogs.

Configura los siguientes parámetros de entrada para ServiceName (obligatorio):

  • Para usar Application Migration Service, selecciona AWS MGN.
  • Para usar Elastic Disaster Recover, selecciona AWS DRS.

O bien, ejecuta el siguiente comando para identificar manualmente los errores de instalación de AWS Replication Agent:

less +G installer-path/aws_replication_agent_installer.log

Nota: Sustituye installer-path por la ruta utilizada para instalar el agente de replicación.

Según el error que has identificado, sigue los siguientes pasos de solución de problemas para resolver el problema.

Error «failed to map segment from shared object: Operation not permitted»

El script de instalación usa el directorio /tmp. Si configuras noexec en /tmp, libz.so no puede asignar segmentos y recibirás el siguiente mensaje de error:

«error while loading shared libraries: libz.so.1: failed to map segment from shared object: Operation not permitted»

Para resolver este problema, ejecuta el siguiente comando para montar el volumen con permisos de ejecución:

# sudo mount /tmp -o remount,exec

Si no deseas eliminar noexec del directorio /tmp, añade la siguiente variable de entorno al comando:

TMPDIR='my_temp_dir' AGENT INSTALLATION COMMAND

Nota: Sustituye my_temp_dir por un directorio que no tenga noexec y AGENT INSTALLATION COMMAND por el comando que utilizas para instalar el agente.

Ejemplo de comando:

TMPDIR='temp1' sudo chmod +x aws-replication-installer-init; sudo ./aws-replication-installer-init

Error «security token included in the request is expired»

Si el rol de IAM caduca, se producirá un error en las llamadas a la API al punto de enlace de Application Migration Service o Elastic Disaster Recovery y recibirás el siguiente mensaje de error:

«botocore.exceptions.ClientError: An error occurred (ExpiredTokenException) when calling the GetAgentInstallationAssetsForDrs operation: The security token included in the request is expired [installation_id: 1a9af9d3-9485-4e02-965e-611929428c61, agent_version: 3.7.0, mac_addresses: 206915885515739,206915885515740, _origin_client_type: installer]»

Para resolver este problema, solicita credenciales de seguridad temporales para generar un token nuevo. También puedes instalar el rol con una clave de acceso o una clave de acceso secreta para Application Migration Service o Elastic Disaster Recovery.

Error «ssl.SSLCertVerificationError»

Si utilizas una versión anterior del sistema operativo (SO) con Python 3.10 o posterior, es posible que recibas el siguiente mensaje de error:

«ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:997) - urllib.error.URLError: urlopen error unknown url type: https»

Las versiones anteriores del sistema operativo no tienen la biblioteca OpenSSL más reciente compatible con Python 3.10. Para obtener más información, consulta PEP 644 -- Require OpenSSL 1.1.1 or newer (PEP 644: Exigir la versión 1.1.1 de OpenSSL o una posterior) en el sitio web de propuestas de mejora de Python. En este escenario, la instalación de AWS Replication Agent no verifica el certificado SSL en el punto de enlace de Application Migration Service o Elastic Disaster Recovery.

Para evitar este problema, utiliza una versión anterior de Python, como la versión 2.7 o 3.8.

Nota: Para resolver la mayoría de los errores de «urllib» o «SSL», usa una versión anterior de Python.

Error «botocore.exceptions.CredentialRetrievalError»

Al modificar el rol de servicio de IAM AWSElasticDisasterRecoveryAgentRole o AWSApplicationMigrationAgentRole, recibirás el siguiente mensaje de error:

«botocore.exceptions.CredentialRetrievalError: Error when retrieving credentials from cert: Oct 17, 2022 9:38:54 AM com.amazonaws.cloudendure.credentials_provider.SharedMain createAndSaveJks»

Para resolver este problema, actualiza la política de permisos del rol de servicio de IAM en función del servicio que utilices.

Política de permisos de Application Migration Service:

{      "Version": "2012-10-17",  
    "Statement": [  
        {  
            "Effect": "Allow",  
            "Principal": {  
                "Service": "mgn.amazonaws.com"  
            },  
            "Action": [  
                "sts:AssumeRole",  
                "sts:SetSourceIdentity"  
            ],  
            "Condition": {  
                "StringLike": {  
                    "sts:SourceIdentity": "s-*",  
                    "aws:SourceAccount": "AWS-Account-Number"  
                }  
            }  
        }  
    ]

Nota: Sustituye AWS-Account-Number por el ID de tu cuenta de AWS.

Política de permisos de Elastic Disaster Recovery:

{      "Version": "2012-10-17",  
    "Statement": [  
        {  
            "Effect": "Allow",  
            "Principal": {  
                "Service": "drs.amazonaws.com"  
            },  
            "Action": [  
                "sts:AssumeRole",  
                "sts:SetSourceIdentity"  
            ],  
            "Condition": {  
                "StringLike": {  
                    "sts:SourceIdentity": "s-*",  
                    "aws:SourceAccount": "AWS-Account-Number"  
                }  
            }  
        }  
    ]  
}

Nota: Sustituye AWS-Account-Number por el ID de tu cuenta.

Error «A dependency job for aws-replication.target failed»

Si el directorio /var tiene 754 permisos o se ha producido un problema al crear un grupo de Linux para el usuario aws-replication, recibirás el siguiente mensaje de error:

«stderr: A dependency job for aws-replication.target failed. See 'journalctl -xe' for details»

Para resolver el problema /var, ejecute el siguiente comando:

sudo chmod 755 /var

Para resolver el problema del grupo de Linux, sigue estos pasos:

  1. Desinstala AWS Replication Agent para Application Migration Service o Elastic Disaster Recovery.

  2. Ejecuta los siguientes comandos para eliminar el usuario aws-replication y el grupo aws-replication:

    sudo userdel aws-replication
    sudo groupdel aws-replication
  3. Vuelve a instalar AWS Replication Agent para Application Migration Service o Elastic Disaster Recovery.

Para conocer los requisitos previos de instalación de Application Migration Service, consulta Installation requirements (Requisitos de instalación). En el caso de Elastic Disaster Recovery, consulta Installation requirements for AWS Replication Agent (Requisitos de instalación de AWS Replication Agent).

Error «Exception in thread "main" com.amazonaws.services.drs.model.InternalServerException»

Si desactivas el punto de enlace de AWS Security Token Service (AWS STS), recibirás el siguiente mensaje de error:

«Exception in thread "main" com.amazonaws.services.drs.model.InternalServerException: An unexpected error has occurred (Service: Drs; Status Code: 500; Error Code: InternalServerException; Request ID: 4f4a76cb-aaec-44cc-a07a-c3579454ca55; Proxy: null»

Este error se produce porque Application Migration Service y Elastic Disaster Recovery llaman a AWS STS para que asuma el rol en la cuenta del cliente. Para resolver este problema, activa el punto de enlace de STS en el cliente.

Error «could not insert module ./aws-replication-driver.ko:»

Si has activado SecureBoot en el servidor de origen, recibirás uno de los siguientes mensajes de error:

«insmod: ERROR: could not insert module ./aws-replication-driver.ko: Required key not available»

Alternativa:

«insmod: ERROR: could not insert module ./aws-replication-driver.ko: Key was rejected by service»

No puedes usar SecureBoot en un sistema operativo Linux con Application Migration Service o Elastic Disaster Recovery.

Para resolver este problema, desactiva SecureBoot para el sistema operativo Linux.

Nota: Normalmente, se usa el hipervisor para desactivar SecureBoot.

Para comprobar el estado de SecureBoot, ejecuta el siguiente comando:

sudo mokutil --sb-state

Error «could not insert module ./aws-replication-driver.ko: Cannot allocate memory»

Si tu sistema operativo Linux no tiene suficiente memoria para instalar el agente, recibirás el siguiente mensaje de error:

«insmod: ERROR: could not insert module ./aws-replication-driver.ko: Cannot allocate memory»

Para resolver este problema, asegúrate de que el sistema operativo tenga al menos 300 MB de memoria libre al ejecutar la instalación. Este problema puede producirse debido a la fragmentación de la memoria. Para resolver los problemas de fragmentación de la memoria, reinicia el servidor de origen. Comprueba también si el software antivirus o de seguridad, como Falcon, Trend Micro, SentinelOne o McAfee, protege la memoria o el kernel y puede bloquear la instalación del agente.

Errores «Unexpected error while making agent driver!», «Kernel development package ...missing from repositories» o «Kernel development or header package...did not install»

Al instalar el agente, la instalación descarga un paquete kernel-devel que coincide con el paquete del kernel que se está ejecutando actualmente. Puedes encontrar el paquete actual en el repositorio de paquetes que está configurado en tu sistema operativo Linux. Si la instalación del agente no puede instalar el paquete kernel-devel en el kernel en ejecución del sistema operativo Linux, recibirás uno de los siguientes mensajes de error:

«Unexpected error while making agent driver! Are kernel linux headers installed correctly?»

Alternativa:

«Kernel development package for '************' are missing from repositories»

Alternativa:

«Kernel development or header package for ************ did not install»

Para resolver este problema, revisa el registro de instalación para comprobar si hay problemas de acceso al repositorio.

A continuación, busca y descarga manualmente el paquete kernel-devel según tu distribución:

  • Para el directorio de paquetes de Red Hat Enterprise Linux (RHEL), CentOS, Oracle y SUSE, consulta Search (Búsqueda) en el sitio web de RPM.
  • Para Debian, consulta Packages (Paquetes) en el sitio web de Debian.
  • Para Ubuntu, consulta Ubuntu packages search (Búsqueda de paquetes de Ubuntu) en el sitio web de paquetes de Ubuntu.

Tras descargar el paquete, vuelve a ejecutar la instalación. AWS Replication Agent también instala las dependencias necesarias para la instalación, como make gcc perl tar gawk rpm. Para obtener más información, consulta Linux installation requirements (Requisitos de instalación de Linux).

Información relacionada

Troubleshooting agent issues (Solución de problemas con los agentes)

Troubleshooting Elastic Disaster Recovery (Solución de problemas de Elastic Disaster Recovery)

Troubleshooting (Solución de problemas) (Application Migration Service)