如何解決升級 EC2 執行個體上的 SUSE 作業系統時發生的問題
我正在升級 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上的 SUSE 作業系統 (OS)。我在升級期間遇到問題,例如執行個體狀態檢查失敗,作業系統已取消註冊或 zypper 命令失敗。
解決方法
檢查執行個體狀態檢查失敗
如果在升級作業系統後執行個體狀態檢查失敗,請參閱由於作業系統出現問題,我的 EC2 Linux 執行個體未能通過執行個體狀態檢查。如何對此問題進行疑難排解?
自動檢查註冊失敗 (僅限受管執行個體)
如果您的執行個體是 AWS Systems Manager 主控台中的受管執行個體,則請執行 AWSSupport-TroubleshootSUSERegistration 自動化文件。AWSSupport-TroubleshootSUSERegistration 自動化文件可協助判斷升級失敗的根本原因。如需詳細資訊,請參閱為什麼我無法將執行 SUSE 的 EC2 執行個體註冊至 SUSE 更新基礎設施構,以便安裝或更新套件?
手動驗證註冊失敗
對於非受管執行個體的執行個體,請檢查下列項目:
判斷執行個體註冊的兩個主要先決條件是:
- 執行個體 billingProducts 或 marketplaceProductCodes 代碼。
- 傳出連線 IP 地址必須屬於 AWS IP 範圍。
1. 執行下列命令以驗證 billingProducts 或 marketplaceProductCodes 代碼:
# 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 雲端執行個體遺失軟體儲存庫,以強制向所有可用儲存庫進行新的註冊。
相關資訊
相關內容
- 已提問 6 個月前lg...
- 已提問 6 個月前lg...
- 已提問 1 年前lg...
- 已提問 10 個月前lg...
- AWS 官方已更新 9 個月前
- AWS 官方已更新 2 年前
- AWS 官方已更新 10 個月前
- AWS 官方已更新 1 年前