EC2 Serial Console로 Amazon EC2 인스턴스 문제 해결

EC2 Serial Console로 Amazon EC2 인스턴스 문제 해결 (Troubleshoot your Amazon EC2 instance using the EC2 Serial Console)

EC2 Serial Console을 사용하면 인스턴스의 직렬 포트에 연결해 부팅, 네트워크 구성, 기타 문제를 해결할 수 있어요.

출처: 문서

본문

인스턴스의 운영 체제와 인스턴스에 구성한 도구에 맞는 지침을 사용해요.

도구:

  • GRUB(Linux)
  • SysRq(Linux)
  • SAC(Windows)

전제 조건 – 시작 전에 전제 조건을 완료했는지, 선택한 문제 해결 도구를 구성했는지 확인해요.

(Linux 인스턴스) GRUB로 문제 해결

GNU GRUB(GNUnet GRand Unified Bootloader, 보통 GRUB로 지칭)은 대부분의 Linux 운영 체제의 기본 부트로더예요. GRUB 메뉴에서 부팅할 커널을 선택하거나 메뉴 항목을 수정해 커널이 부팅되는 방식을 변경할 수 있어요. 실패하는 인스턴스를 문제 해결할 때 유용해요.

GRUB 메뉴는 부팅 과정 중에 표시돼요. 일반 SSH로는 메뉴에 접근할 수 없지만 EC2 Serial Console로는 접근할 수 있어요.

단일 사용자 모드(single user mode)로 부팅:

  1. 인스턴스의 직렬 콘솔에 연결해요.
  2. sudo reboot 명령으로 인스턴스를 재부팅해요.
  3. 재부팅 중 GRUB 메뉴가 나타나면 아무 키나 눌러 부팅 과정을 중지해요.
  4. GRUB 메뉴에서 화살표 키로 부팅할 커널을 선택하고 e를 눌러요.
  5. 화살표 키로 커널이 있는 줄에 커서를 위치시켜요. 줄은 인스턴스를 실행하는 데 사용된 AMI에 따라 linux 또는 linux16으로 시작해요. Ubuntu의 경우 linux로 시작하는 줄이 두 개이며 둘 다 수정해야 해요.
  6. 줄 끝에 single 단어를 추가해요. (Amazon Linux 2 예시)
linux /boot/vmlinuz-4.14.193-149.317.amzn2.aarch64 root=UUID=d33f9c9a-\
dadd-4499-938d-ebbf42c3e499 ro  console=tty0 console=ttyS0,115200n8 net.ifname\
s=0 biosdevname=0 nvme_core.io_timeout=4294967295 rd.emergency=poweroff rd.she\
ll=0 single
  1. Ctrl+X를 눌러 단일 사용자 모드로 부팅해요.
  2. login 프롬프트에서 이전에 설정한 비밀번호 기반 사용자의 사용자 이름을 입력하고 Enter를 눌러요.
  3. Password 프롬프트에서 비밀번호를 입력하고 Enter를 눌러요.

응급 모드(emergency mode)로 부팅 – 단일 사용자 모드와 같은 단계지만 6단계에서 single 대신 emergency를 추가해요.

(Linux 인스턴스) SysRq로 문제 해결

SysRq(System Request) 키는 "magic SysRq"라고도 불리며, 쉘 밖에서 커널에 직접 명령을 보내는 데 사용할 수 있어요. 커널이 무엇을 하고 있든 응답해요. 예를 들어 인스턴스가 응답을 멈추면 SysRq 키로 커널에게 크래시나 재부팅을 지시할 수 있어요.

브라우저 기반 클라이언트나 SSH 클라이언트에서 SysRq 명령을 사용할 수 있어요. break 요청을 보내는 명령은 클라이언트마다 달라요.

브라우저 기반 클라이언트:

  1. 인스턴스의 직렬 콘솔에 연결해요.
  2. break 요청을 보내려면 CTRL+0(숫자 0)을 눌러요. 키보드가 지원하면 Pause 또는 Break 키로도 보낼 수 있어요.
  3. SysRq 명령을 실행하려면 필요한 명령에 해당하는 키를 눌러요. 예를 들어 명령 목록을 보려면 h를 눌러요.
[ 1169.389495] sysrq: HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems
(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r
) sync(s) show-task-states(t) unmount(u) show-blocked-tasks(w) dump-ftrace-buffer(z)

SSH 클라이언트:

  1. 인스턴스의 직렬 콘솔에 연결해요.
  2. break 요청을 보내려면 ~B(틸드 후 대문자 B)를 눌러요.
  3. SysRq 명령을 실행하려면 필요한 명령에 해당하는 키를 눌러요. 예를 들어 h를 눌러요.

참고: break 요청을 보내는 명령은 사용하는 SSH 클라이언트에 따라 다를 수 있어요.

(Windows 인스턴스) SAC로 문제 해결

Windows의 SAC(Special Administration Console) 기능은 Windows 인스턴스를 문제 해결하는 방법을 제공해요. 인스턴스의 직렬 콘솔에 연결하고 SAC를 사용하면 부팅 과정을 중단하고 Windows를 안전 모드로 부팅할 수 있어요.

더 알아보기