내 EC2 인스턴스가 관리형 노드로 표시되지 않거나 Systems Manager에서 ‘연결 끊김’ 상태로 표시되는 이유는 무엇인가요?

7분 분량
0

Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스가 연결이 끊어졌거나 AWS Systems Manager 콘솔의 Fleet Manager에 표시되지 않습니다.

해결 방법

관리형 인스턴스는 시스템 관리자와 함께 관리형 노드로 사용되는 EC2 인스턴스입니다.

EC2 인스턴스가 관리형 인스턴스가 되기 위한 전제 조건을 충족하는지 확인하려면 AWSSupport-TroubleshootManagedInstance 시스템 관리자 자동화 문서를 실행합니다. 그런 다음 EC2 인스턴스가 다음 요구 사항을 충족하는지 확인합니다.

중요: 문제 해결 단계 전체에서 EC2 인스턴스가 포함된 AWS 리전을 선택합니다.

인스턴스에 SSM 에이전트가 설치되어 실행 중인지 확인합니다.

운영 체제가 Systems Manager를 지원하는지 확인한 후, 인스턴스에 AWS Systems Manager Agent(SSM Agent)가 설치 및 실행 중인지 확인합니다.

SSM 에이전트는 일부 Linux, macOS 및 Windows Amazon Machine Image(AMI)에 사전 설치되어 있습니다. 에이전트가 사전 설치되어 있지 않은 경우 SSM 에이전트를 수동으로 설치하려면 다음 설명서를 참조하세요.

SSM 에이전트가 실행 중인지 확인하려면 운영 체제별 명령을 사용하여 에이전트 상태를 확인합니다.

SSM 에이전트 확인을 완료한 후 ssm-cli를 실행하여 관리되는 인스턴스 가용성 문제를 해결합니다.

포트 443에서 시스템 관리자 엔드포인트에 대한 연결 확인

포트 443에서 시스템 관리자 엔드포인트에 대한 연결을 확인하려면 운영 체제 및 서브넷 설정을 고려해야 합니다. 리전별 시스템 관리자 끝점 목록은 AAWS Systems Manager 엔드포인트 및 할당량을 참조하세요.

참고: 예제에서는 AWS Systems Manager Session Managerssmmessages 엔드포인트가 필요합니다.

EC2 Linux 인스턴스

Telnet 또는 Netcat 명령을 사용하여 EC2 Linux 인스턴스의 포트 443에 있는 엔드포인트에 대한 연결을 확인합니다.

참고: 명령을 실행할 때 RegionID을 인스턴스의 리전으로 바꿉니다.

Telnet 명령:

telnet ssm.RegionID.amazonaws.com 443
telnet ec2messages.RegionID.amazonaws.com 443
telnet ssmmessages.RegionID.amazonaws.com 443

Telnet 연결 예제:

root@111800186:~# telnet ssm.us-east-1.amazonaws.com 443
Trying 52.46.141.158...
Connected to ssm.us-east-1.amazonaws.com.
Escape character is '^]'.

Telnet에서 종료하려면 Ctrl 키를 누른 상태에서 ] 키를 누릅니다. quit을 입력한 다음 Enter 키를 누릅니다.

Netcat 명령:

nc -vz ssm.RegionID.amazonaws.com 443
nc -vz ec2messages.RegionID.amazonaws.com 443
nc -vz ssmmessages.RegionID.amazonaws.com 443

Netcat은 EC2 인스턴스에 사전 설치되어 있지 않습니다. Netcat을 수동으로 설치하려면 Nmap 웹 사이트에서 Ncat을 참조하세요.

EC2 Windows 인스턴스

다음 Windows PowerShell 명령을 사용하여 EC2 Windows 인스턴스의 포트 443에 있는 엔드포인트에 대한 연결을 확인합니다.

Test-NetConnection ssm.RegionID.amazonaws.com -port 443
Test-NetConnection ec2messages.RegionID.amazonaws.com -port 443
Test-NetConnection ssmmessages.RegionID.amazonaws.com -port 443

퍼블릭 서브넷

Systems Manager 엔드포인트는 퍼블릭 엔드포인트입니다. 퍼블릭 서브넷의 인스턴스에서 엔드포인트에 연결할 때 발생하는 문제를 해결하려면 다음 사항을 확인하세요.

프라이빗 서브넷

프라이빗 IP 주소를 사용하여 Amazon EC2 및 시스템 관리자 API에 비공개로 액세스합니다. 프라이빗 서브넷의 인스턴스에서 엔드포인트에 연결할 때 발생하는 문제를 해결하려면 다음 사항 중 하나를 확인하세요.

  • 인스턴스의 라우팅 테이블이 인터넷 트래픽을 NAT 게이트웨이로 라우팅합니다.
  • VPC 엔드포인트가 시스템 관리자 엔드포인트에 연결되도록 구성되어 있습니다.

자세한 내용을 보려면 인터넷에 액세스하지 않고도 Systems Manager를 사용하여 프라이빗 EC2 인스턴스를 관리할 수 있도록 VPC 엔드포인트를 만들려면 어떻게 하나요?를 참조하세요.

참고: 각 인터페이스 엔드포인트는 제공된 서브넷에 탄력적 네트워크 인터페이스를 만듭니다.

프라이빗 서브넷에 대한 보안 모범 사례로 다음 설정을 확인하세요.

  • VPC 엔드포인트의 네트워크 인터페이스에 연결된 보안 그룹은 인스턴스에 연결된 보안 그룹으로부터의 TCP 포트 443 인바운드 트래픽을 허용합니다.
  • 인스턴스에 연결된 보안 그룹이 VPC 엔드포인트의 네트워크 인터페이스에 대한 프라이빗 IP 주소로 TCP 포트 443 아웃바운드 트래픽을 허용합니다.

기본 호스트 관리 구성 설정 확인

참고: 기본 호스트 관리 구성을 사용하지 않는 경우 올바른 IAM 역할이 인스턴스에 연결되어 있는지 확인 섹션으로 건너뛰세요.

기본 호스트 관리 구성을 구성하면 Systems Manager가 AWS IAM(ID 및 액세스 관리) 인스턴스 프로파일이 없는 EC2 인스턴스를 자동으로 관리합니다. 이 기능을 구성하면 시스템 관리자는 리전 및 계정의 모든 인스턴스를 관리할 수 있는 권한을 갖습니다. 사용 사례에 대한 권한이 충분하지 않은 경우 기본 호스트 관리 구성에서 만든 기본 IAM 역할에 정책을 추가합니다.

연결된 모든 인스턴스는 IMDSv2(인스턴스 메타데이터 서비스 버전 2)를 사용해야 합니다. IMDSv2 구성을 확인하려면 IMDSv1 사용량이 0인 경우인스턴스가 IMDSv2로 전환되었는지 확인을 참조하세요.

기본 호스트 관리 구성은 SSM 에이전트 버전 3.2.582.0 이상에서 사용할 수 있습니다. SSM 에이전트 버전을 확인하려면 SSM 에이전트 버전 번호 확인을 참조하세요.

기본 호스트 관리 구성에 대한 설정을 확인하려면 다음 단계를 완료합니다.

  1. Systems Manager 콘솔을 엽니다.
  2. 탐색 창에서 Fleet Manager를 선택합니다.
  3. 계정 관리 드롭다운 목록에서 기본 호스트 관리 구성을 선택합니다.
  4. 기본 호스트 관리 구성 사용 설정이 켜져 있는지 확인합니다.

다음 AWS Command Line Interface(AWS CLI) 명령을 사용하여 기본 호스트 관리 구성 설정을 확인할 수도 있습니다.

참고: 명령을 실행할 때 AccountID를 AWS 계정 ID로 바꾸세요.

aws ssm get-service-setting \
--setting-id arn:aws:ssm:RegionID:AccountID:servicesetting/ssm/managed-instance/default-ec2-instance-management-role

기본 호스트 관리 구성이 설정되면 다음과 유사한 응답을 받게 됩니다.

{
  "ServiceSetting": {
    "SettingId": "/ssm/managed-instance/default-ec2-instance-management-role",
    "SettingValue": "service-role/AWSSystemsManagerDefaultEC2InstanceManagementRole",
    "LastModifiedDate": 1679492424.738,
    "LastModifiedUser": "arn:aws:sts::012345678910:assumed-role/role/role-name",
    "ARN": "arn:aws:ssm:ap-southeast-1:012345678910:servicesetting/ssm/managed-instance/default-ec2-instance-management-role",
    "Status": "Customized"
  }
}

참고: SettingValue의 값이 $None이면 기본 호스트 관리 구성이 구성되지 않은 것입니다.

기본 호스트 관리 구성이 적절한 IAM 역할을 사용하고 있는지 확인합니다.

기본 호스트 관리 구성을 설정할 때 AWSSystemsManagerDefaultEC2InstanceManagementRole 역할이 권장되는 IAM 역할입니다. 다른 역할을 사용하려면 해당 역할에 AmazonSSMManagedEC2InstanceDefaultPolicy IAM 정책이 연결되어 있는지 확인합니다.

EC2 인스턴스에 인스턴스 프로필이 연결되어 있는 경우 ssm:UpdateInstanceInformation 작업을 허용하는 모든 권한을 제거합니다. SSM 에이전트가 기본 호스트 관리 구성 권한을 사용하기 전에 인스턴스 프로파일 권한을 사용하려고 합니다. 인스턴스 프로파일에서 ssm:UpdateInstanceInformation 작업을 허용하면 인스턴스에서 기본 호스트 관리 구성 권한이 사용되지 않습니다.

인스턴스에 올바른 IAM 역할이 연결되어 있는지 확인합니다

참고: 기본 호스트 관리 구성을 사용하는 경우 IMDS에 대한 연결 확인 섹션으로 건너뛰세요.

Systems Manager 엔드포인트에 API 호출을 하려면 인스턴스에 연결된 IAM 역할에 AmazonSSMManagedInstanceCore 정책을 첨부해야 합니다. 사용자 지정 IAM 정책을 사용하는 경우 사용자 지정 정책이 AmazonSSMManagedInstanceCore에 있는 권한을 사용하는지 확인합니다. 또한 IAM 역할에 대한 신뢰 정책에서 ec2.amazonaws.com이 이 역할을 맡을 수 있도록 허용하는지 확인하세요.

자세한 내용을 보려면 시스템 관리자 인스턴스 프로파일(콘솔)에 권한 추가를 참조하세요.

IMDS에 대한 연결 확인

SSM 에이전트는 인스턴스에 대한 필요한 정보를 얻으려면 IMDS(인스턴스 메타데이터 서비스)와 통신해야 합니다. 연결을 테스트하려면 다음 Netcat 명령을 실행합니다.

nc -vz 169.254.169.254 80

기존 인스턴스에 대해 IMDS가 설정되어 있는지 확인하려면 다음 단계 중 하나를 수행합니다.

  • Amazon EC2 콘솔을 엽니다. 탐색 창에서 Instances를 선택하고 인스턴스를 선택한 다음 Actions, Instance settings, Modify 인스턴스 메타데이터 옵션을 선택합니다. 대화 상자에서 인스턴스 메타데이터 서비스활성화여야 합니다.

  • AWS CLI에서 describe-instances CLI 명령을 실행합니다.

    aws ec2 describe-instances --query "Reservations[*].Instances[*].MetadataOptions" --instance-ids i-012345678910

    출력 예제:

    [
      [
        {
          "State": "applied",
          "HttpTokens": "optional",
          "HttpPutResponseHopLimit": 1,
          "HttpEndpoint": "enabled",
          "HttpProtocolIpv6": "disabled",
          "InstanceMetadataTags": "disabled"
        }
      ]
    ]
    

    참고: **"HttpTokens": "optional"**은 IMDSv1과 IMDSv2가 모두 지원됨을 의미합니다. **"HttpTokens": "required"**는 IMDSv2가 지원됨을 의미합니다. **"HttpEndpoint": "enabled"**는 IMDS가 켜져 있음을 의미합니다.

인스턴스에서 프록시를 사용하는 경우 프록시가 메타데이터 URL에 대한 연결을 차단할 수 있습니다. 이를 방지하려면 프록시와 함께 작동하도록 SSM 에이전트를 구성하고 메타데이터 URL에 no_proxy를 설정해야 합니다. 프록시를 사용하도록 SSM 에이전트를 구성하려면 다음 설명서를 참조하세요.

추가 문제 해결

인스턴스가 여전히 관리되는 노드로 표시되지 않거나 시스템 관리자에서 연결이 끊어진 것으로 표시되면 SSM 에이전트 로그에서 문제 해결을 계속하세요.

  • Linux 및 macOS: SSM 에이전트 로그는 /var/log/amazon/ssm에 있습니다.
  • Windows: SSM 에이전트 로그가 %PROGRAMDATA%\Amazon\SSM\Logs에 있습니다.

인스턴스가 SSM 에이전트에 보고하지 않는 경우, RDP(Windows) 또는 SSH(Linux)를 사용하여 로그인하여 로그를 수집해 보세요. 로그를 수집할 수 없는 경우 인스턴스를 중지하고 루트 볼륨을 분리해야 합니다. 그런 다음 루트 볼륨을 보조 볼륨과 동일한 가용성 영역에 있는 다른 인스턴스에 연결하여 로그를 가져옵니다.

관련 정보

인스턴스에 Amazon Elastic Block Store(Amazon EBS) 볼륨 연결

Linux 인스턴스에서 Amazon EBS 볼륨 분리

Linux에서 Amazon EBS 볼륨을 사용할 수 있도록 설정

Windows에서 Amazon EBS 볼륨을 사용할 수 있도록 설정

AWS 공식
AWS 공식업데이트됨 일 년 전
댓글 없음

관련 콘텐츠