Solución de problemas de registro de pago por uso de SLES


Este documento describe cómo resolver los problemas que puede encontrar al conectar instancias de máquinas virtuales (VM) de Compute Engine que ejecutan SUSE Linux Enterprise Server (SLES) de pago por uso (PAYG) al repositorio de la herramienta de administración de suscripciones (SMT) de SUSE.

Antes de comenzar

  • Asegúrese de que la máquina virtual tenga una cuenta de servicio asociada.
  • Asegúrese de que se pueda acceder a la API de metadatos del servicio desde la máquina virtual.
  • Garantizar la conectividad de red desde la VM a los respectivos servidores regionales y servidores SMT
  • Utilice la herramienta sc-repocheck para solucionar los problemas automáticamente.
  • Consulte los pasos descritos en la guía de solución de problemas de SUSE PAYG .
  • Si aún no lo has hecho, configura la autenticación. La autenticación es el proceso mediante el cual se verifica su identidad para acceder a Google Cloud servicios y API. Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.

Problemas de red

Nombre de dominio irresoluble

Es posible que encuentre los siguientes problemas si la máquina virtual no puede conectarse al servidor SMT smt-gce.susecloud.net :

SUSEConnect error: SocketError: getaddrinfo: Name or service not known
ping: unknown host smt-gce.susecloud.net

Es probable que estos problemas se deban a una resolución incorrecta del nombre de dominio del servidor SMT smt-gce.susecloud.net . Este dominio no se puede resolver globalmente, por lo que debe configurar su dirección IP según la región de la VM, haciendo lo siguiente:

Verifique el archivo /etc/hosts para asegurarse de que contenga una entrada con el dominio smt-gce.susecloud.net .

cat /etc/hosts | grep -i smt

El resultado es similar al siguiente, pero la dirección IP puede ser diferente:

# Added by SMT registration do not remove, retain comment as well
108.59.80.221   smt-gce.susecloud.net   smt-gce

Si el archivo /etc/hosts no contiene las mismas líneas que el ejemplo anterior, haga lo siguiente:

  1. Busque una dirección IP que corresponda con la región de su VM en la lista de direcciones IP de SUSE SMT .

  2. Edite el archivo para agregar la dirección IP de SUSE SMT y cualquier otra información que falte.

Indisponibilidad de red

Es posible que encuentres los siguientes errores debido a la falta de disponibilidad de la red, incluso si la VM puede resolver el nombre de dominio de Compute Engine Update Server:

Unexpected exception.
Not ready to read within timeout.
Repository 'SLE-Module-Adv-Systems-Management12-Pool' is invalid.
Repository 'SLE-Module-Adv-Systems-Management12-Updates' is invalid.

Los siguientes son algunos ejemplos de errores en el archivo de registro /var/log/cloudregister que puede encontrar durante la investigación:

WARNING:Unable to remove client registration from server
WARNING:HTTPSConnectionPool(host='smt-gce.susecloud.net', port=443): Max retries exceeded with url: /connect/systems (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 110] Connection timed out',))
INFO:Region server arguments: ?regionHint=europe-central2
ERROR:No response from: [('34.118.112.80', None), ('34.116.251.218', None), ('34.116.224.144', None)]

Para obtener más información sobre la causa del problema, realice una prueba de conectividad de red. El siguiente ejemplo muestra cómo probar una conexión HTTPS usando cURL :

curl -sSI -m 5 -o /dev/null \
  -w 'Response code (>0 is OK): %{http_code}\n' \
  'https://smt-gce.susecloud.net'

La salida del comando contiene un código de respuesta HTTP o un mensaje de error. Las siguientes son respuestas y errores comunes:

  • Respuesta exitosa:

    Response code (>0 is OK): 200
    
  • Error de tiempo de espera de solicitud:

    Response code (>0 is OK): 000
    curl: (28) Connection timed out after 5001 milliseconds
    
  • Error de dominio irresoluble:

    Response code (>0 is OK): 000
    curl: (6) Could not resolve host: smt-gce.susecloud.net
    

En ciertos escenarios, como reglas estrictas de firewall de host, es posible que la dirección IP predeterminada asociada con el dominio smt-gce.susecloud.net no esté disponible. Para asegurarse de que el problema no esté relacionado únicamente con la dirección IP actual, realice pruebas de conectividad de red para servidores regionales alternativos. Recupere la lista de servidores regionales haciendo lo siguiente:

interfaz de usuario web

Vaya a SUSE WebUI para obtener la lista de servidores de actualización regionales.

CLI

Utilice la herramienta pint para obtener la lista de servidores de actualización regionales mediante CLI.

  1. Instalar el paquete requerido

    sudo zypper install python3-susepubliccloudinfo
  2. Utilice el siguiente comando con una región específica

    pint google servers --region us-central1
  3. El resultado exitoso contiene una lista de entradas en formato XML.

    <?xml version='1.0' encoding='UTF-8'?>
    <servers>
      <server ip="146.148.73.14" name="" region="us-central1" type="regionserver-sles"/>
      <server ip="162.222.182.90" name="" region="us-central1" type="regionserver-sap"/>
      <server ip="108.59.80.221" name="smt-gce.susecloud.net" region="us-central1" type="smt"/>
      <server ip="108.59.85.41" name="smt-gce.susecloud.net" region="us-central1" type="smt"/>
      <server ip="108.59.80.58" name="smt-gce.susecloud.net" region="us-central1" type="smt"/>
    </servers>
    

Para encontrar la lista completa de direcciones IP del servidor SUSE para Google Cloud, consulte los siguientes documentos:

La falta de disponibilidad de la red puede deberse a una mala configuración de la VM. En caso de problemas, es necesario realizar diagnósticos de red para identificar la causa raíz.

Registro fallido

Es posible que encuentre el siguiente error si tiene máquinas virtuales que tienen una dirección IP privada en Cloud NAT:

ERROR:  Registration failed: Registering system to registration proxy https://smt-gce.susecloud.net
command '/usr/bin/zypper --non-interactive refs Python_3_Module_x86_64' failed
Error: zypper returned 4 with 'Problem retrieving the repository index file for service 'Python_3_Module_x86_64':
Timeout exceeded when accessing 'https://smt-gce.susecloud.net/services/2045/repo/repoindex.xml?credentials=Python_3_Module_x86_64'.

Para resolver este problema, revise la configuración de Cloud NAT para verificar que el parámetro de puertos mínimos por instancia de VM esté establecido en al menos 256 .

Para obtener más información, consulte el boletín de soporte de Cloud NAT SUSE para instancias de Compute Engine detrás de Cloud NAT .

Sin respuesta

Si su máquina virtual experimenta problemas para comunicarse con los servidores de actualización y región, puede observar los siguientes errores:

  • Error SUSEConnect :

    SUSEConnect error: Errno::ETIMEDOUT: Connection timed out - connect(2) for "smt-gce.susecloud.net" port 443
    
  • error de zypper :

    Error retrieving metadata for 'SLE-Module-Adv-Systems-Management12-Pool':
    Not ready to read within timeout.
    ...
    

Estos errores pueden deberse a la falta de respuesta de los servidores de actualización y región. Para verificar si este es el caso, verifique los registros /var/log/cloudregister para ver contenido similar:

INFO:Region server arguments: ?regionHint=europe-central2
INFO:Using API: regionInfo
INFO:Region server arguments: ?regionHint=europe-central2
INFO:Getting update server information, attempt 1
INFO:   Using region server: 130.211.242.136
ERROR:  No response from: 130.211.242.136
INFO:   Using region server: 35.187.193.56
ERROR:  No response from: 35.187.193.56
INFO:   Using region server: 162.222.182.90
ERROR:  No response from: 162.222.182.90
INFO:   Using region server: 130.211.88.88
ERROR:  No response from: 130.211.88.88
ERROR:  None of the servers responded
ERROR:  Attempted: [IPv4Address('130.211.242.136'), IPv4Address('35.187.193.56'), IPv4Address('162.222.182.90'), IPv4Address('130.211.88.88')]
...
...
...
ERROR:Request not answered by any server after 3 attempts
ERROR:Exiting without registration

Para resolver este problema, pruebe uno o más de los siguientes:

  • Confirme que la VM tenga una dirección IP externa o que la subred de la Nube Privada Virtual utilice una NAT (ya sea Cloud NAT o una solución personalizada).

  • Si modificaste las reglas de enrutamiento de red predeterminadas, como limitar el acceso público a Internet o enrutar el tráfico a través de una red local, agrega rutas manualmente para las IP de SMT a través de la puerta de enlace predeterminada de Compute Engine, haciendo lo siguiente:

    1. Vaya a la página Rutas en la consola de Google Cloud.

      Ir a la página de Rutas

    2. En la pestaña Administración de rutas, busque una ruta que incluya las direcciones IP de SUSE SMT y verifique que tenga la puerta de enlace predeterminada de Compute Engine configurada como el siguiente salto.

    3. Si falta la ruta, puedes agregarla haciendo clic en Crear Ruta e ingresando la información necesaria.

  • Si está utilizando un balanceador de carga de red de paso interno, por ejemplo con software de red intermediario adicional (como firewalls, NAT personalizados, etc.), asegúrese de que el balanceador de carga se esté usando como el siguiente salto para el tráfico de VM, haciendo lo siguiente:

    1. Vaya a la página de instancias de VM en la consola de Google Cloud.

      Vaya a la página de instancias de VM

    2. Haga clic en el nombre de la VM que desea verificar. Se abre la página de detalles de la máquina virtual .

    3. En la sección Interfaces de red , haga clic en Ver detalles .

    4. En la sección Detalles de Firewall y rutas ubique la ruta que define la ruta al rango de direcciones IP seleccionado.

    5. Haga clic en el nombre de la ruta y confirme que el Network Load Balancer de paso interno o su dirección IP esté configurado como el siguiente salto.

    Si no hay una ruta que defina la ruta al rango de direcciones IP seleccionado, o si el siguiente salto de la ruta es diferente del Network Load Balancer de paso interno, configure el Network Load Balancer de paso interno como el siguiente salto .

  • Si está utilizando un balanceador de carga de red de paso interno, confirme que esté ubicado en la misma región que la máquina virtual.

    1. Vaya a la página de instancias de VM en la consola de Google Cloud.

      Vaya a la página de instancias de VM

    2. Localice la máquina virtual que desea verificar y anote su región.

    3. Vaya a la página Equilibrio de carga en la consola de Google Cloud.

      Vaya a la página de equilibrio de carga

    4. Localice el balanceador de carga de red de paso interno utilizado y verifique si está en la misma región que la máquina virtual.

    5. Si la máquina virtual y el Network Load Balancer de paso interno no están en la misma región, habilite el acceso global .

Problemas de configuración del sistema operativo

Estado de registro desconocido

Si no sabe si su SUSE Linux Enterprise Server (SLES) de pago por uso (PAYG) está registrado o no, ejecute el siguiente comando:

sudo SUSEConnect --status-text

El resultado contiene la versión y el estado de registro de los productos SUSE, incluido SUSE Linux Enterprise Server.

Installed Products:
------------------------------------------

  SUSE Linux Enterprise Server 12 SP5
  (SLES/12.5/x86_64)

  Registered

------------------------------------------
...

Si el estado es Not Registered , comience desde el proceso de reinscripción para solucionar el problema.

Puede encontrar los siguientes errores si el enlace del producto base apunta a un archivo de producto incorrecto:

ERROR:Unable to obtain product information from server "108.59.85.41,None"
        Unprocessable Entity
        {"type":"error","error":"Unmet product dependencies, activate one of these products first: SUSE Linux Enterprise Server 12 x86_64...
        ...
Unable to register modules, exiting.

Este error se debe a que el enlace simbólico /etc/products.d/baseproduct apunta a un archivo de producto incorrecto (es decir, sle-module-toolchain.prod ).

Para resolver este problema, actualice el enlace simbólico en /etc/products.d/baseproduct para que apunte al archivo de producto base apropiado, haciendo lo siguiente:

  1. Navegue al directorio /etc/products.d

      cd /etc/products.d
  2. Ejecute el siguiente comando reemplazando SLES.prod con SLES_SAP.prod si SLES para SAP está instalado:

      sudo ln -sf SLES.prod baseproduct

Indisponibilidad de la información de identidad de la instancia

Puede encontrar los siguientes errores si la información de identidad de la instancia no está disponible para la VM:

ERROR:Data collected from stderr for instance data collection "b'Unable to access instance identity information\n'"

Para acceder a los metadatos de instancia para tokens de identidad, todas las máquinas virtuales deben estar asociadas con una cuenta de servicio .

Para obtener más información, lea la Actualización de infraestructura de nube pública .

Para comprobar que la VM es relevante para esta situación, ejecute el siguiente comando en la VM:

curl -s -H 'Metadata-Flavor: Google' \
  'http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience=test'

Ejemplo de respuesta exitosa con un token de identidad:

eyJhbGciOiJSUzI1NiIsImtpZCI6IjkzOTd0MDQxSHQ2NDNxNzkzUjY1MDIwNzEyMjZPNnppaTdqNTl3eTciLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJ0ZXN0IiwiYXpwIjoiMjY1MDIwMDUyMzgzMjYyNTk0ODU2IiwiZXhwIjoxNjgzNzEyNTQzLCJpYXQiOjE2ODM3MTI4NjQsImlzcyI6Imh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbSIsInN1YiI6IjQ1NjA2MzQ5MDg5Mzc0Njg3ODI5NyJ9.EpzQ3NZ8mKStdpH10fL34qsKG0rjQEflzvLJLm2tVNX4xBJAkMhi8lcs5InUEY-QMK3njgbzdzNtD1fXoIfKoeWsqkA8vG3NkBz5zqRrtaB2STcO14H5tjIdTBsrCtET447tRXlGG5cvgMcWnRDZG92-jUZEpWki_Ri4T69X5-bBWkfE2Thm3oSUW4fScdeVOEmOgWnzD2jeVqQ_2YniywvpkT-rLzKfN-5AgN66zgBfXqJVTC90KFMebfiaOoL7z6ZSM9AjZGf45QEMZjxjd-Xzyee6ZWK8s0RE3hJlytb3zYcLt3tJwQ1WhnrC2ToJ-ZmKxxK3xKDLCvCQ6Ny5to

Si los metadatos devueltos no son un token sino un mensaje de error como el siguiente, la VM se ve afectada:

{
  "error": "invalid_request",
  "error_description": "Service account not enabled on this instance"
}

Para solucionar este problema, realice los siguientes pasos:

  1. Detenga la máquina virtual:

    gcloud compute instances stop VM_NAME
  2. Agregue una cuenta de servicio a la VM:

    gcloud compute instances set-service-account VM_NAME \
      --service account SERVICE_ACCOUNT \
      --no-scopes
  3. Inicie la máquina virtual:

    gcloud compute instances start VM_NAME
  4. Después de agregar la cuenta de servicio que falta, ejecute el siguiente comando desde la VM para volver a registrar SLES:

    sudo registercloudguest --force-new

    Consulta los detalles en el apartado de reinscripción .

Registro detrás de poderes

Es posible que encuentre un problema si sus máquinas virtuales están configuradas para utilizar cualquier tipo de software de proxy. El siguiente ejemplo demuestra un intento de registrar SLES mediante un proxy HTTP.

ERROR: Baseproduct registration failed
ERROR: Registering system to registration proxy https://smt-gce.susecloud.net

Announcing system to https://smt-gce.susecloud.net ...
SUSEConnect error: Net::HTTPFatalError: 503 "Service Unavailable"

SUSE en Compute Engine no brinda soporte oficial para el registro del sistema operativo cuando se realiza a través de intermediarios que modifican la comunicación original, como proxies de tipo man-in-the-middle (MITM) o no transparentes.

La solución oficial para resolver este problema es configurar Cloud NAT y enrutar el tráfico de VM a través de él.

Soluciones comunes

Reinscripción

En algunos casos, se puede utilizar un enfoque de reinscripción para solucionar los problemas de registro.

Para forzar un nuevo registro utilice el siguiente comando:

sudo registercloudguest --force-new

Si tiene éxito, se generará la siguiente línea.

Registration succeeded

Los detalles del proceso de reinscripción se pueden encontrar en /var/log/cloudregister .

Ejemplo exitoso

INFO:Forced new registration
INFO:Clean current registration server: ('108.59.80.221', None)
...
INFO:Starting new HTTP connection (1): 169.254.169.254
INFO:Region server arguments: ?regionHint=us-central1
INFO:Using region server: 130.211.242.136
INFO:Starting new HTTPS connection (1): 130.211.242.136
INFO:Starting new HTTPS connection (1): 108.59.80.58
INFO:Modified /etc/hosts, added: 108.59.80.58   smt-gce.susecloud.net   smt-gce
...
INFO:Starting new HTTPS connection (1): 108.59.80.58
DEBUG:"GET /api/health/status HTTP/1.1" 200 None
INFO:Current update server will be used: "('108.59.80.58', None)"
INFO:Starting new HTTPS connection (1): smt-gce.susecloud.net
DEBUG:"POST /connect/systems/products/migrations HTTP/1.1" 422 None
INFO:Registration: /usr/sbin/SUSEConnect --url https://smt-gce.susecloud.net --product sle-module-containers/12/x86_64 --instance-data /var/lib/cloudregister/9c982106-78de-48fe-a662-20383da4c760

Ejemplo fallido

INFO:Forced new registration
INFO:Using API: regionInfo
INFO:Starting new HTTP connection (1): 169.254.169.254
INFO:Region server arguments: ?regionHint=us-central1
INFO:Using region server: 130.211.242.136
INFO:Starting new HTTPS connection (1): 130.211.242.136
ERROR:No response from: 130.211.242.136
INFO:Using region server: 130.211.88.88
INFO:Starting new HTTPS connection (1): 130.211.88.88
ERROR:No response from: 130.211.88.88
INFO:Using region server: 146.148.73.14
INFO:Starting new HTTPS connection (1): 146.148.73.14
ERROR:No response from: 146.148.73.14
ERROR:None of the servers responded
ERROR:  Attempted: ['130.211.242.136', '130.211.88.88', '146.148.73.14']
ERROR:Exiting without registration

Baja

En algunos casos, como en el caso de una actualización de una versión importante, es posible que encuentre los siguientes errores porque el sistema ya está registrado en SUMA:

Can't get available migrations from server: SUSE::Connect::ApiError: The requested products 'SUSE Manager Client Tools for SLE 12 x86_64' are not activated on the system.
This system is managed by SUSE manager.

Resuelva el problema haciendo lo siguiente:

  1. Elimine el módulo SUSE Manager Client Tools como se describe en la guía Agregar o eliminar módulos y extensiones con SUSEConnect .

  2. Cancele el registro de SUMA siguiendo la guía Cómo cancelar el registro de un cliente de SUSE Manager .

  3. Ejecute los siguientes comandos desde la máquina virtual para limpiar el registro anterior:

      sudo SUSEConnect --cleanup && \
        sudo registercloudguest --clean && \
        sudo rm -f /etc/SUSEConnect && \
        sudo rm -f /etc/zypp/{repos,services,credentials}.d/* && \
        sudo rm -f /var/lib/cloudregister/* && \
        sudo rm -rf /var/cache/zypp/* && \
        sudo rm -rf /var/cache/cloudregister/* && \
        sudo sed -i '/^# Added by SMT reg/,+1d' /etc/hosts
  4. Ejecute el siguiente comando para registrar el sistema nuevamente:

      sudo registercloudguest --force-new

    Consulta los detalles en el apartado de reinscripción .

  5. Cuando finalice el proceso de registro, actualice los servicios y repositorios y verifique si todos los repositorios esperados para el sistema proporcionados por el servidor SMT están presentes:

      sudo zypper ref -s && \
        sudo zypper ls && \
        sudo zypper lr -U