Solução de problemas de registro pré-pago do SLES


Este documento descreve como resolver problemas que você pode encontrar ao conectar instâncias de máquina virtual (VM) do Compute Engine que executam o SUSE Linux Enterprise Server (SLES) pré-pago (PAYG) ao repositório da Ferramenta de gerenciamento de assinaturas (SMT) do SUSE.

Antes de começar

  • Certifique-se de que a VM tenha uma conta de serviço associada.
  • Certifique-se de que a API de metadados de serviço esteja acessível na VM.
  • Garanta a conectividade de rede da VM para os respectivos servidores regionais e servidores SMT
  • Use a ferramenta sc-repocheck para solucionar os problemas automaticamente.
  • Verifique as etapas descritas no guia de solução de problemas do SUSE PAYG .
  • Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar 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. 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 rede

Nome de domínio insolúvel

Você poderá encontrar os seguintes problemas se a VM não conseguir se conectar ao servidor SMT smt-gce.susecloud.net :

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

Esses problemas provavelmente são causados ​​por uma resolução incorreta do nome de domínio do servidor SMT smt-gce.susecloud.net . Este domínio não pode ser resolvido globalmente, portanto você deve definir seu endereço IP de acordo com a região da VM, fazendo o seguinte:

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

cat /etc/hosts | grep -i smt

A saída é semelhante à 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 arquivo /etc/hosts não contiver as mesmas linhas do 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 arquivo para adicionar o endereço IP do SUSE SMT e qualquer outra informação que esteja faltando.

Indisponibilidade de rede

Você poderá encontrar os seguintes erros devido à indisponibilidade da rede, mesmo que a VM consiga resolver o nome de domínio do servidor de atualização 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.

A seguir estão alguns exemplos de erros no arquivo de log /var/log/cloudregister que você 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, execute um teste de conectividade de rede. O exemplo a seguir mostra como testar uma conexão HTTPS usando cURL :

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

A saída do comando contém um código de resposta HTTP ou uma mensagem de erro. A seguir estão respostas e erros comuns:

  • Resposta bem sucedida:

    Response code (>0 is OK): 200
    
  • Erro de tempo limite da solicitação:

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

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

Em determinados cenários, como regras rígidas de firewall do host, o endereço IP padrão associado ao domínio smt-gce.susecloud.net pode não estar disponível. Para garantir que o problema não esteja relacionado apenas ao endereço IP atual, execute testes de conectividade de rede para servidores regionais alternativos. Recupere a lista de servidores regionais fazendo o seguinte:

UI da Web

Acesse 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 por CLI.

  1. Instale o pacote necessário

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

    pint google servers --region us-central1
  3. A saída bem-sucedida contém uma lista de entradas em 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 de servidores SUSE para Google Cloud, visualize os seguintes documentos:

A indisponibilidade da rede pode ser devido à configuração incorreta da VM. Em caso de problemas é necessário realizar diagnósticos de rede para identificar a causa raiz.

Falha no registro

Você poderá 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 esse problema, revise a configuração do Cloud NAT para verificar se o parâmetro mínimo de portas por instância de VM está definido como pelo menos 256 .

Para mais informações, consulte o boletim de suporte do Cloud NAT SUSE com falha no registro e no zypper para instâncias do Compute Engine .

Sem resposta

Se sua VM tiver problemas de comunicação com servidores de atualização e região, você poderá 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.
    ...
    

Esses erros podem ser causados ​​pela ausência de resposta dos servidores de atualização e região. Para verificar se este é o caso, verifique os logs /var/log/cloudregister 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 esse problema, tente um ou mais dos seguintes procedimentos:

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

  • Se você modificou as regras de roteamento de rede padrão, como limitar o acesso público à Internet ou rotear o tráfego por meio de uma rede local, adicione rotas manualmente para IPs SMT por meio do gateway padrão do Compute Engine, fazendo o seguinte:

    1. Acesse a página Rotas no console do Google Cloud.

      Acesse a página Rotas

    2. Na guia Gerenciamento de rotas, procure uma rota que inclua os endereços IP do SUSE SMT e verifique se ela tem o gateway padrão do Compute Engine definido como o próximo salto.

    3. Se a rota estiver faltando, você pode adicioná-la clicando em Criar Rota e inserindo as informações necessárias.

  • Se você estiver usando um balanceador de carga de rede de passagem interna, por exemplo, com software de rede intermediário adicional (como firewalls, NATs personalizados etc.), certifique-se de que o balanceador de carga esteja sendo usado como o próximo salto para o tráfego de VM, fazendo o seguinte:

    1. Acesse a página de instâncias de VM no console do Google Cloud.

      Acesse a página de instâncias de VM

    2. Clique no nome da VM que você deseja verificar. A página de detalhes da VM é aberta.

    3. Na seção Interfaces de rede , clique em Exibir detalhes .

    4. Na seção Detalhes de firewall e 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 Network Load Balancer de passagem interna ou seu endereço IP está definido como o próximo salto.

    Se não houver nenhuma rota que defina o caminho para o intervalo de endereços IP selecionado ou se o próximo salto da rota for diferente do Network Load Balancer de passagem interna, configure o Network Load Balancer de passagem interna como o próximo salto .

  • Se você estiver usando um Network Load Balancer de passagem interna, confirme se ele está localizado na mesma região que a VM.

    1. Acesse a página de instâncias de VM no console do Google Cloud.

      Acesse a página de instâncias de VM

    2. Localize a VM que deseja verificar e anote sua região.

    3. Acesse a página Balanceamento de carga no console do Google Cloud.

      Vá para a página Balanceamento de carga

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

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

Problemas de configuração do sistema operacional

Status de registro desconhecido

Se você não sabe se o SUSE Linux Enterprise Server (SLES) pré-pago (PAYG) está registrado ou não, execute o seguinte comando:

sudo SUSEConnect --status-text

A saída contém a versão e o status de registro 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 status for Not Registered , inicie o processo de novo registro para corrigir o problema.

Você poderá encontrar os seguintes erros se o link do produto base apontar para um arquivo 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 arquivo de produto incorreto (ou seja, sle-module-toolchain.prod ) apontado pelo link simbólico /etc/products.d/baseproduct .

Para resolver esse problema, atualize o link simbólico em /etc/products.d/baseproduct para apontar para o arquivo do produto base apropriado, fazendo o seguinte:

  1. Navegue até 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 for SAP estiver instalado:

      sudo ln -sf SLES.prod baseproduct

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

Você poderá 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 acessar os metadados da instância para tokens de identidade, todas as VMs devem estar associadas a uma conta de serviço .

Para obter mais informações, leia a Atualização da infraestrutura de 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 retornados não forem um token, mas uma mensagem de erro como a seguinte, a VM será afetada:

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

Para remediar esse problema, execute as seguintes etapas:

  1. Pare 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 ausente, execute o seguinte comando na VM para registrar novamente o SLES:

    sudo registercloudguest --force-new

    Verifique os detalhes na seção de recadastramento .

Registro atrás de proxies

Você poderá encontrar um problema se suas VMs estiverem configuradas para utilizar qualquer tipo de software de proxy. O exemplo a seguir demonstra uma tentativa de registrar o SLES usando 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 suporte oficial para registro de sistema operacional quando realizado por meio de intermediários que modificam a comunicação original, como proxies do tipo man-in-the-middle (MITM) ou tipos não transparentes.

A solução oficial para resolver esse problema é configurar o Cloud NAT e rotear o tráfego de VM por meio dele.

Soluções alternativas comuns

Novo registro

Em alguns casos, uma abordagem de recadastramento pode ser usada para solucionar problemas de registro.

Para forçar um novo registro use o seguinte comando:

sudo registercloudguest --force-new

Se for bem-sucedido, a seguinte linha será exibida.

Registration succeeded

Detalhes do processo de novo registro podem ser encontrados em /var/log/cloudregister .

Exemplo de sucesso

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

Cancelamento de registro

Em alguns casos, como atualização de versão principal, você poderá encontrar os seguintes erros porque o sistema já está registrado 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 Adicionando ou excluindo módulos e extensões com SUSEConnect .

  2. Cancele o registro do SUMA seguindo o guia Como cancelar o registro de um cliente SUSE Manager .

  3. Execute os seguintes comandos da VM para limpar o registro 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 registrar o sistema novamente:

      sudo registercloudguest --force-new

    Verifique os detalhes na seção de recadastramento .

  5. Terminado o processo de cadastro, atualize os serviços e repositórios e verifique se todos os repositórios esperados para o sistema fornecido pelo servidor SMT estão presentes:

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