如何疑難排解 EC2 Linux 執行個體上的 AWS 複寫代理程式安裝失敗?

4 分的閱讀內容
0

我正在安裝 AWS Application Migration Service (AWS MGN) AWS 或 AWS 彈性災難復原 (AWS DRS) 的 AWS 複寫代理程式。Amazon Elastic Compute Cloud (Amazon EC2) Linux 執行個體上的安裝失敗。

解決方法

識別錯誤

AWS 複寫代理程式安裝程式日誌顯示日誌結尾出現錯誤。執行下列命令以檢視安裝程式日誌的最後一頁,以判斷錯誤的情形。然後,請檢閱下列與錯誤相關的章節。

less +G aws_replication_installer.log

下列解決方法涵蓋 Linux 作業系統上最常見的 AWS 複寫代理程式安裝錯誤。

libz.so .1:無法從共用物件映射區段: 不允許操作

錯誤範例

./aws-replication-installer-64bit: error while loading shared libraries: libz.so .1: failed to map segment from shared object: Operation not permitted

安裝指令碼使用 /tmp 目錄。如果在 /tmp 上設定 noexec,那麼 libz.so 就無法映射區段。發生這種情況時,您會收到此 不允許操作 錯誤訊息。

若要解決此錯誤,請執行下列動作:

  1. 執行下列命令以卸載 /tmp
# umount /tmp
  1. 執行下列指令,以掛接具有 exec 權限的磁碟區:
# sudo mount /tmp -o remount, exec

要求中包含的安全性權杖已到期

錯誤範例

botocore.exceptions.ClientError: An error occurred (ExpiredTokenException) when calling the GetAgentInstallationAssetsForDrs operation: The security token included in the request is expired [installation_id: 1a9af9d3-9485-4e02-965e-611929428c61, agent_version: 3.7.0, mac_addresses: 206915885515739,206915885515740, _origin_client_type: installer]

到期的 AWS Identity and Access Management (AWS IAM) 角色經常造成這個錯誤。當 IAM 角色到期時,Application Migration Service 或彈性災難復原端點的 API 呼叫就會失敗。

若要解決此問題,請重新整理 IAM 角色,或使用存取金鑰或私密存取金鑰安裝該角色。如需詳細資訊,請參閱:

rmmod: 錯誤: 模組 aws_replication_driver 目前沒有載入

錯誤範例

rmmod: ERROR: Module aws_replication_driver is not currently loaded insmod: ERROR: could not insert module ./aws-replication-driver.ko: Required key not available

當來源執行個體啟用安全開機時,就會發生此錯誤。Application Migration Service 或彈性災難復原不支援安全開機。

若要解決此錯誤,請關閉來源執行個體的安全開機。

ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED]

錯誤範例

ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:997) - urllib.error.URLError: <urlopen error unknown url type: https>

**注意:**除了此錯誤之外,你可以使用以下方法解決大多數的 urllib/SSL 錯誤。

如果用戶端使用 Python 3.10 或更新版本的較舊作業系統版本,就可能會發生此錯誤。Python 3.10 新增 PEP 644 – Require OpenSSL 1.1.1 或更新提案

較舊的作業系統版本不具備支援 Python 3.10 的最新 OpenSSL 程式庫。因此,AWS 複寫代理程式安裝無法驗證 Application Migration Service 或彈性災難復原端點的 SSL 憑證。

若要避免此錯誤,請使用較舊版本的 Python,例如 2.7 或 3.8 版。

botocore.exceptions.CredentialRetrievalError

錯誤範例:

botocore.exceptions.CredentialRetrievalError: Error when retrieving credentials from cert: Oct 17, 2022 9:38:54 AM com.amazonaws.cloudendure.credentials_provider.SharedMain createAndSaveJks

如果您修改 AWS 複寫代理程式角色 AWSElasticDisasterRecoveryAgentRole/ AWSApplicationMigrationAgentRole,就可能會發生此錯誤。

若要解決此錯誤,請確認 AWS 複寫代理程式角色如下:

Application Migration Service

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "PrincipalGroup": {
        "AWS": "svc:mgn.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:SetSourceIdentity"
      ],
      "Condition": {
        "StringLike": {
          "sts:SourceIdentity": "s-*",
          "aws:SourceAccount": "AWSACCOUNTIDHERE"
        }
      }
    }
  ]
}

彈性災難復原

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "PrincipalGroup": {
        "AWS": "svc:drs.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:SetSourceIdentity"
      ],
      "Condition": {
        "StringLike": {
          "aws:SourceAccount": "AWSACCOUNTIDHERE",
          "sts:SourceIdentity": "s-*"
        }
      }
    }
  ]
}

stderr: aws-replication.target 的相依性任務失敗。

錯誤範例:

stderr: A dependency job for aws-replication.target failed. See 'journalctl -xe' for details

以下為造成此錯誤的兩個可能原因:

  • /var 目錄的權限為 754 。
  • 建立 aws-replication 使用者的 Linux 群組時出現問題。

若要解決 /var 問題,請對 /var 目錄執行 chmod 755

若要解決 Linux 群組問題,請執行下列動作:

1.    完整解除安裝 AWS 複寫代理程式。

2.    執行下列命令,以刪除 aws-replication 使用者和 aws-replication 群組:

# userdel aws-replication
# groupdel aws-replication

3.    重新安裝 AWS 複寫代理程式。

如需詳細資訊和安裝先決條件,請參閱:

「主」執行緒 com.amazonaws.services.drs.model.InternalServerException 的例外狀況

錯誤範例:

Exception in thread "main" com.amazonaws.services.drs.model.InternalServerException: An unexpected error has occurred (Service: Drs; Status Code: 500; Error Code: InternalServerException; Request ID: 4f4a76cb-aaec-44cc-a07a-c3579454ca55; Proxy: null)

如果用戶端關閉 AWS STS 端點,就會發生此錯誤。如果 AWS STS 端點已關閉,則 Application Migration Service 就無法呼叫 STS 以在用戶端帳戶中擔任該角色。彈性災難恢復也會有相同的情形。

若要解決此錯誤,請啟用用戶端的 AWS STS 端點。如需詳細資訊,請參閱在 AWS 區域中啟用和停用 AWS STS

insmod: 錯誤:無法插入模組 ./aws-replication-driver.ko: 所需的金鑰無法使用

如果該作業系統已啟用安全開機,就會發生此錯誤。Application Migration Service 和彈性災難復原不支援已啟用安全開機的 Linux 作業系統。

若要解決此錯誤,請關閉 Linux 作業系統的安全開機。在大多數作業系統上,請在 Hypervisor 中關閉安全開機。

insmod: 錯誤:無法插入模組 ./aws-replication-driver.ko: 無法配置記憶體

錯誤範例:

insmod: ERROR: could not insert module ./aws-replication-driver.ko: Cannot allocate memory
rmmod: ERROR: Module aws_replication_driver is not currently loaded
]
2023-03-16 10:27:08,416 ERROR      Exception during agent installation                                             
Traceback (most recent call last):
  File "cirrus/installer_shared/installer_main.py", line 308, in run_agent_installer_command_linux
  File "shared/installer_utils/command_utils.py", line 161, in run
shared.installer_utils.command_utils.RunException:
command: /tmp/tmp_t

如果 Linux 作業系統的記憶體不足以安裝代理程式,就會發生此錯誤。

若要解決此錯誤,請確認您的作業系統具備至少 300 MB 的可用記憶體。

執行代理程式驅動程式時發生未預期的錯誤! 是否已正確安裝核心 linux 標頭?

錯誤範例:

Unexpected error while making agent driver! Are kernel linux headers installed correctly?
Installation returned with code 1
Installation failed due to unspecified error:

在代理程式安裝期間,安裝程式會從您的 Linux 作業系統中配置的套件儲存庫下載相符的 kernel-devel 套件。當代理程式安裝工作流程無法將相符的 kernel-devel 套件安裝到 Linux 作業系統正在執行的核心時,就會發生此錯誤。

若要解決此錯誤,請檢閱安裝日誌以便驗證存取儲存庫時是否出現問題。然後,從網際網路手動下載 kernel-devel 套件。下載套件之後,請再次執行安裝。

您可以從以下網站下載相符的 kernel-devel/linux-headers 套件:

AWS 複寫代理程式也會安裝該安裝所需的相依性,例如 make gcc perl tar gawk rpm。如需詳細資訊,請參閱 Linux 安裝需求

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