在 EC2 執行個體上升級 SUSE 作業系統時,如何解決發生的問題?

2 分的閱讀內容
0

我試過在 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上升級 SUSE 作業系統 (OS),但收到錯誤訊息,例如執行個體狀態檢查未通過、取消註冊的作業系統或 Zypper 命令失敗。

解決方法

檢查執行個體狀態檢查未通過

若為執行個體狀態檢查未通過,請參閱如何對由於作業系統出現問題而未能通過執行個體狀態檢查的 EC2 Linux 執行個體進行疑難排解?

使用 susecloud-repocheck 指令碼自動診斷並修正小問題

susecloud-repocheck 指令碼會執行 OS 儲存庫檢查。還會修正讓執行個體無法註冊至下列 SUSE 更新基礎架構的問題:

  • Microsoft Azure
  • AWS
  • Google Cloud Platform (GCP)
  • 依用量計費 (PAYG) 隨需執行個體

如需詳細資訊,請參閱 SUSE GitHub 儲存庫上的 susecloud-repocheck

若要執行指令碼,請使用下列命令:

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

這段指令碼會在 /var/log/ 目錄 sc-repocheck_<YYMMDD_hhmmss>.tar.xz 中建立日誌。

手動驗證註冊並解決升級失敗

驗證執行個體 billingProducts 或 marketplaceProductCodes 代碼

若為 PAYG Vanilla SLES,請驗證執行個體的 billingProducts 代碼。若為適用於 SAP 應用程式的 PAYG SLES,請驗證 marketplaceProductCodes 代碼。

執行下列命令以驗證 billingProductsmarketplaceProductCodes 代碼:

# /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 公有雲解決方案網站上 AWS 區域的更新伺服器 IP 位址清單

若要驗證目前的註冊狀態,請執行下列命令:

# SUSEConnect -s

在先前的命令輸出中,驗證 Status 參數為 RegisteredNot Registered。如果輸出為 Not Registered,請重新註冊執行個體。

若要從先前註冊中移除項目,請執行下列命令:

# 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. 若要驗證您的 OS 中是否已安裝所需的 cloud-regionsrv-client 和相關相依性套件,請執行下列命令:

    # 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) 常見問答集

AWS 官方
AWS 官方已更新 1 年前