모범 사례와 강화 기술을 사용하여 Amazon ECS 컨테이너 인스턴스를 보호하려면 어떻게 해야 합니까?

5분 분량
0

Amazon Elastic Container Service(Amazon ECS) 인스턴스 또는 기본 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 예기치 않은 종료, 재부팅, 스케일링 문제 또는 데이터 손실 등의 문제가 발생합니다. Amazon ECS 컨테이너 인스턴스를 보호하려고 합니다.

간략한 설명

Amazon ECS에서 Amazon EC2 시작 유형을 사용하는 경우 종료, 재부팅 또는 성능 병목 현상과 같은 EC2 인스턴스 문제가 컨테이너에 영향을 미칩니다. 이러한 문제를 해결하려면 모범 사례를 구현하여 Amazon ECS 컨테이너 인스턴스를 보호하고 Amazon EC2 유지 관리, 스케일링 및 문제 해결을 실시하십시오.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

Amazon ECS 컨테이너 인스턴스 보호

AWS 계정 루트 사용자 액세스 제한

필요한 경우가 아니면 루트 계정을 사용하여 계정 설정을 변경하거나 루트 사용자 암호를 수정하는 등의 작업을 수행하지 마십시오. 대신 AWS Identity and Access Management(IAM) 역할 및 정책을 사용하여 최소 권한 원칙을 준수하는 액세스를 설정하십시오. 또한 루트 계정에 다중 인증(MFA)을 설정하십시오.

보안 강화 구현

보안 그룹을 사용하여 필요한 IP 주소 및 포트로만 인바운드 및 아웃바운드 트래픽을 제한할 수 있습니다. 정기적으로 Amazon ECS 컨테이너 인스턴스의 패치를 적용하고 업데이트하십시오. Amazon Inspector를 사용하여 취약성을 식별할 수도 있습니다.

HTTPS와 같은 민감한 전송 중 데이터와 Amazon Elastic Block Storage(Amazon EBS) 볼륨과 같은 민감한 저장 데이터에 암호화를 사용하십시오. 자세한 내용은 인프라 보호를 참조하십시오.

AWS Systems Manager를 사용하면 Amazon ECS 컨테이너 인스턴스의 패치 적용 및 유지 관리가 간소화됩니다. Amazon ECS에 최적화 Amazon Machine Image(AMI)에 사전 설치된 AWS Systems Manager Agent(SSM Agent)를 사용하여 자동화된 패치 관리 워크플로를 구현하십시오. 여기에는 유지 관리 기간 예약과 인스턴스 교체 전략이 포함됩니다. 자세한 내용은 Amazon ECS 컨테이너 인스턴스 교체를 통한 패치 적용 자동화를 참조하십시오.

로깅 및 모니터링 켜기

API 활동을 기록하도록 AWS CloudTrail을 구성합니다. CpuUtilization, DiskReadOps, DiskWriteOps, NetworkIn 또는 NetworkOut 값이 높으면 경보를 보내도록 Amazon CloudWatch 경보를 설정하는 것이 좋습니다.

컨테이너 인스턴스 성능 및 리소스 사용을 모니터링하려면 Container Insights를 활성화하십시오.

백업 및 복원 전략 설정

Amazon EBS 스냅샷을 사용하거나 재해 복구 계획의 일부분으로 AMI를 생성하십시오. 자세한 내용은 AWS 백업을 사용한 Amazon EC2 백업 및 복원을 참조하십시오.

중요: EBS 볼륨을 삭제하면 Amazon EBS 스냅샷 또는 AMI 백업을 생성한 경우에만 볼륨을 복구할 수 있습니다.

메타데이터, 인스턴스 로그 및 애플리케이션 데이터를 수집하고 내보내려면 SSH를 사용하여 인스턴스에 연결합니다. 이후 describe-instance AWS CLI 명령을 실행하여 인스턴스 메타데이터를 내보냅니다.

aws ec2 describe-instances \
--instance-ids i-abcdxyz\
-- query "Reservations[].Instances[]" \
-- output text > file.txt

인스턴스 로그를 내보내려면 get-console-output 명령을 실행합니다.

aws ec2 get-console-output --instance-id i-abcdxyz --output text

참고: 위의 명령에서 i-abcdxyz를 인스턴스 ID로 바꾸십시오.

EC2 인스턴스 문제 해결

예기치 않은 종료 및 재부팅 문제 해결

Amazon ECS 관리형 인스턴스 드레이닝을 사용하여 스팟 중단이나 이와 비슷한 이벤트가 발생할 때 워크로드를 정상적으로 중지하고 안정적인 인스턴스로 전환할 수 있습니다.

보안 및 성능을 위해 Amazon EC2는 재부팅, 중지 및 시작, 사용 중지와 같은 인스턴스의 정기 유지 관리 이벤트를 예약합니다. AWS Health Dashboard를 사용하여 완료하는 데 시간이 걸리는 이벤트를 추적할 수 있습니다. 정기 유지 관리 이벤트 이후의 작업에 대한 자세한 내용은 예약된 이벤트의 영향을 받는 Amazon EC2 인스턴스에 대한 권장 작업을 참조하십시오.

스팟 인스턴스가 종료되는 경우 Amazon EC2가 스팟 인스턴스를 중단한 이유는 무엇입니까?를 참조하십시오.

Amazon EC2는 예약된 유지 관리의 일환으로 인스턴스를 종료할 수 있습니다. 이러한 유형의 인스턴스 종료를 관리하려면 Amazon EC2 Auto Scaling 수명 주기 후크를 사용하는 것이 바람직합니다.

높은 리소스 사용률 문제 해결

높은 CPU 또는 메모리 사용량 문제를 확인하려면 애플리케이션 로그와 인스턴스의 CpuUtilization, NetworkIn, NetworkOut, DiskReadOpsDiskWriteOps CloudWatch 지표를 검토하십시오. MemoryUtilized Container Insights 지표도 확인하십시오.

구성이 인스턴스의 리소스 요구 사항을 충족하지 못하는 경우 인스턴스를 스케일 업하십시오.

또는 Amazon ECS 용량 공급자를 사용하여 클러스터의 컴퓨팅 리소스를 동적으로 스케일링 및 최적화할 수 있습니다. 용량 공급자를 생성하려면 Amazon ECS 콘솔을 사용합니다. 또는 다음 예시와 비슷한 create-capacity-provider 명령을 실행합니다.

aws ecs create-capacity-provider --name "example-capacity=provider" --auto-scaling-group-provider "autoScalingGroupArn=arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroup:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111:autoScalingGroupName/MyAutoScalingGroup,managedScaling={status=ENABLED,targetCapacity=100,minimumScalingStepSize=1,maximumScalingStepSize=100},managedTerminationProtection=ENABLED"

디스크 공간 부족 문제 해결

Amazon ECS 작업을 실행하는 EC2 인스턴스의 기본 스토리지의 용량이 다음과 같은 이유로 인해 가득 찰 수 있습니다.

  • 애플리케이션 로그
  • 과도하게 많은 컨테이너 이미지 스토리지
  • 컨테이너 인스턴스 실행으로 생성된 임시 파일

각 파일 또는 디렉터리는 크기와 무관하게 하나의 inode를 사용합니다. 따라서 작은 파일이 여러 개 있는 경우 inode 할당량을 초과할 수 있습니다. inode 할당량을 초과하면 사용 가능한 디스크 공간이 있어도 새 파일을 생성할 수 없습니다.

Amazon ECS 구성을 사용하여 작업 및 이미지 정리를 자동화하고 중지된 작업과 사용하지 않는 Docker 이미지를 제거하십시오. 또한 ECS_RESERVED_MEMORY 변수를 사용하여 작업이 사용 가능한 메모리를 모두 소비하지 않도록 하십시오.

리포지토리에서 오래되거나 사용하지 않는 이미지를 자동으로 정리하려면 Amazon Elastic Container Registry(Amazon ECR) 수명 주기 정책을 사용하십시오. 이미지, 컨테이너 인스턴스, 볼륨, 네트워크 등과 같이 사용하지 않는 객체를 정리하려면 Docker prune 명령을 사용하십시오. 자세한 내용은 Docker Docs 웹사이트에서 사용하지 않는 Docker 객체 정리를 참조하십시오.

모든 마운트된 파일 시스템에서 사용하는 디스크 공간을 보려면 다음 명령을 실행합니다.

df -h

특정 파일 시스템에서 사용하는 디스크 공간을 보려면 다음 명령을 실행합니다.

df -h /

참고: 위 명령은 루트 파일 시스템의 데이터만 표시합니다.

사용 가능한 inode가 거의 없기 때문에 리소스 문제가 발생할 수 있습니다. inode 사용을 확인하려면 다음 명령을 실행합니다.

df -i

특정 디렉터리에서 사용하는 전체 디스크 공간을 보려면 다음 명령을 실행합니다.

du -sh /path/to/directory

참고: directory를 디렉터리 이름으로 바꾸십시오.

애플리케이션에서 가장 큰 디렉터리 또는 파일을 나열하려면 다음 명령을 실행합니다.

du -ah /path/to/directory | sort -rh | head -n 10

참고: 위의 명령은 가장 큰 파일 또는 디렉터리 10개를 나열합니다. 10을 보고자 하는 대용량 파일 및 디렉터리 수로 바꾸고 directory를 디렉터리 이름으로 바꾸십시오.

디렉터리에 있는 각 하위 디렉터리의 크기를 확인하려면 다음 명령을 실행합니다.

du -h --max-depth=1

사용 가능한 용량을 최적화하려면 EC2 인스턴스의 스팟 플릿 또는 용량 공급자를 사용하십시오. 자세한 내용은 스팟 플릿을 활용한 Amazon ECS 성능 강화를 참조하십시오.

관련 정보

내결함성 및 결함 격리

SSH를 사용하여 Amazon EC2 Linux 인스턴스에 연결할 때 발생하는 문제를 해결하려면 어떻게 해야 합니까?

Amazon EBS 암호화

Amazon EC2 모범 사례

Amazon ECS 모범 사례

AWS 공식
AWS 공식업데이트됨 2달 전
댓글 없음

관련 콘텐츠