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

2 分的閱讀內容
0

我正在升級 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上的 SUSE 作業系統 (OS)。我在升級期間遇到問題,例如執行個體狀態檢查失敗,作業系統已取消註冊或 zypper 命令失敗。

解決方法

檢查執行個體狀態檢查失敗

如果在升級作業系統後執行個體狀態檢查失敗,請參閱由於作業系統出現問題,我的 EC2 Linux 執行個體未能通過執行個體狀態檢查。如何對此問題進行疑難排解?

自動檢查註冊失敗 (僅限受管執行個體)

如果您的執行個體是 AWS Systems Manager 主控台中的受管執行個體,則請執行 AWSSupport-TroubleshootSUSERegistration 自動化文件。AWSSupport-TroubleshootSUSERegistration 自動化文件可協助判斷升級失敗的根本原因。如需詳細資訊,請參閱為什麼我無法將執行 SUSE 的 EC2 執行個體註冊至 SUSE 更新基礎設施構,以便安裝或更新套件?

手動驗證註冊失敗

對於非受管執行個體的執行個體,請檢查下列項目:

判斷執行個體註冊的兩個主要先決條件是:

  • 執行個體 billingProductsmarketplaceProductCodes 代碼。
  • 傳出連線 IP 地址必須屬於 AWS IP 範圍。

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

# curl -s http://169.254.169.254/latest/dynamic/instance-identity/document

以下是下列命令的範例輸出:

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

2.    檢查 /etc/hosts 檔案中是否有 SMT 註冊項目。尋找此行後面的項目,# 由 SMT 註冊新增,請勿移除,亦請保留評論

每個 AWS 區域都有不同的 SMT 伺服器。若要在不使用 pint 工具的情況下尋找某個區域的 SMT 伺服器 IP 地址,請參閱 susepubliccloudinfo.suse.com 網站上的 SMT 伺服器 IP 地址的清單

請執行下列命令以驗證註冊狀態:

# SUSEConnect -s

在上述命令輸出中,驗證狀態參數為已註冊未註冊。如果輸出為未註冊,則請嘗試重新註冊執行個體。

若要重新註冊,最佳實務是移除先前的註冊。請執行下列命令以清除憑證和儲存庫:

SUSEConnect --de-register
SUSEConnect --cleanup
rm -f /etc/SUSEConnect
rm -rf /etc/zypp/credentials.d/*
rm -rf /etc/zypp/repos.d/*
rm -f /etc/zypp/services.d/*

此外,在 /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

在清除項目之後,執行下列命令以重新註冊執行個體:

# registercloudguest --force-new
# SUSEConnect -s

如果註冊失敗,則分析 /var/log/cloudregister 中的日誌來判斷失敗原因。以下是日誌中的範例錯誤:

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

對常見註冊錯誤進行疑難排解

1.    執行下列命令,以驗證 cloud-regionsrv-client 版本是 9.0.0 或更新版本:

rpm -qa | grep cloud-regionsrv-client

以下是上述命令中的範例輸出:

cloud-regionsrv-client-9.0.3-52.16.1
cloud-regionsrv-client-plugin-ec2-1.0.0-52.16.1

請執行下列命令以更新套件:

# zypper update cloud-regionsrv-client

2.    執行下列命令以驗證作業系統中是否存在所有必要的套件:

# rpm -qa | grep -iE "cloud-regionsrv-client|regionServiceClientConfigEC2|ec2metadata|SUSEConnect|libzypp|ruby-common"

以下是上述命令中的範例輸出:

libzypp-17.31.8-150400.3.14.1.x86_64
python3-ec2metadata-4.0.0-150000.3.9.1.noarch
ruby-common-2.1-3.15.noarch
suseconnect-ng-1.0.0~git0.faee7c196dc1-150400.3.7.3.x86_64
libsuseconnect-1.0.0~git0.faee7c196dc1-150400.3.7.3.x86_64
suseconnect-ruby-bindings-1.0.0~git0.faee7c196dc1-150400.3.7.3.x86_64
regionServiceClientConfigEC2-4.1.0-150000.3.24.1.noarch
cloud-regionsrv-client-10.0.8-150000.6.86.1.noarch
cloud-regionsrv-client-plugin-ec2-1.0.2-150000.6.86.1.noarch

如果套件是舊版或遺失,且作業系統無法存取 zypper,則請離線完成升級。如需詳細資訊,請參閱 suse.com 網站上的公有雲端基礎設施更新。公有雲端基礎設施更新文件包括升級所需的模組和最新的註冊套件:

# wget --no-check-certificate https://52.15.49.139/late_instance_offline_update_ec2_<arch>_<slebase>.tar.gz
# sha1sum late_instance_offline_update_ec2_<arch>_<slebase>.tar.gz
# tar -xf late_instance_offline_update_ec2_<arch>_<slebase>.tar.gz
# cd <arch>
# zypper --no-refresh --no-remote --non-interactive in *.rpm

3.    識別遺失的儲存庫。

如果您的 SUSE 執行個體遺失軟體儲存庫,則請參閱 AWS 或 Azure SUSE 雲端執行個體遺失軟體儲存庫,以強制向所有可用儲存庫進行新的註冊。

相關資訊

Amazon EC2 上的 SUSE Linux Enterprise Server (SLES) 常見問答集

AWS 官方
AWS 官方已更新 10 個月前