SLES 사용한 만큼만 지불 등록 문제 해결


이 문서에서는 사용한 만큼만 지불(PAYG) SUSE Linux Enterprise Server(SLES)를 실행하는 Compute Engine 가상 머신(VM) 인스턴스를 SUSE 구독 관리 도구(SMT) 저장소에 연결할 때 발생할 수 있는 문제의 해결 방법에 대해 설명합니다.

시작하기 전에

  • VM에 연결된 서비스 계정이 있는지 확인합니다.
  • VM에서 Service Metadata API에 액세스할 수 있는지 확인합니다.
  • sc-repocheck 도구를 사용하여 문제를 자동으로 문제 해결합니다.
  • SUSE PAYG 문제 해결 가이드에 설명된 단계를 확인합니다.
  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.

    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.

네트워크 문제

확인할 수 없는 도메인 이름

VM이 smt-gce.susecloud.net SMT 서버에 연결할 수 없으면 다음 문제가 발생할 수 있습니다.

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

이러한 문제는 SMT 서버 도메인 이름 smt-gce.susecloud.net의 잘못된 확인으로 인해 발생할 수 있습니다. 이 도메인은 전역적으로 확인할 수 없으므로 다음을 수행하여 VM 리전에 따라 IP 주소를 설정해야 합니다.

/etc/hosts 파일에서 smt-gce.susecloud.net 도메인의 항목이 포함되었는지 확인합니다.

cat /etc/hosts | grep -i smt

출력이 다음과 비슷하게 표시되지만 IP 주소가 다를 수 있습니다.

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

/etc/hosts 파일에 이전 예시와 동일한 행이 없으면 다음을 수행합니다.

  1. SUSE SMT IP 주소 목록에서 VM 리전에 해당하는 IP 주소를 찾습니다.

  2. 파일을 수정해서 SUSE SMT IP 주소 및 누락된 기타 정보를 추가합니다.

네트워크 사용 불가

VM이 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.

다음은 조사 중 발견할 수 있는 /var/log/cloudregister 로그 파일의 일부 오류 예시입니다.

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

문제 원인에 대한 자세한 내용을 보려면 네트워크 연결 테스트를 수행합니다. 다음 예시에서는 cURL을 사용하여 HTTPS 연결을 테스트하는 방법을 보여줍니다.

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

명령어 출력에는 HTTP 응답 코드 또는 오류 메시지가 포함됩니다. 다음은 일반적인 응답 및 오류입니다.

  • 성공적인 응답:

    Response code (>0 is OK): 200
    
  • 요청 시간 초과 오류:

    Response code (>0 is OK): 000
    curl: (28) Connection timed out after 5001 milliseconds
    
  • 확인할 수 없는 도메인 오류:

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

엄격한 호스트 방화벽 규칙과 같은 일부 시나리오에서는 smt-gce.susecloud.net 도메인과 연결된 기본 IP 주소를 사용하지 못할 수 있습니다. 문제가 현재 IP 주소와만 연결된 것이 아닌지 확인하려면 대체 리전 서버에 대해 네트워크 연결 테스트를 수행합니다. 다음을 수행하여 리전 서버 목록을 검색합니다.

WebUI

SUSE WebUI로 이동하여 리전 업데이트 서버 목록을 가져옵니다.

CLI

pint 도구를 사용해서 CLI를 통해 리전 업데이트 서버 목록을 가져옵니다.

  1. 필수 패키지 설치

    sudo zypper install python3-susepubliccloudinfo
    
  2. 특정 리전에 다음 명령어 사용

    pint google servers --region us-central1
    
  3. 성공한 출력에는 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>
    

Google Cloud에 대한 전체 SUSE 서버 IP 목록을 찾으려면 다음 문서를 확인합니다.

VM 구성이 잘못되어 네트워크가 사용 불가 상태가 될 수 있습니다. 문제가 발생한 경우 네트워크 진단을 수행하여 근본 원인을 식별해야 합니다.

등록 실패

Cloud NAT에서 비공개 IP 주소가 포함된 VM이 있으면 다음 오류가 발생할 수 있습니다.

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

이 문제를 해결하려면 Cloud NAT 구성을 검토해서 VM 인스턴스당 최소 포트 매개변수가 최소한 160 이상으로 설정되었는지 확인합니다.

자세한 내용은 Cloud NAT 뒤에서 Compute Engine 인스턴스의 등록 및 Zypper 실패 SUSE 지원 게시판을 확인하세요.

응답 없음

VM에 업데이트 및 리전 서버와 통신 문제가 발생하면 다음 오류가 관찰될 수 있습니다.

  • SUSEConnect 오류:

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

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

이러한 오류는 업데이트 및 리전 서버의 응답이 없어서 발생할 수 있습니다. 이 경우에 해당하는지 확인하려면 비슷한 콘텐츠에 대해 /var/log/cloudregister 로그를 확인합니다.

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

이 문제를 해결하려면 다음 중 하나 이상을 사용해 보세요.

  • VM에 외부 IP 주소가 있거나 Virtual Private Cloud 서브넷에 NAT(Cloud NAT 또는 커스텀 솔루션)가 사용되는지 확인합니다.

  • 온프레미스 네트워크를 통한 공개 인터넷 액세스 또는 라우팅 트래픽 제한과 같은 기본 네트워크 라우팅 규칙을 수정한 경우 다음을 수행해서 Compute Engine의 기본 게이트웨이를 통해 SMT IP에 대해 경로를 수동으로 추가합니다.

    1. Google Cloud 콘솔의 경로 페이지로 이동합니다.

      경로 페이지로 이동

    2. 경로 관리 탭 아래에서 SUSE SMT IP 주소가 포함된 경로를 확인하고 Compute Engine 기본 게이트웨이가 다음 홉으로 설정되었는지 확인합니다.

    3. 경로가 누락되었으면 경로 만들기를 클릭하고 필요한 정보를 입력하여 이를 추가할 수 있습니다.

  • 예를 들어 추가 중개 네트워크 소프트웨어(예: 방화벽, 커스텀 NAT 등)와 함께 내부 패스 스루 네트워크 부하 분산기를 사용하는 경우 다음을 수행하여 부하 분산기가 VM 트래픽의 다음 홉으로 사용되는지 확인합니다.

    1. Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.

      VM 인스턴스 페이지로 이동

    2. 확인할 VM의 이름을 클릭합니다. VM 세부정보 페이지가 열립니다.

    3. 네트워크 인터페이스 섹션에서 세부정보 보기를 클릭합니다.

    4. 방화벽 및 경로 세부정보 섹션에서 원하는 IP 주소 범위에 대한 경로를 정의하는 경로를 찾습니다.

    5. 경로 이름을 클릭하고 내부 패스 스루 네트워크 부하 분산기나 해당 IP 주소가 다음 홉으로 설정되었는지 확인합니다.

    원하는 IP 주소 범위에 대한 경로를 정의하는 경로가 없거나 경로의 다음 홉이 내부 패스 스루 네트워크 부하 분산기와 다르면 내부 패스 스루 네트워크 부하 분산기를 다음 홉으로 설정합니다.

  • 내부 패스 스루 네트워크 부하 분산기를 사용하는 경우 내부 패스 스루 네트워크 부하 분산기가 VM과 동일한 리전에 있는지 확인합니다.

    1. Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.

      VM 인스턴스 페이지로 이동

    2. 확인할 VM을 찾고 해당 리전을 적어 둡니다.

    3. Google Cloud 콘솔에서 부하 분산 페이지로 이동합니다.

      부하 분산 페이지로 이동

    4. 사용된 내부 패스 스루 네트워크 부하 분산기를 찾아서 VM과 동일한 리전에 있는지 확인합니다.

    5. VM 및 내부 패스 스루 네트워크 부하 분산기가 같은 리전에 있지 않으면 전역 액세스를 사용 설정합니다.

OS 구성 문제

알 수 없는 등록 상태

사용한 만큼만 지불(PAYG) SUSE Linux Enterprise Server(SLES)가 등록되었는지 여부를 알 수 없으면 다음 명령어를 실행합니다.

sudo SUSEConnect --status-text

출력에는 SUSE Linux Enterprise Server를 포함하여 SUSE 제품의 버전 및 등록 상태가 포함됩니다.

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

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

  Registered

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

상태가 Not Registered이면 재등록 프로세스를 시작하여 문제를 해결합니다.

기본 제품 링크가 잘못된 제품 파일을 가리키는 경우 다음 오류가 발생할 수 있습니다.

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.

이 오류는 /etc/products.d/baseproduct 심볼릭 링크로 연결된 제품 파일(예: sle-module-toolchain.prod)이 잘못된 경우에 발생합니다.

이 문제를 해결하려면 다음을 수행하여 적합한 기본 제품 파일을 가리키도록 /etc/products.d/baseproduct의 심볼릭 링크를 업데이트합니다.

  1. /etc/products.d 디렉터리로 이동합니다.

      cd /etc/products.d
    
  2. SLES for SAP가 설치된 경우 SLES.prodSLES_SAP.prod로 바꿔서 다음 명령어를 실행합니다.

      sudo ln -sf SLES.prod baseproduct
    

인스턴스 ID 정보 사용 불가

인스턴스 ID 정보를 VM에 사용할 수 없으면 다음 오류가 발생할 수 있습니다.

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

ID 토큰에 대해 인스턴스 메타데이터를 액세스하려면 모든 VM이 서비스 계정과 연결되어 있어야 합니다.

자세한 내용은 퍼블릭 클라우드 인프라 업데이트를 참조하세요.

VM이 이 상황과 관련이 있는지 확인하려면 VM에서 다음 명령어를 실행합니다.

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

ID 토큰이 포함된 성공적인 응답의 예시:

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

반환된 메타데이터가 토큰이 아니고 다음과 같은 오류 메시지이면 VM이 영향을 받습니다.

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

이 문제를 해결하려면 다음 단계를 수행합니다.

  1. VM을 중지합니다.

    gcloud compute instances stop VM_NAME
    
  2. VM에 서비스 계정을 추가합니다.

    gcloud compute instances set-service-account VM_NAME \
      --service account SERVICE_ACCOUNT \
      --no-scopes
    
  3. 다음을 실행하여 VM을 시작합니다.

    gcloud compute instances start VM_NAME
    
  4. 누락된 서비스 계정을 추가한 후 VM에서 다음 명령어를 실행하여 SLES를 재등록합니다.

    sudo registercloudguest --force-new
    

    재등록 섹션에서 세부정보를 확인합니다.

프록시 뒤에서 등록

모든 종류의 프록시 소프트웨어를 사용하도록 VM이 구성되 경우 문제가 발생할 수 있습니다. 다음 예시는 HTTP 프록시를 통해 SLES를 등록하려는 시도를 보여줍니다.

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"

Compute Engine에서 SUSE는 중간자(MITM) 또는 비투명 유형의 프록시와 같이 원본 통신을 수정하는 중간 항목을 통해 수행될 때 운영체제 등록에 대한 공식 지원을 제공하지 않습니다.

이 문제를 해결하기 위한 공식적인 솔루션은 Cloud NAT를 설정하고 이를 통해 VM 트래픽을 라우팅하는 것입니다.

일반적인 해결 방법

재등록

일부 경우에는 재등록 접근 방법을 사용해서 등록 문제를 해결할 수 있습니다.

신규 등록을 강제하려면 다음 명령어를 사용합니다.

sudo registercloudguest --force-new

성공하면 다음 줄이 출력됩니다.

Registration succeeded

재등록 프로세스에 대한 세부정보는 /var/log/cloudregister에서 찾을 수 있습니다.

성공적인 예시

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

실패한 예시

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

등록 취소

주요 출시 업그레이드와 같은 일부 경우에는 시스템이 이미 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.

다음을 수행하여 문제를 해결합니다.

  1. 모듈 및 확장 프로그램 삭제 가이드에 설명된 대로 SUSE 관리자 클라이언트 도구를 삭제합니다.

  2. SUSE 관리자 클라이언트 등록 취소 방법 가이드에 따라 SUMA에서 등록을 취소합니다.

  3. VM에서 다음 명령어를 실행하여 이전 등록을 삭제합니다.

      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. 다음 명령어를 실행하여 시스템을 다시 등록합니다.

      sudo registercloudguest --force-new
    

    재등록 섹션에서 세부정보를 확인합니다.

  5. 등록 프로세스가 완료되면 서비스 및 저장소를 새로고침하고 SMT 서버에서 제공된 시스템에 대해 모든 필요한 저장소가 있는지 확인합니다.

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