Fehlerbehebung bei der SLES-Pay as you go-Registrierung


In diesem Dokument wird beschrieben, wie Sie Probleme beheben, die auftreten können, wenn Sie Compute Engine-VM-Instanzen mit Pay as you go-SUSE Linux Enterprise Server (PAYG-SLES) mit dem SUSE Subscription Management Tool-Repository (SMT-Repository) verbinden.

Vorbereitung

  • Prüfen Sie, ob die VM mit einem Dienstkonto verknüpft ist.
  • Achten Sie darauf, dass die Service Metadata API über die VM zugänglich ist.
  • Verwenden Sie das Tool sc-repocheck, um die Probleme automatisch zu beheben.
  • Klicken Sie auf die Schritte, die im Leitfaden zur Fehlerbehebung bei SUSE PAYG beschrieben werden.
  • Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben. Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud-Dienste und APIs überprüft. Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich wie folgt bei Compute Engine authentifizieren.

    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. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.

Netzwerkprobleme

Nicht aufgelöster Domainname

Die folgenden Probleme können auftreten, wenn die VM keine Verbindung zum SMT-Server smt-gce.susecloud.net herstellen kann:

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

Diese Probleme werden wahrscheinlich durch eine falsche Auflösung des SMT-Server-Domainnamens smt-gce.susecloud.net verursacht. Diese Domain kann nicht global aufgelöst werden. Daher müssen Sie die IP-Adresse gemäß der VM-Region festlegen. Gehen Sie dazu so vor:

Prüfen Sie, ob die Datei /etc/hosts einen Eintrag mit der Domain smt-gce.susecloud.net enthält.

cat /etc/hosts | grep -i smt

Die Ausgabe sieht dann ungefähr so aus, aber die IP-Adresse kann abweichen:

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

Wenn die Datei /etc/hosts nicht dieselben Zeilen wie im vorherigen Beispiel enthält, gehen Sie so vor:

  1. Suchen Sie in der Liste der SUSE SMT-IP-Adressen eine IP-Adresse, die der Region Ihrer VM entspricht.

  2. Bearbeiten Sie die Datei, um die SUSE-SMT-IP-Adresse und alle fehlenden Informationen hinzuzufügen.

Netzwerk nicht verfügbar

Die folgenden Fehler können aufgrund der Nichtverfügbarkeit des Netzwerks auftreten, auch wenn die VM den Domainnamen des Compute Engine Update-Server auflösen kann:

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.

Im Folgenden finden Sie einige Beispiele für Fehler in der Logdatei /var/log/cloudregister, die während der Untersuchung auftreten können:

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)]

Führen Sie einen Netzwerkverbindungstest durch, um mehr über die Ursache des Problems zu erfahren. Das folgende Beispiel zeigt, wie Sie eine HTTPS-Verbindung mit cURL testen:

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

Die Ausgabe des Befehls enthält einen HTTP-Antwortcode oder eine Fehlermeldung. Folgende Antworten und Fehler treten häufig auf:

  • Erfolgreiche Antwort:

    Response code (>0 is OK): 200
    
  • Zeitüberschreitungsfehler bei Anfrage:

    Response code (>0 is OK): 000
    curl: (28) Connection timed out after 5001 milliseconds
    
  • Nicht lösbarer Domainfehler:

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

In bestimmten Szenarien, z. B. bei strengen Host-Firewallregeln, ist die mit der Domain smt-gce.susecloud.net verknüpfte Standard-IP-Adresse möglicherweise nicht verfügbar. Führen Sie Netzwerkverbindungstests für alternative regionale Server aus, damit das Problem nicht nur mit der aktuellen IP-Adresse zusammenhängt. So rufen Sie die Liste der regionalen Server ab:

WebUI

Rufen Sie SUSE WebUI auf, um die Liste der regionalen Updateserver abzurufen.

Befehlszeile

Verwenden Sie das Tool pint, um die Liste der regionalen Updateserver über die Befehlszeile abzurufen.

  1. Erforderliches Paket installieren

    sudo zypper install python3-susepubliccloudinfo
  2. Verwenden Sie den folgenden Befehl für eine bestimmte Region.

    pint google servers --region us-central1
  3. Die erfolgreiche Ausgabe enthält eine Liste von Einträgen im XML-Format.

    <?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>
    

Eine vollständige Liste der SUSE-Server-IP-Adressen für Google Cloud finden Sie in den folgenden Dokumenten:

Die Netzwerkverfügbarkeit kann auf eine falsche VM-Konfiguration zurückzuführen sein. Bei Problemen ist es erforderlich, eine Netzwerkdiagnose durchzuführen, um die Ursache zu ermitteln.

Fehler bei der Registrierung

Der folgende Fehler kann auftreten, wenn Sie VMs mit einer privaten IP-Adresse in Cloud NAT haben:

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'.

Prüfen Sie zur Behebung dieses Problems, ob die Cloud NAT-Konfiguration den Parameter Mindestanzahl an Ports pro VM-Instanz auf mindestens 256 festgelegt hat.

Weitere Informationen finden Sie im SUSE Support-Bulletin Registrierung und Zypper fehlgeschlagen für Compute Engine-Instanzen hinter Cloud NAT.

Keine Antwort

Wenn Ihre VM Probleme bei der Kommunikation mit den Update- und Regionsservern hat, können die folgenden Fehler auftreten:

  • Fehler SUSEConnect:

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

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

Diese Fehler können durch eine fehlende Antwort von Update- und Regionsservern verursacht werden. Um festzustellen, ob dies der Fall ist, prüfen Sie die Logs /var/log/cloudregister auf ähnliche Inhalte:

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

Versuchen Sie Folgendes (eines davon oder mehr) um dieses Problem zu beheben:

  • Prüfen Sie, ob die VM eine externe IP-Adresse hat oder ob das Virtual Private Cloud-Subnetz eine NAT verwendet (entweder Cloud NAT oder benutzerdefinierte Lösung).

  • Wenn Sie die Standardregeln für das Netzwerkrouting geändert haben, z B. den Zugriff auf den öffentlichen Internetzugriff beschränken oder Traffic über ein lokales Netzwerk weiterleiten, fügen Sie Routen für SMT-IP-Adressen manuell über das Standardgateway von Compute Engine hinzu. Gehen Sie dazu so vor:

    1. Rufen Sie in der Google Cloud Console die Seite Routen auf.

      Zur Seite "Routen"

    2. Suchen Sie im Tab Routenverwaltung nach einer Route, die die SUSE-SMT-IP-Adressen enthält, und prüfen Sie, ob das Compute Engine-Standardgateway als nächster Hop festgelegt ist.

    3. Wenn die Route fehlt, können Sie sie hinzufügen. Klicken Sie dazu auf Route erstellen und geben Sie die erforderlichen Informationen ein.

  • Wenn Sie einen internen Passthrough-Network Load Balancer verwenden, z. B. mit zusätzlicher zwischengeschalteter Netzwerksoftware (z. B. Firewalls, benutzerdefinierte NATs), muss der Load Balancer als nächster Hop für VM-Traffic verwendet werden. Gehen Sie dazu so vor:

    1. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.

      Zur Seite „VM-Instanzen"

    2. Klicken Sie auf den Namen der VM, den Sie prüfen möchten. Die Seite mit den VM-Details wird geöffnet.

    3. Klicken Sie im Bereich Netzwerkschnittstellen auf Details ansehen.

    4. Suchen Sie im Abschnitt Firewall- und Routendetails die Route, die den Pfad zum gewünschten IP-Adressbereich definiert.

    5. Klicken Sie auf den Namen der Route und prüfen Sie, ob der interne Passthrough-Network Load Balancer oder seine IP-Adresse als nächster Hop festgelegt ist.

    Wenn es keine Route gibt, die den Pfad zum gewünschten IP-Adressbereich definiert, oder wenn der nächste Hop der Route ein anderer ist als der interne Passthrough-Network Load Balancer, dann richten Sie den internen Passthrough-Network Load Balancer als nächsten Hop ein.

  • Wenn Sie einen internen Passthrough-Network Load Balancer verwenden, prüfen Sie, ob er sich in derselben Region wie die VM befindet.

    1. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.

      Zur Seite „VM-Instanzen"

    2. Suchen Sie die VM, die Sie prüfen möchten, und notieren Sie sich die Region.

    3. Öffnen Sie in der Google Cloud Console die Seite Load-Balancing.

      Zur Seite „Load-Balancing“

    4. Suchen Sie den verwendeten internen Passthrough-Network Load Balancer und prüfen Sie, ob er sich in derselben Region wie die VM befindet.

    5. Wenn sich die VM und der interne Passthrough-Network Load Balancer nicht in derselben Region befinden, aktivieren Sie den globalen Zugriff.

Probleme mit der Betriebssystemkonfiguration

Unbekannter Registrierungsstatus

Führen Sie den folgenden Befehl aus, wenn Sie nicht wissen, ob Ihr PAYG-SUSE Linux-Enterprise-Server (Pay as you go) registriert ist:

sudo SUSEConnect --status-text

Die Ausgabe enthält den Versions- und Registrierungsstatus der SUSE-Produkte, einschließlich SUSE Linux Enterprise Server.

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

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

  Registered

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

Wenn der Status Not Registered lautet, starten Sie den Neuregistrierungsvorgang, um das Problem zu beheben.

Wenn die Produktverknüpfung auf eine falsche Produktdatei verweist, können die folgenden Fehler auftreten:

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.

Dieser Fehler wird durch eine falsche Produktdatei (d.h. sle-module-toolchain.prod) verursacht, auf die der symbolische Link /etc/products.d/baseproduct verweist.

Aktualisieren Sie zum Beheben dieses Problems den Symlink unter /etc/products.d/baseproduct so, dass er auf die entsprechende Basisproduktdatei verweist. Gehen Sie dazu so vor:

  1. Rufen Sie das Verzeichnis /etc/products.d auf:

      cd /etc/products.d
  2. Führen Sie den folgenden Befehl aus und ersetzen Sie dabei SLES.prod durch SLES_SAP.prod, wenn SLES für SAP installiert ist:

      sudo ln -sf SLES.prod baseproduct

Nicht verfügbare Informationen zur Instanzidentität

Wenn für die VM keine Informationen zur Instanzidentität verfügbar sind, können die folgenden Fehler auftreten:

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

Für den Zugriff auf die Instanzmetadaten für Identitätstokens müssen alle VMs einem Dienstkonto zugeordnet sein.

Weitere Informationen finden Sie unter Public Cloud Infrastructure-Update.

Prüfen Sie mit dem folgenden Befehl auf der VM, ob die VM für diese Situation relevant ist:

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

Beispiel für eine erfolgreiche Antwort mit einem Identitätstoken:

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

Wenn die zurückgegebenen Metadaten kein Token, sondern eine Fehlermeldung wie die folgende sind, ist die VM betroffen:

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

Führen Sie folgende Schritte aus, um dieses Problem zu beheben:

  1. Beenden Sie die VM:

    gcloud compute instances stop VM_NAME
  2. Fügen Sie der VM ein Dienstkonto hinzu:

    gcloud compute instances set-service-account VM_NAME \
      --service account SERVICE_ACCOUNT \
      --no-scopes
  3. Starten Sie die VM:

    gcloud compute instances start VM_NAME
  4. Führen Sie nach dem Hinzufügen des fehlenden Dienstkontos den folgenden Befehl über die VM aus, um SLES noch einmal zu registrieren:

    sudo registercloudguest --force-new

    Prüfen Sie die Details im Abschnitt Erneute Registrierung.

Registrierung hinter Proxys

Ein Problem kann auftreten, wenn Ihre VMs so konfiguriert sind, dass sie eine beliebige Proxy-Software verwenden. Das folgende Beispiel zeigt einen Versuch, SLES über einen HTTP-Proxy zu registrieren.

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 in Compute Engine bietet keine offizielle Unterstützung für die Betriebssystemregistrierung, wenn es über Vermittler ausgeführt wird, die die ursprüngliche Kommunikation ändern, z. B. Proxys von Man-in-the-Middle (MITM) oder nicht transparente Typen.

Die offizielle Lösung zur Behebung dieses Problems besteht darin, Cloud NAT einzurichten und den VM-Traffic durch ihn zu leiten.

Häufige Problemumgehungen

Erneute Registrierung

In einigen Fällen kann eine erneute Registrierung verwendet werden, um Registrierungsprobleme zu umgehen.

Verwenden Sie den folgenden Befehl, um eine neue Registrierung zu erzwingen:

sudo registercloudguest --force-new

Wenn der Vorgang erfolgreich ist, wird die folgende Zeile ausgegeben.

Registration succeeded

Details zum erneuten Registrierungsprozess finden Sie unter /var/log/cloudregister.

Erfolgreiches Beispiel

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

Beispiel für Fehler

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

Registrierung aufheben

In einigen Fällen, z. B. bei einem größeren Release-Upgrade, können die folgenden Fehler auftreten, da das System bereits für SUMA registriert ist:

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.

So beheben Sie das Problem:

  1. Entfernen Sie das SUSE Manager Client Tools-Modul, wie in der Anleitung Module und Erweiterungen löschen beschrieben.

  2. Heben Sie die Registrierung von SUMA auf. Folgen Sie dazu der Anleitung Registrierung eines SUSE Manager-Clients aufheben.

  3. Führen Sie die folgenden Befehle von der VM aus, um die alte Registrierung zu bereinigen:

      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. Führen Sie den folgenden Befehl aus, um das System noch einmal zu registrieren:

      sudo registercloudguest --force-new

    Prüfen Sie die Details im Abschnitt Erneute Registrierung.

  5. Aktualisieren Sie nach der Registrierung die Dienste und Repositories und prüfen Sie, ob alle erwarteten Repositories für das vom SMT-Server bereitgestellte System vorhanden sind:

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