如何使用適用於 Linux 的 EC2Rescue 對作業系統層級問題進行疑難排解?
我無法連接至 Amazon Elastic Compute Cloud (Amazon EC2) Linux 執行個體,或者我遇到了開機問題。為了更正這些問題,我需要修復常見問題,例如 OpenSSH 檔案許可或收集系統 (OS) 日誌以進行分析和疑難排解。如何使用適用於 Linux 的 EC2Rescue 來執行此操作?
簡短描述
適用於 Linux 的 EC2Rescue 是一種工具,可協助診斷 Amazon EC2 Linux 執行個體上的問題並進行疑難排解。適用於 Linux 的 EC2Rescue 會在 Amazon EC2 Linux 執行個體上執行,以更正作業系統層級問題。適用於 Linux 的 EC2Rescue 也會收集進階日誌、系統使用率報告和組態檔案,以供進一步分析。
適用於 Linux 的 EC2Rescue 所處理的常見案例:
- 收集系統使用率報告,例如 vmstat、iostat、mpstat 等。
- 收集日誌和詳細資訊,例如 syslog、dmesg、應用程式錯誤日誌和 SSM 日誌。
- 偵測系統問題,例如非對稱路由或重複的根裝置標籤。
- 自動修復系統問題,例如更正 OpenSSH 檔案許可或停用已知有問題的核心參數。
系統需求
適用於 Linux 的 EC2Rescue 需要符合下列先決條件的 Amazon EC2 Linux 執行個體:
支援的作業系統
- Amazon Linux 2
- Amazon Linux 2016.09+
- SLES 12+
- RHEL 7+
- Ubuntu 16.04+
軟體需求
- Python 2.7.9+ 或 3.2+
**注意:**如果您已啟用適用於 Linux 的 EC2 序列主控台,則可以使用它來對支援的 Nitro 型執行個體類型進行疑難排解。序列主控台可協助您對開機問題、網路組態和 SSH 組態問題進行疑難排解。序列主控臺可連線至您的執行個體,無需可運作的網路連線。您可以使用 Amazon EC2 主控台或 AWS Command Line Interface (AWS CLI) 存取序列主控台。
使用序列主控台之前,請先在帳戶層級授予對主控台的存取權。建立 AWS Identity and Access Management (IAM) 政策,將存取權授予 IAM 使用者。此外,每個使用序列主控台的執行個體都必須包含至少一個密碼型使用者。如果您的執行個體無法連線,而且您並未設定序列主控台的存取權,請遵循解決方法一節中的指示進行。如需有關設定適用於 Linux 的 EC2 序列主控台的資訊,請參閱設定 EC2 序列主控台的存取權。
**注意:**如果您在執行 AWS CLI 命令時收到錯誤,請確定您使用的是最新版本的 AWS CLI。
解決方法
若要使用適用於 Linux 的 EC2Rescue 對無法連線的 Amazon EC2 Linux 執行個體進行疑難排解,請執行以下操作:
1. 使用相同的 Amazon Machine Image (AMI),並在與受損執行個體相同的可用區域中,於虛擬私有雲端 (VPC) 中啟動新的 Amazon EC2 執行個體。新執行個體會變成您的「救援」執行個體。或者,如果您可以存取的現有執行個體使用相同的 AMI 且與受損執行個體位於相同的可用區域中,則使用該執行個體。
2. 將 Amazon Elastic Block Store (Amazon EBS) 根磁碟區 (/dev/xvda 或 /dev/sda1) 從受損的執行個體中分離。記下裝置名稱,以確保稍後重新連接裝置時它是相同的
3. 將 EBS 磁碟區作為次要裝置 (/dev/sdf) 連接至救援執行個體。
5. 成為 root,使用 lsblk 識別正確的裝置名稱,然後儲存以在整個程序中使用:
$ sudo -i # lsblk # rescuedev=/dev/xvdf1
**注意:**裝置 (/dev/xvdf1) 可能會以不同的裝置名稱連接至救援執行個體。使用 lsblk 命令以檢視可用的磁碟裝置及其掛載點,以判斷正確的裝置名稱。
6. 選取要使用的適當暫時掛載點,並確保它存在,除非該掛載點已在使用中,否則請使用 /mnt。
# rescuemnt=/mnt # mkdir -p $rescuemnt
7. 從連接的磁碟區掛載根檔案系統:
# mount $rescuedev $rescuemnt
**注意:**如果磁碟區掛載失敗,請檢查 dmesg | tail。如果日誌提示 UUID 衝突,請使用選項 -o nouuid。
8. 掛載特殊檔案系統並將根目錄 (chroot) 變更為新掛載的檔案系統:
# for i in proc sys dev run; do mount --bind /$i $rescuemnt/$i ; done # chroot $rescuemnt
9. 在離線 Linux 根磁碟區上下載並安裝適用於 Linux 的 EC2Rescue 工具:
# curl -O https://s3.amazonaws.com/ec2rescuelinux/ec2rl.tgz # tar -xf ec2rl.tgz
10. 列出說明檔案以確認安裝:
# cd ec2rl-<version_number> # ./ec2rl help
11. 在沒有執行所有模組的選項下,執行適用於 Linux 的 EC2Rescue:
# ./ec2rl run
12. 在 /var/tmp/ec2rl 中檢視結果:
# cat /var/tmp/ec2rl/*/Main.log | more
13. 根據結果啟用支援模組的修復:
# ./ec2rl run --remediate
14. 修復完成後,結束 chroot 並卸載次要裝置:
# exit # umount $rescuemnt/{proc,sys,dev,run,}
注意: 如果卸載操作不成功,您可能必須停止或重新啟動救援執行個體,以啟用全新卸載。
15. 將次要磁碟區 (/dev/sdf) 從救援 EC2 執行個體分離,然後將該磁碟區作為 /dev/xvda 或 /dev/sda1 (根磁碟區) 連接至原始執行個體。請確保這與步驟 2 中看到的相同。
16. 啟動 EC2 執行個體,然後確認執行個體是否有回應。
**注意:**您也可以使用 AWS Systems Manager Automation 文件對連線問題進行疑難排解。如需詳細資訊,請參閱逐步解說: 在無法連線的執行個體上執行 EC2Rescue 工具。AWSSupport-ExecuteEC2Rescue 文件旨在自動執行使用適用於 Linux 的 EC2Rescue 通常所需的步驟。這些步驟結合了 Systems Manager 動作、AWS CloudFormation 動作和 AWS Lambda 函數。
其他疑難排解
- 如需有關復原 Linux 執行個體的一般指示,請參閱主機電腦發生故障時復原執行個體。如需 Windows 執行個體,請參閱對無法連線的執行個體進行疑難排解。
- 如果執行個體的根裝置是 Amazon EBS 支援的磁碟區,則請嘗試停止執行個體,然後再啟動執行個體。如需詳細資訊,請參閱停止並啟動執行個體。
- 對於執行個體存放區支援的執行個體,如果您建立了執行個體的自訂 AMI,您或許可以使用 AMI 作為備份還原執行個體。如需有關從您擁有的 AMI 建立新執行個體的指示,請參閱使用舊的啟動執行個體精靈啟動執行個體。
- 在某些情況下,您的 EBS 磁碟區可能會停用 I/O 存取權,這可能會導致您的執行個體無法存取。如需有關如何識別此問題並進行疑難排解的指示,請參閱使用自動啟用的 IO 磁碟區屬性。
- 如果您遺失了 SSH 金鑰對,您可以使用 Systems Manager Automation 和 AWSSupport-ResetAccess 文件來重設它。
相關資訊
使用 EC2Rescue 和 Amazon EC2 Systems Manager Automation 復原受損的執行個體
相關內容
- 已提問 1 年前lg...
- 已提問 1 年前lg...
- 已提問 1 個月前lg...
- 已提問 1 年前lg...
- 已提問 1 年前lg...
- AWS 官方已更新 1 年前
- AWS 官方已更新 7 個月前
- AWS 官方已更新 3 年前