Resolução de problemas de registo de pagamento conforme o uso do SLES


Este documento descreve como resolver problemas que pode encontrar quando liga instâncias de máquinas virtuais (MV) do Compute Engine que executam o SUSE Linux Enterprise Server (SLES) de pagamento conforme o uso (PAYG) ao repositório da ferramenta de gestão de subscrições (SMT) da SUSE.

Antes de começar

  • Certifique-se de que a VM tem uma conta de serviço associada.
  • Certifique-se de que a API Service Metadata está acessível a partir da VM.
  • Certifique-se de que existe conetividade de rede da VM para os respetivos servidores de região e servidores SMT
  • Use a ferramenta sc-repocheck para resolver automaticamente os problemas.
  • Consulte os passos descritos no guia de resolução de problemas de SUSE PAYG.
  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Google Cloud serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se no Compute Engine selecionando uma das seguintes opções:

    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. Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    2. Set a default region and zone.

Problemas de rede

Nome de domínio não resolvível

Pode encontrar os seguintes problemas se a VM não conseguir estabelecer ligação ao servidor SMT:smt-gce.susecloud.net

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

Estes problemas são provavelmente causados por uma resolução incorreta do nome do domínio do servidor SMTP smt-gce.susecloud.net. Este domínio não é resolvível globalmente, pelo que tem de definir o respetivo endereço IP de acordo com a região da VM, fazendo o seguinte:

Verifique o ficheiro /etc/hosts para se certificar de que contém uma entrada com o domínio smt-gce.susecloud.net.

cat /etc/hosts | grep -i smt

O resultado é semelhante ao seguinte, mas o endereço IP pode ser diferente:

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

Se o ficheiro /etc/hosts não contiver as mesmas linhas que o exemplo anterior, faça o seguinte:

  1. Encontre um endereço IP que corresponda à região da sua VM na lista de endereços IP do SUSE SMT.

  2. Edite o ficheiro para adicionar o endereço IP do SUSE SMT e quaisquer outras informações em falta.

Indisponibilidade da rede

Pode encontrar os seguintes erros devido à indisponibilidade da rede, mesmo que a VM consiga resolver o nome do domínio do servidor de atualizações do Compute Engine:

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.

Seguem-se alguns exemplos de erros no ficheiro de registo /var/log/cloudregister que pode encontrar durante a investigação:

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 saber mais sobre a causa do problema, faça um teste de conetividade de rede. O exemplo seguinte mostra como testar uma ligação HTTPS através do comando cURL:

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

O resultado do comando contém um código de resposta HTTP ou uma mensagem de erro. Seguem-se as respostas e os erros comuns:

  • Resposta com êxito:

    Response code (>0 is OK): 200
    
  • Erro de tempo limite de pedido:

    Response code (>0 is OK): 000
    curl: (28) Connection timed out after 5001 milliseconds
    
  • Erro de domínio não resolvível:

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

Em determinados cenários, como regras de firewall de anfitrião rigorosas, o endereço IP predefinido associado ao domínio smt-gce.susecloud.net pode não estar disponível. Para garantir que o problema não está apenas relacionado com o endereço IP atual, faça testes de conetividade de rede para servidores regionais alternativos. Apresente a lista de servidores regionais fazendo o seguinte:

WebUI

Aceda à SUSE WebUI para obter a lista de servidores de atualização regionais.

CLI

Use a ferramenta pint para obter a lista de servidores de atualização regionais através da CLI.

  1. Instale o pacote necessário

    sudo zypper install python3-susepubliccloudinfo
  2. Use o seguinte comando com uma região específica

    pint google servers --region us-central1
  3. A saída bem-sucedida contém uma lista de entradas no 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 a lista completa de IPs do servidor SUSE para Google Cloud, consulte os seguintes documentos:

A indisponibilidade da rede pode dever-se a uma configuração incorreta da VM. Em caso de problemas, é necessário realizar diagnósticos de rede para identificar a causa principal.

Falha ao registar

Pode encontrar o seguinte erro se tiver VMs com um endereço IP privado no 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, reveja a configuração do Cloud NAT para verificar se o parâmetro minimum ports per VM instance está definido para, pelo menos, 256.

Para mais informações, consulte o boletim de apoio técnico da SUSE: falha no registo e no zypper para instâncias do Compute Engine atrás do Cloud NAT.

Sem resposta

Se a sua VM tiver problemas de comunicação com os servidores de atualização e de região, pode observar os seguintes erros:

  • Erro SUSEConnect:

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

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

Estes erros podem ser causados pela ausência de uma resposta dos servidores de atualização e de região. Para verificar se é este o caso, consulte os /var/log/cloudregisterregistos para conteúdo semelhante:

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, experimente uma ou mais das seguintes opções:

  • Confirme se a VM tem um endereço IP externo ou se a sub-rede da nuvem privada virtual usa um NAT (Cloud NAT ou solução personalizada).

  • Se modificou as regras de encaminhamento de rede predefinidas, como limitar o acesso à Internet pública ou encaminhar tráfego através de uma rede no local, adicione rotas manualmente para IPs SMT através do gateway predefinido do Compute Engine, fazendo o seguinte:

    1. Aceda à página Rotas na Google Cloud consola.

      Aceda à página Rotas

    2. No separador Gestão de trajetos, procure um trajeto que inclua os endereços IP do SUSE SMT e verifique se tem o gateway predefinido do Compute Engine definido como o próximo salto.

    3. Se a rota estiver em falta, pode adicioná-la clicando em Criar rota e introduzindo as informações necessárias.

  • Se estiver a usar um Network Load Balancer de encaminhamento interno, por exemplo, com software de rede intermediário adicional (como firewalls, NATs personalizados, etc.), certifique-se de que o balanceador de carga está a ser usado como o salto seguinte para o tráfego de VMs, fazendo o seguinte:

    1. Aceda à página Instâncias de VM na Google Cloud consola.

      Aceda à página de instâncias de VM

    2. Clique no nome da VM que quer verificar. É apresentada a página Detalhes da VM.

    3. Na secção Interfaces de rede, clique em Ver detalhes.

    4. Na secção Detalhes da firewall e das rotas, localize a rota que define o caminho para o intervalo de endereços IP selecionado.

    5. Clique no nome da rota e confirme se o balanceador de carga de rede de passagem interna ou o respetivo endereço IP está definido como o salto seguinte.

    Se não existir um trajeto que defina o caminho para o intervalo de endereços IP selecionado ou se o próximo salto do trajeto for diferente do balanceador de carga de rede de passagem interno, configure o balanceador de carga de rede de passagem interno como o próximo salto.

  • Se estiver a usar um Network Load Balancer de encaminhamento interno, confirme que está localizado na mesma região que a VM.

    1. Aceda à página Instâncias de VM na Google Cloud consola.

      Aceda à página de instâncias de VM

    2. Localize a VM que quer verificar e anote a respetiva região.

    3. Aceda à página Equilíbrio de carga na Google Cloud consola.

      Aceda à página Balanceamento de carga

    4. Localize o Network Load Balancer de encaminhamento interno usado e verifique se está na mesma região que a VM.

    5. Se a VM e o Network Load Balancer de passagem interno não estiverem na mesma região, ative o acesso global.

Problemas de configuração do SO

Estado de registo desconhecido

Se não souber se o seu SUSE Linux Enterprise Server (SLES) de pagamento conforme o uso (PAYG) está registado, execute o seguinte comando:

sudo SUSEConnect --status-text

O resultado contém a versão e o estado de registo dos produtos SUSE, incluindo o SUSE Linux Enterprise Server.

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

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

  Registered

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

Se o estado for Not Registered, inicie o processo de novo registo para corrigir o problema.

Pode deparar-se com os seguintes erros se o link do produto base apontar para um ficheiro de produto incorreto:

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 erro é causado por um ficheiro de produto incorreto (ou seja, sle-module-toolchain.prod) para o qual o link simbólico /etc/products.d/baseproduct aponta.

Para resolver este problema, atualize a ligação simbólica em /etc/products.d/baseproduct para apontar para o ficheiro do produto base adequado, fazendo o seguinte:

  1. Navegue para o diretório /etc/products.d

      cd /etc/products.d
  2. Execute o seguinte comando substituindo SLES.prod por SLES_SAP.prod se o SLES para SAP estiver instalado:

      sudo ln -sf SLES.prod baseproduct

Indisponibilidade das informações de identidade da instância

Pode encontrar os seguintes erros se as informações de identidade da instância não estiverem disponíveis para a VM:

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

Para aceder aos metadados da instância para tokens de identidade, todas as VMs têm de estar associadas a uma conta de serviço.

Para mais informações, leia a atualização da infraestrutura da nuvem pública.

Para verificar se a VM é relevante para esta situação, execute o seguinte comando na VM:

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

Exemplo de uma resposta bem-sucedida com um token de identidade:

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

Se os metadados devolvidos não forem um token, mas uma mensagem de erro, como a seguinte, a VM é afetada:

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

Para corrigir este problema, siga estes passos:

  1. Parar a VM:

    gcloud compute instances stop VM_NAME
  2. Adicione uma conta de serviço à VM:

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

    gcloud compute instances start VM_NAME
  4. Depois de adicionar a conta de serviço em falta, execute o seguinte comando a partir da VM para voltar a registar o SLES:

    sudo registercloudguest --force-new

    Verifique os detalhes na secção de novo registo.

Registo através de proxies

Pode encontrar um problema se as suas VMs estiverem configuradas para usar qualquer tipo de software de proxy. O exemplo seguinte demonstra uma tentativa de registar o SLES através de um 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"

O SUSE no Compute Engine não oferece apoio técnico oficial para o registo do sistema operativo quando este é realizado através de intermediários que modificam a comunicação original, como proxies de man-in-the-middle (MITM) ou tipos não transparentes.

Google Cloud

A solução oficial para resolver este problema é configurar o Cloud NAT e encaminhar o tráfego de VMs através dele.

Soluções alternativas comuns

Novo registo

Em alguns casos, pode usar uma abordagem de novo registo para contornar problemas de registo.

Para forçar um novo registo, use o seguinte comando:

sudo registercloudguest --force-new

Se for bem-sucedido, é apresentada a seguinte linha.

Registration succeeded

Pode encontrar detalhes sobre o processo de novo registo no /var/log/cloudregister.

Exemplo bem-sucedido

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

Exemplo com falha

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

Anulação do registo

Em alguns casos, como uma atualização de versão principal, pode encontrar os seguintes erros porque o sistema já está registado no 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.

Resolva o problema fazendo o seguinte:

  1. Remova o módulo SUSE Manager Client Tools, conforme descrito no guia de adição ou eliminação de módulos e extensões com o SUSEConnect.

  2. Anule o registo do SUMA seguindo o guia Como anular o registo de um cliente do SUSE Manager.

  3. Execute os seguintes comandos a partir da VM para limpar o registo antigo:

      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. Execute o seguinte comando para registar novamente o sistema:

      sudo registercloudguest --force-new

    Verifique os detalhes na secção de novo registo.

  5. Quando o processo de registo estiver concluído, atualize os serviços e os repositórios, e verifique se todos os repositórios esperados para o sistema fornecidos pelo servidor SMT estão presentes:

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