Risolvi i problemi di registrazione di SLES con pagamento a consumo


Questo documento descrive come risolvere i problemi che potresti riscontrare quando colleghi istanze di macchine virtuali (VM) Compute Engine che eseguono SUSE Linux Enterprise Server (SLES) con pagamento a consumo (PAYG) al repository SUSE Subscription Management Tool (SMT).

Prima di iniziare

  • Assicurati che alla VM sia associato un service account.
  • Assicurati che l'API Service Metadata sia accessibile dalla VM.
  • Assicurati che vi sia connettività di rete tra la VM e i rispettivi server di regione e i server SMT
  • Utilizza lo strumento sc-repocheck per risolvere automaticamente i problemi.
  • Segui i passaggi descritti nella guida alla risoluzione dei problemi di SUSE PAYG.
  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo mediante il quale la tua identità viene verificata per l'accesso a servizi e API Google Cloud . Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:

    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.

Problemi di rete

Nome di dominio non risolvibile

Se la VM non riesce a connettersi al server SMT smt-gce.susecloud.net, potresti riscontrare i seguenti problemi:

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

Questi problemi sono probabilmente causati dall'errata risoluzione del nome di dominio del server SMT smt-gce.susecloud.net. Questo dominio non può essere risolto a livello globale, quindi devi impostarne l'indirizzo IP in base alla regione della VM nel seguente modo:

Controlla il file /etc/hosts per assicurarti che contenga una voce per il dominio smt-gce.susecloud.net.

cat /etc/hosts | grep -i smt

L'output è simile al seguente, ma l'indirizzo IP potrebbe essere diverso:

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

Se il file /etc/hosts non contiene le stesse righe dell'esempio precedente, procedi come segue:

  1. Trova un indirizzo IP corrispondente alla regione della VM nell'elenco degli indirizzi IP di SUSE SMT.

  2. Modifica il file per aggiungere l'indirizzo IP di SUSE SMT ed eventuali altre informazioni mancanti.

Rete non disponibile

Potresti riscontrare i seguenti errori a causa dell'indisponibilità della rete, anche se la VM è in grado di risolvere il nome di dominio del server Compute Engine di aggiornamento:

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.

Di seguito sono riportati alcuni esempi di errori registrati nel file di log /var/log/cloudregister che potresti trovare durante l'indagine:

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

Per saperne di più sulla causa del problema, esegui un test di connettività di rete. L'esempio seguente mostra come testare una connessione HTTPS utilizzando cURL:

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

L'output del comando contiene un codice di risposta HTTP o un messaggio di errore. Di seguito sono riportati errori e risposte comunemente riscontrati:

  • Operazione riuscita:

    Response code (>0 is OK): 200
    
  • Errore di timeout della richiesta:

    Response code (>0 is OK): 000
    curl: (28) Connection timed out after 5001 milliseconds
    
  • Errore di dominio non risolvibile:

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

In alcuni scenari, ad esempio in presenza di regole del firewall dell'host rigide, l'indirizzo IP predefinito associato al dominio smt-gce.susecloud.net potrebbe non essere disponibile. Per assicurarti che il problema non sia correlato solo all'indirizzo IP corrente, esegui test di connettività di rete con server regionali alternativi. Per recuperare l'elenco dei server regionali:

WebUI

Vai alla WebUI di SUSE per ottenere l'elenco dei server di aggiornamento regionali.

Interfaccia a riga di comando

Utilizza lo strumento pint per recuperare l'elenco dei server di aggiornamento regionali tramite CLI.

  1. Installa il pacchetto richiesto

    sudo zypper install python3-susepubliccloudinfo
  2. Utilizza il seguente comando indicando una regione specifica

    pint google servers --region us-central1
  3. Se l'operazione riesce, l'output contiene un elenco di voci in 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>
    

Per trovare l'elenco completo degli indirizzi IP dei server SUSE per Google Cloud, consulta i seguenti documenti:

L'indisponibilità della rete potrebbe essere dovuta a una configurazione errata della VM. In caso di problemi, è necessario eseguire la diagnostica di rete per identificare la causa principale.

Registrazione non riuscita

Se hai VM con indirizzi IP privati in Cloud NAT, potresti riscontrare il seguente errore:

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

Per risolvere il problema, controlla la configurazione di Cloud NAT per verificare che il parametro N. minimo di porte per istanza VM sia impostato su almeno 256.

Per ulteriori informazioni, consulta il bollettino dell'assistenza SUSE che descrive gli errori di registrazione e di zypper per le istanze di Compute Engine protette da Cloud NAT.

Nessuna risposta

Se si verificano problemi di comunicazione tra la VM e i server di aggiornamento e di regione, potresti riscontrare i seguenti errori:

  • Errore: SUSEConnect:

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

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

Questi errori possono essere causati dalla mancata risposta da parte dei server di aggiornamento e di regione. Per verificare se questo è il caso, controlla i log /var/log/cloudregister per verificare se sono presenti contenuti simili ai seguenti:

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

Per risolvere il problema, prova una o più delle seguenti operazioni:

  • Verifica che la VM abbia un indirizzo IP esterno o che la subnet di Virtual Private Cloud utilizzi un NAT (Cloud NAT o una soluzione personalizzata).

  • Se hai modificato le regole di routing di rete predefinite, ad esempio limitando l'accesso pubblico a internet oppure eseguendo il routing del traffico attraverso una rete on-premise, aggiungi manualmente le route per gli IP di SMT attraverso il gateway predefinito di Compute Engine nel modo seguente:

    1. Vai alla pagina Route nella console Google Cloud .

      Vai alla pagina Route

    2. Nella scheda Gestione route, cerca una route che includa gli indirizzi IP di SUSE SMT e verifica che il gateway predefinito di Compute Engine associato sia impostato come hop successivo.

    3. Se la route non è presente, puoi aggiungerla facendo clic su Crea route e inserendo le informazioni necessarie.

  • Se utilizzi un bilanciatore del carico di rete passthrough interno, ad esempio con software di rete intermediario aggiuntivo (come firewall, NAT personalizzati e così via), assicurati che il bilanciatore del carico venga utilizzato come hop successivo per il traffico delle VM, procedendo nel seguente modo:

    1. Nella console Google Cloud , vai alla pagina Istanze VM.

      Vai alla pagina Istanze VM

    2. Fai clic sul nome della VM che vuoi controllare. Viene visualizzata la pagina Dettagli VM.

    3. Nella sezione Interfacce di rete, fai clic su Visualizza dettagli.

    4. Nella sezione Dettagli firewall e route, individua la route che definisce il percorso verso l'intervallo di indirizzi IP selezionato.

    5. Fai clic sul nome della route e verifica che il bilanciatore del carico di rete passthrough interno o il suo indirizzo IP sia impostato come hop successivo.

    Se non esiste una route che definisce il percorso verso l'intervallo di indirizzi IP selezionato o se l'hop successivo della route è diverso dal bilanciatore del carico di rete passthrough interno, configura il bilanciatore del carico di rete passthrough interno come hop successivo.

  • Se utilizzi un bilanciatore del carico di rete passthrough interno, verifica che si trovi nella stessa regione della VM.

    1. Nella console Google Cloud , vai alla pagina Istanze VM.

      Vai alla pagina Istanze VM

    2. Individua la VM che vuoi controllare e prendi nota della sua regione.

    3. Nella console Google Cloud , vai alla pagina Bilanciamento del carico.

      Vai alla pagina Bilanciamento del carico

    4. Individua il bilanciatore del carico di rete passthrough interno utilizzato e controlla se si trova nella stessa regione della VM.

    5. Se la VM e il bilanciatore del carico di rete passthrough interno non si trovano nella stessa regione, abilita l'accesso globale.

Problemi di configurazione del sistema operativo

Stato della registrazione sconosciuto

Se non sai se il tuo SUSE Linux Enterprise Server (SLES) con pagamento a consumo (PAYG) è registrato o meno, esegui questo comando:

sudo SUSEConnect --status-text

L'output contiene la versione e lo stato di registrazione dei prodotti SUSE, incluso SUSE Linux Enterprise Server.

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

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

  Registered

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

Se lo stato è Not Registered, avvia la procedura di nuova registrazione per risolvere il problema.

Se il collegamento al prodotto di base rimanda a un file di prodotto errato, potresti riscontrare i seguenti errori:

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.

Questo errore è causato dal fatto che il collegamento simbolico /etc/products.d/baseproduct fa riferimento a un file di prodotto errato (ad esempio sle-module-toolchain.prod).

Per risolvere il problema, aggiorna il collegamento simbolico /etc/products.d/baseproduct nel seguente modo, in modo che faccia riferimento al file del prodotto di base appropriato:

  1. Vai alla directory /etc/products.d

      cd /etc/products.d
  2. Esegui il seguente comando, sostituendo SLES.prod con SLES_SAP.prod se è installato SLES per SAP:

      sudo ln -sf SLES.prod baseproduct

Informazioni sull'identità dell'istanza non disponibili

Se le informazioni sull'identità dell'istanza non sono disponibili per la VM, potresti riscontrare i seguenti errori:

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

Per accedere ai metadati dell'istanza e ottenere i token di identità, tutte le VM devono essere associate a un service account.

Per ulteriori informazioni, leggi l'aggiornamento sull'infrastruttura cloud pubblica.

Per verificare che questa situazione sia applicabile alla VM, esegui il seguente comando sulla VM:

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

Esempio di risposta con un token di identità in caso di esito positivo:

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

Se i metadati restituiti non sono un token, ma un messaggio di errore come il seguente, vuol dire che la VM è interessata dal problema:

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

Per risolvere il problema, esegui questi passaggi:

  1. Arresta la VM:

    gcloud compute instances stop VM_NAME
  2. Aggiungi un service account alla VM:

    gcloud compute instances set-service-account VM_NAME \
      --service account SERVICE_ACCOUNT \
      --no-scopes
  3. Avvia la VM:

    gcloud compute instances start VM_NAME
  4. Dopo aver aggiunto il service account mancante, esegui il comando seguente sulla VM per registrare di nuovo SLES:

    sudo registercloudguest --force-new

    Controlla i dettagli nella sezione Nuova registrazione.

Registrazione con protezione proxy

Se le VM sono configurate in modo da utilizzare qualsiasi tipo di software proxy, potresti riscontrare un problema. L'esempio seguente mostra un tentativo di registrare SLES utilizzando 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 su Compute Engine non fornisce assistenza ufficiale per la registrazione del sistema operativo se eseguita tramite intermediari che modificano le comunicazioni originarie, ad esempio proxy di tipo man-in-the-middle (MITM) o non trasparenti.

La soluzione ufficiale per risolvere il problema consiste nel configurare Cloud NAT ed eseguire il routing del traffico delle VM attraverso questo servizio.

Soluzioni alternative comuni

Nuova registrazione

In alcuni casi, la soluzione alternativa per i problemi di registrazione può essere una nuova registrazione.

Per forzare una nuova registrazione, utilizza il seguente comando:

sudo registercloudguest --force-new

In caso di esito positivo, l'output sarà la seguente riga.

Registration succeeded

I dettagli del processo di nuova registrazione sono disponibili in /var/log/cloudregister.

Esempio di operazione riuscita

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

Esempio di operazione non riuscita

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

Annullamento della registrazione

In alcuni casi, ad esempio durante l'upgrade a una release principale, potresti riscontrare i seguenti errori, in quanto il sistema è già registrato a 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.

Per risolvere il problema:

  1. Rimuovi il modulo SUSE Manager Client Tools come descritto nella guida su come aggiungere o eliminare moduli ed estensioni con SUSEConnect.

  2. Annulla la registrazione a SUMA seguendo la guida su come annullare la registrazione di un client SUSE Manager.

  3. Esegui i comandi seguenti dalla VM per rimuovere la registrazione precedente:

      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. Esegui il comando seguente per registrare di nuovo il sistema:

      sudo registercloudguest --force-new

    Controlla i dettagli nella sezione Nuova registrazione.

  5. Al termine del processo di registrazione, aggiorna i servizi e i repository e controlla se sono presenti tutti i repository previsti per il sistema fornito dal server SMT:

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