EC2Rescue for Linux를 사용하여 운영 체제 수준의 문제를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022년 4월 26일

Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스에 연결할 수 없거나 부팅 문제가 발생합니다. 이러한 문제를 해결하려면 OpenSSH 파일 권한과 같은 일반적인 문제를 해결하거나 분석 및 문제 해결을 위한 시스템(OS) 로그를 수집해야 합니다. EC2Rescue for Linux를 사용하여 이 작업을 수행하려면 어떻게 해야 합니까?

간략한 설명

EC2Rescue for Linux는 Amazon EC2 Linux 인스턴스의 문제를 진단하고 해결하는 데 도움을 주는 도구입니다. EC2Rescue for Linux는 운영 체제 수준의 문제를 해결하기 위해 Amazon EC2 Linux 인스턴스에서 실행됩니다. EC2Rescue for Linux 역시 추가 분석을 위해 어드밴스드 로그, 시스템 사용률 보고서, 구성 파일을 수집합니다.

EC2Rescue for Linux에서 처리하는 일반적인 시나리오:

  • vmstat, iostat, mpstat 등과 같은 시스템 사용률 보고서를 수집합니다.
  • syslog, dmesg, 애플리케이션 오류 로그, SSM 로그와 같은 로그 및 세부 정보를 수집합니다.
  • 비대칭 라우팅 또는 중복 루트 디바이스 레이블과 같은 시스템 문제를 감지합니다.
  • OpenSSH 파일 권한 수정 또는 알려진 문제가 있는 커널 파라미터 비활성화와 같은 시스템 문제를 자동으로 수정합니다.

시스템 요구 사항

EC2Rescue for Linux에는 다음 사전 조건을 충족하는 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 명령줄 인터페이스(AWS CLI)를 사용하여 직렬 콘솔에 액세스할 수 있습니다.

직렬 콘솔을 사용하기 전에 계정 수준에서 콘솔에 대한 액세스 권한을 부여합니다. 그런 다음 IAM 사용자에게 액세스 권한을 부여하는 AWS Identity and Access Management(IAM) 정책을 생성합니다. 또한 직렬 콘솔을 사용하는 모든 인스턴스에는 암호 기반 사용자가 한 명 이상 포함되어야 합니다. 인스턴스에 연결할 수 없고 직렬 콘솔에 대한 액세스를 구성하지 않은 경우 해결 방법 섹션의 지침을 따릅니다. Linux용 EC2 직렬 콘솔 구성에 대한 자세한 내용은 EC2 직렬 콘솔에 대한 액세스 구성을 참조하세요.

참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.

해결 방법

EC2Rescue for Linux를 사용하여 연결할 수 없는 Amazon EC2 Linux 인스턴스의 문제를 해결하려면 다음을 수행합니다.

1.    손상된 인스턴스와 동일한 가용 영역에서 동일한 Amazon Machine Image(AMI)를 사용하여 Virtual Private Cloud(VPC)에서 새 Amazon EC2 인스턴스를 시작합니다. 새 인스턴스가 "복구" 인스턴스가 됩니다. 또는 액세스할 수 있는 기존 인스턴스가 동일한 AMI를 사용하고 손상된 인스턴스와 동일한 가용 영역에 있는 경우 이 인스턴스를 사용할 수 있습니다.

2.    손상된 인스턴스에서 Amazon Elastic Block Store(Amazon EBS) 루트 볼륨(/dev/xvda 또는 /dev/sda1)을 분리합니다. 나중에 다시 연결할 때 디바이스 이름이 동일한지 확인하기 위해 디바이스 이름을 기록해 둡니다.

3.    복구 인스턴스에 보조 디바이스(/dev/sdf)로 EBS 볼륨을 연결합니다.

4.    SSH를 사용하여 복구 인스턴스에 연결합니다.

5.    루트가 되고 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 루트 볼륨에 EC2Rescue for Linux 도구를 다운로드하여 설치합니다.

# curl -O https://s3.amazonaws.com/ec2rescuelinux/ec2rl.tgz
# tar -xf ec2rl.tgz

10.    도움말 파일을 나열하여 설치를 확인합니다.

# cd ec2rl-<version_number>
# ./ec2rl help

11.    아무 옵션 없이 EC2Rescue for Linux을 실행하여 모든 모듈을 실행합니다.

# ./ec2rl run

12.    /var/temp/ec2rl에서 결과를 봅니다.

# cat /var/tmp/ec2rl/*/Main.log | more

13.    결과에 따라 지원되는 모듈에 대한 수정을 활성화합니다.

# ./ec2rl run --remediate

14.    수정이 완료되면 chroot에서 나가고 보조 디바이스의 탑재를 해제합니다.

# exit
# umount $rescuemnt/{proc,sys,dev,run,}

참고: 탑재 해제 작업에 실패할 경우 복구 인스턴스를 중지하거나 재부팅하여 클린 탑재 해제를 활성화해야 할 수 있습니다.

15.    복구 EC2 인스턴스에서 보조 볼륨(/dev/sdf)을 분리한 다음 원본 인스턴스에 /dev/xvda 혹은 /dev/sda1(루트 볼륨)로 연결합니다. 2단계에 표시된 것과 동일한지 확인합니다.

16.    EC2 인스턴스를 시작한 다음 인스턴스가 응답하는지 확인합니다.

참고: AWS Systems Manager Automation 문서를 사용하여 연결 문제를 해결할 수도 있습니다. 자세한 내용은 시연: 연결할 수 없는 인스턴스에서 EC2Rescue 도구 실행을 참조하세요. AWSSupport-ExecuteEC2Rescue 문서는 EC2Rescue for Linux를 사용하는 데 일반적으로 필요한 단계를 자동화하도록 설계되었습니다. 이러한 단계는 Systems Manager 작업, AWS CloudFormation 작업 및 AWS Lambda 함수의 조합입니다.

추가 문제 해결


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?