EC2 Serial Console 사전 요구 사항

EC2 Serial Console 사전 요구 사항

EC2 Serial Console에 연결하고 선택한 문제 해결 도구를 사용하려면 다음 사전 요구 사항이 충족되어야 해요:

  • AWS 리전
  • Wavelength Zones
  • AWS Outposts
  • Local Zones
  • 인스턴스 유형
  • 접근 권한 부여
  • 브라우저 기반 클라이언트 지원
  • 인스턴스 상태
  • Amazon EC2 Systems Manager
  • 선택한 문제 해결 도구 구성

출처: 문서

본문

AWS 리전

AWS European Sovereign Cloud(독일)를 제외한 모든 AWS 리전에서 지원돼요.

Wavelength Zones

지원되지 않아요.

AWS Outposts

모든 AWS Outposts에서 지원돼요.

Local Zones

모든 Local Zones에서 지원돼요.

인스턴스 유형

지원되는 인스턴스 유형:

  • Linux
    • Nitro System 기반의 모든 가상화 인스턴스.
    • 다음을 제외한 모든 베어 메탈 인스턴스:
      • 범용: a1.metal, mac1.metal, mac2.metal, mac2-m1ultra.metal, mac2-m2.metal, mac2-m2pro.metal, mac-m3ultra.metal, mac-m4.metal, mac-m4max.metal, mac-m4pro.metal
      • 가속 컴퓨팅: g5g.metal
      • 메모리 최적화: u-6tb1.metal, u-9tb1.metal, u-12tb1.metal, u-18tb1.metal, u-24tb1.metal
  • Windows
    • Nitro System 기반의 모든 가상화 인스턴스.
    • 다음을 제외한 모든 베어 메탈 인스턴스:
      • 범용: a1.metal, mac1.metal, mac2.metal, mac2-m1ultra.metal, mac2-m2.metal, mac2-m2pro.metal, mac-m3ultra.metal, mac-m4.metal, mac-m4max.metal, mac-m4pro.metal
      • 가속 컴퓨팅: g5g.metal
      • 메모리 최적화: u-6tb1.metal, u-9tb1.metal, u-12tb1.metal, u-18tb1.metal, u-24tb1.metal

접근 권한 부여

EC2 Serial Console에 대한 접근을 부여하려면 구성 작업을 완료해야 해요. 자세한 내용은 EC2 Serial Console 접근 구성하기 문서를 참고하세요.

브라우저 기반 클라이언트 지원

브라우저 기반 클라이언트로 시리얼 콘솔에 연결하려면 브라우저가 WebSocket을 지원해야 해요. 브라우저가 WebSocket을 지원하지 않는다면 자체 키와 SSH 클라이언트를 사용해 시리얼 콘솔에 연결하세요.

브라우저 기반 클라이언트는 리전의 EC2 Instance Connect 프록시 엔드포인트의 포트 443에 연결해요. 엔드포인트 형식은 파티션에 따라 달라져요.

  • 상용 AWS 리전과 AWS GovCloud (US) 리전은 다음 엔드포인트 형식을 사용해요: prod.region.oneclickv2-proxy.ec2.aws.dev
  • 중국 리전은 다음 엔드포인트 형식을 사용해요: prod.region.oneclickv2-proxy.ec2.a2z.org.cn

다음 예시는 각 파티션의 엔드포인트를 보여줘요.

  • US East (N. Virginia) 리전의 경우 엔드포인트는 prod.us-east-1.oneclickv2-proxy.ec2.aws.dev예요.
  • 중국(베이징) 리전의 경우 엔드포인트는 prod.cn-north-1.oneclickv2-proxy.ec2.a2z.org.cn이에요.

참고 — 브라우저가 이 엔드포인트에 도달할 수 있어야 해요. 방화벽이나 VPN이 연결을 차단하면 연결이 실패해요.

인스턴스 상태

running 상태여야 해요. 인스턴스가 pending, stopping, stopped, shutting-down, terminated 상태라면 시리얼 콘솔에 연결할 수 없어요. 인스턴스 상태에 대한 자세한 내용은 Amazon EC2 인스턴스 상태 변경 문서를 참고하세요.

Amazon EC2 Systems Manager

인스턴스가 Amazon EC2 Systems Manager를 사용한다면 SSM Agent 버전 3.0.854.0 이상이 인스턴스에 설치되어 있어야 해요. SSM Agent에 대한 자세한 내용은 AWS Systems Manager 사용 설명서의 SSM Agent 작업하기 항목을 참고하세요.

선택한 문제 해결 도구 구성하기

시리얼 콘솔로 인스턴스를 문제 해결하려면 Linux 인스턴스에서는 GRUB 또는 SysRq를, Windows 인스턴스에서는 Special Admin Console(SAC)을 사용할 수 있어요. 이 도구를 사용하기 전에 사용할 모든 인스턴스에서 먼저 구성 단계를 수행해야 해요.

Linux 인스턴스에서 GRUB 또는 SysRq를 구성하려면 다음 지침을 사용하세요. Windows 인스턴스에서 SAC를 활성화하고 사용하려면 SAC로 Windows 인스턴스 문제 해결하기 문서를 참고하세요.

GRUB을 구성하려면 인스턴스를 실행하는 데 사용한 AMI에 따라 다음 절차 중 하나를 선택하세요.

Amazon Linux 2

Amazon Linux 2 인스턴스에서 GRUB 구성하기

  1. SSH로 Linux 인스턴스에 연결합니다.

  2. /etc/default/grub에 다음 옵션을 추가하거나 변경합니다.

    • GRUB_TIMEOUT=1로 설정합니다.
    • GRUB_TERMINAL="console serial"을 추가합니다.
    • GRUB_SERIAL_COMMAND="serial --speed=115200"을 추가합니다.

    다음은 /etc/default/grub의 예시입니다. 시스템 설정에 따라 구성을 변경해야 할 수도 있어요.

GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 rd.emergency=poweroff rd.shell=0"
GRUB_TIMEOUT=1
GRUB_DISABLE_RECOVERY="true"
GRUB_TERMINAL="console serial"
GRUB_SERIAL_COMMAND="serial --speed=115200"
  1. 다음 명령을 실행해 업데이트된 구성을 적용합니다.
[ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Ubuntu

Ubuntu 인스턴스에서 GRUB 구성하기

  1. 인스턴스에 연결합니다.

  2. /etc/default/grub.d/50-cloudimg-settings.cfg에 다음 옵션을 추가하거나 변경합니다.

    • GRUB_TIMEOUT=1로 설정합니다.
    • GRUB_TIMEOUT_STYLE=menu를 추가합니다.
    • GRUB_TERMINAL="console serial"을 추가합니다.
    • GRUB_HIDDEN_TIMEOUT을 제거합니다.
    • GRUB_SERIAL_COMMAND="serial --speed=115200"을 추가합니다.

    다음은 /etc/default/grub.d/50-cloudimg-settings.cfg의 예시입니다. 시스템 설정에 따라 구성을 변경해야 할 수도 있어요.

# Cloud Image specific Grub settings for Generic Cloud Images
# CLOUD_IMG: This file was created/modified by the Cloud Image build process

# Set the recordfail timeout
GRUB_RECORDFAIL_TIMEOUT=0

# Do not wait on grub prompt
GRUB_TIMEOUT=1
GRUB_TIMEOUT_STYLE=menu

# Set the default commandline
GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0 nvme_core.io_timeout=4294967295"

# Set the grub console type
GRUB_TERMINAL="console serial"
GRUB_SERIAL_COMMAND="serial --speed 115200"
  1. 다음 명령을 실행해 업데이트된 구성을 적용합니다.
[ec2-user ~]$ sudo update-grub

RHEL

RHEL 인스턴스에서 GRUB 구성하기

  1. 인스턴스에 연결합니다.

  2. /etc/default/grub에 다음 옵션을 추가하거나 변경합니다.

    • GRUB_TERMINAL_OUTPUT을 제거합니다.
    • GRUB_TERMINAL="console serial"을 추가합니다.
    • GRUB_SERIAL_COMMAND="serial --speed=115200"을 추가합니다.

    다음은 /etc/default/grub의 예시입니다. 시스템 설정에 따라 구성을 변경해야 할 수도 있어요.

GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8 net.ifnames=0 rd.blacklist=nouveau nvme_core.io_timeout=4294967295 crashkernel=auto"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
GRUB_TERMINAL="console serial"
GRUB_SERIAL_COMMAND="serial --speed=115200"
  1. 다음 명령을 실행해 업데이트된 구성을 적용합니다.
[ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg --update-bls-cmdline

RHEL 9.2 이하에서는 다음 명령을 사용하세요.

[ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg

CentOS

CentOS AMI로 실행된 인스턴스에서는 GRUB이 기본적으로 시리얼 콘솔을 위해 구성돼요.

다음은 /etc/default/grub의 예시입니다. 시스템 설정에 따라 구성이 다를 수 있어요.

GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL="serial console"
GRUB_SERIAL_COMMAND="serial --speed=115200"
GRUB_CMDLINE_LINUX="console=tty0 crashkernel=auto console=ttyS0,115200"
GRUB_DISABLE_RECOVERY="true"

SysRq를 구성하려면 현재 부팅 주기에 대해 SysRq 명령을 활성화해요. 구성을 영구적으로 만들려면 이후 부팅에도 SysRq 명령을 활성화할 수 있어요.

현재 부팅 주기의 모든 SysRq 명령 활성화하기

  1. 인스턴스에 연결합니다.
  2. 다음 명령을 실행합니다.
[ec2-user ~]$ sudo sysctl -w kernel.sysrq=1

이 설정은 다음 재부팅 시 사라집니다.

이후 부팅의 모든 SysRq 명령 활성화하기

  1. /etc/sysctl.d/99-sysrq.conf 파일을 만들고 좋아하는 편집기로 엽니다.
[ec2-user ~]$ sudo vi /etc/sysctl.d/99-sysrq.conf
  1. 다음 줄을 추가합니다.
kernel.sysrq=1
  1. 인스턴스를 재부팅해 변경 사항을 적용합니다.
[ec2-user ~]$ sudo reboot
  1. login 프롬프트에서 이전에 설정한 비밀번호 기반 사용자의 사용자 이름을 입력한 다음 Enter를 누릅니다.
  2. Password 프롬프트에서 비밀번호를 입력한 다음 Enter를 누릅니다.

더 알아보기

  • EC2 Serial Console
  • EC2 Serial Console 접근 구성하기