Skip to content

EC2 인스턴스에서 SUSE 운영 체제를 업그레이드할 때 발생하는 문제를 해결하려면 어떻게 해야 하나요?

3분 분량
0

Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 SUSE 운영 체제(OS)를 업그레이드하려고 했는데 인스턴스 상태 확인 실패, 등록 취소된 OS 또는 Zypper 명령 실패와 같은 오류가 발생했습니다.

해결 방법

인스턴스 상태 확인 실패 찾기

인스턴스 상태 확인 실패의 경우, 운영 체제 문제로 인해 인스턴스 상태 확인에 실패한 EC2 Linux 인스턴스 문제를 해결하려면 어떻게 해야 하나요?를 참조하세요.

susecloud-repocheck 스크립트를 사용하여 사소한 문제를 자동으로 진단하고 수정합니다.

susecloud-repocheck 스크립트는 OS 리포지토리 검사를 수행합니다. 또한 다음과 같은 인스턴스에 대해 인스턴스가 SUSE 업데이트 인프라에 등록되지 않는 문제를 수정합니다.

  • Microsoft Azure
  • AWS
  • Google Cloud Platform(GCP)
  • Pay-as-you-go(PAYG) 온디맨드 인스턴스

자세한 내용은 SUSE GitHub 리포지토리의 susecloud-repocheck를 참조하세요.

스크립트를 실행하려면 다음 명령을 사용합니다.

$ python3 <(curl -sL https://raw.githubusercontent.com/SUSE/susecloud-repocheck/main/sc-repocheck.py)

스크립트는 sc-repocheck_<YYMMDD_hhmmss>.tar.xz라는 /var/log/ 디렉토리에 로그를 만듭니다.

수동으로 등록을 확인하고 업그레이드 실패를 해결합니다.

billingProducts 또는 marketplaceProductCodes 인스턴스 코드 확인

PAYG vanilla SLES의 경우 인스턴스의 billingProducts 코드를 확인합니다. SAP 애플리케이션용 PAYG SLES의 경우 marketplaceProductCodes 코드를 확인합니다.

다음 명령을 실행하여 billingProducts 또는 marketplaceProductCodes 코드 확인:

# /usr/bin/curl --noproxy '*' -w "\n" -s -H "X-aws-ec2-metadata-token: $(curl --noproxy '*' -s -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 300")" http://169.254.169.254/latest/dynamic/instance-identity/document | grep -E 'billingProducts|marketplaceProductCodes'

다음은 명령의 출력입니다.

 billingProducts" : [ "bp-********" ]

또는

"marketplaceProductCodes" : \[ "\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*" \],

/etc/hosts 파일에서 SMT 등록 항목 확인

/etc/hosts 파일에서 # Added by SMT registration do not remove, retain comment as well 줄 다음에 오는 항목을 찾습니다.

참고: AWS 리전 내에 둘 이상의 SUSE 퍼블릭 클라우드 업데이트 서버가 있습니다. 자세한 내용은 SUSE Public Cloud Solutions 웹 사이트에서 AWS 리전의 업데이트 서버 IP 주소 목록을 참조하세요.

현재 등록 상태를 확인하려면 다음 명령을 실행합니다.

# SUSEConnect -s

위 명령 출력에서 상태 파라미터가 등록됨 또는 등록되지 않음인지 확인합니다. 출력이 등록되지 않음인 경우 인스턴스를 다시 등록합니다.

이전 등록에서 항목을 제거하려면 다음 명령을 실행합니다.

# registercloudguest --clean

인스턴스를 다시 등록하려면 다음 명령을 실행합니다.

# registercloudguest --force-new

현재 등록 상태를 확인하려면 다음 명령을 실행합니다.

# SUSEConnect -s

등록에 실패하면 /var/log/cloudregister의 로그를 검토하여 실패 원인을 파악하세요. 다음은 로그의 오류 예시입니다:

SUSEConnect error: Errno::ENOSPC: No space left on device

/etc/hosts 파일에서 중복되거나 추가 SMT 등록 항목을 제거합니다. 다음은 SMT 등록에 의해 추가된 샘플 항목입니다.

# vi /etc/hosts
# Added by SMT registration do not remove, retain comment as well
54.246.90.215 smt-ec2.susecloud.net smt-ec2

일반적인 등록 오류 문제 해결

일반적인 등록 오류를 해결하려면 다음 단계를 완료하세요.

  1. 필요한 cloud-regionsrv-client 및 관련 종속성 패키지가 OS에 설치되어 있는지 확인하려면 다음 명령을 실행합니다.

    # rpm -qa | grep -E 'cloud-regionsrv-client|cloud-regionsrv-client-plugin-ec2|regionServiceClientConfigEC2|SUSEConnect|suseconnect-ng|python3-ec2metadata|python3-dnspython|python3-lxml|python3-cssselect|python3-M2Crypto|python3-zypp-plugin|libzypp|ruby-common'

    다음은 위 명령의 샘플입니다:

    libzypp-17.31.20-150400.3.40.1.x86_64
    suseconnect-ng-1.6.0~git0.31371c8-150400.3.22.1.x86_64
    python3-zypp-plugin-0.6.3-150000.4.2.1.noarch
    python3-cssselect-1.0.3-150000.3.3.1.noarch
    python3-M2Crypto-0.38.0-150400.7.64.x86_64
    python3-lxml-4.7.1-150200.3.10.1.x86_64
    regionServiceClientConfigEC2-4.1.1-150000.3.27.1.noarch
    ruby-common-2.1-3.15.noarch
    python3-ec2metadata-5.0.0-150000.3.12.1.noarch
    cloud-regionsrv-client-10.1.6-150000.6.105.1.noarch
    cloud-regionsrv-client-plugin-ec2-1.0.4-150000.6.105.1.noarch
    python3-dnspython-1.15.0-150000.3.2.1.noarch

    패키지가 오래되었거나 누락되었고 운영 체제에서 Zypper에 액세스할 수 없는 경우 오프라인으로 업그레이드를 완료합니다. 오프라인으로 업그레이드하려면 다른 작업 호스트에서 Zypper를 사용하여 rpm 패키지를 다운로드하고 rpm을 작동하지 않는 호스트로 전송합니다. 그런 다음 rpm 패키지의 Zypper 설치를 수행합니다

  2. 누락된 리포지토리를 식별합니다.

  3. SUSE 인스턴스에 소프트웨어 리포지토리가 없는 경우 다음 명령을 실행하여 사용 가능한 모든 리포지토리에 새 등록을 강제 적용합니다.

    # registercloudguest --force-new
    # SUSEConnect --list-extensions
    # zypper lr --uri

관련 정보

Amazon EC2의 SUSE Linux Enterprise Server(SLES) FAQ

AWS 공식업데이트됨 일 년 전