如何故障排除在我的 EC2 实例上升级 SUSE 操作系统时遇到的问题?

2 分钟阅读
0

我尝试在 Amazon Elastic Compute Cloud(Amazon EC2)实例上升级 SUSE 操作系统(OS),但收到了错误,例如实例状态检查失败、已注销的操作系统或 Zypper 命令失败。

解决方法

检查实例状态检查是否失败

有关实例状态检查失败,请参阅如何对因操作系统问题而未能通过实例状态检查的 EC2 Linux 实例进行故障排除?

使用 susecloud-repocheck 脚本自动诊断和修复小问题

susecloud-repocheck 脚本会检查操作系统存储库。而且,它还纠正了阻止实例注册到以下 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 代码。对于 PAYG SLES for SAP Applications,请验证 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 Public Cloud Solutions 网站上的 list of update server IP addresses for AWS Regions

要验证当前的注册状态,请运行以下命令:

# SUSEConnect -s

在前面的命令输出中,验证 Status 参数是 Registered 还是 Not 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. 要验证您的操作系统中是否安装了所需的 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 传输到非工作主机。然后,执行 Zypper 安装 rpm 软件包

  2. 确定缺少的存储库。

  3. 如果您的 SUSE 实例缺少软件存储库,则运行以下命令强制向所有可用存储库进行新注册。

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

相关信息

Amazon EC2 上的 SUSE Linux Enterprise Server(SLES)常见问题解答

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