2. 본 강연에서 다룰 내용
AWS 서비스를 사용하면서 겪는 운영 이슈 발생 시
• 아키텍처 관점에서 해결할 수 있는 방법
• AWS 주요 서비스 사용 시 문제 해결 방법
• Elastic Compute Cloud (EC2)
• Auto Scaling
• Classic Load Balancer (Elastic Load Balancing)
• AWS Support를 통한 지원
9. EC2 사용시 만날 수 있는 운영 이슈
• 유형 1: 상태 확인 이슈
• 유형 2: 인스턴스 자동 재시작
• 유형 3: 인스턴스 생성 이슈
• 유형 4: 인스턴스 접속 이슈
10. 유형 1: 상태 확인 이슈
• EC2 상태 확인 유형
물리적 호스트
EC2 EC2 EC2 EC2 시스템 상태 확인
인스턴스 상태 확인
11. 유형 1: 상태 확인 이슈
• 시스템 상태 확인 이슈 원인
• 네트워크 연결 끊김 / 시스템 전원 중단
• 물리적 호스트의 소프트웨어 문제
• 물리적 호스트의 하드웨어 문제로 인한
네트워크 접속 문제
• 인스턴스 상태 확인 이슈 원인
• 시스템 상태 확인 실패
• 잘못된 네트워킹 또는 스타트업 구성
• 메모리가 모두 사용됨
• 파일 시스템 손상, 호환되지 않는 커널
(System)
12. 유형 1: 시스템 상태 확인 이슈 시 해결방법
• 인스턴스 재시작 (인스턴스 스토어 데이터 손실)
• AMI를 통한 인스턴스 재생성
• CloudWatch Alarm을 통한 자동 복구
13. • 인스턴스 재시작 (인스턴스 스토어 데이터 손실)
• 인스턴스 리부팅
• 대부분은 운영체제 단에서 문제 발생
유형 1: 인스턴스 상태 확인 이슈 시 해결방법
2. 다른 인스턴스에 데이터 볼륨으로 연결 후
설정 파라미터 변경
• Linux: 커널 파라미터 파일 수정
• Windows: EC2Rescue를 이용한 수정
1. 루트 볼륨을 인스턴스에서 분리
3. 루트 볼륨 인스턴스에 연결
14. 유형 2: 인스턴스 자동 재시작 발생 시
• 예정된 이벤트가 있었는지 확인
• EC2의 Events, Personal Health Dashboard에서 이벤트 확인
• 인스턴스 로그 확인
• 예: syslog, dmesg, Windows event logs
• CloudTrail을 통해서 확인
15. 유형 3: 인스턴스 생성 이슈
• 인스턴스 생명 주기
• 인스턴스가 생성 즉시 바로 종료된다면?
running shutting-down
stopping
pending
stopped terminated
Launch
Stop
Terminate
Start
shutting-downpending terminated
Launch
16. 유형 3: 인스턴스 생성 이슈
• 인스턴스가 생성 즉시 종료가 되는 경우
• EBS 볼륨 Limit을 초과한 경우: Support Center를 통해 EBS
limit을 증가 요청
• 고객 AMI 이미지가 잘못 생성 되었을 경우: 이미지를 재생성
• 인스턴스가 종료된 원인을 알 수 있는 방법
• EC2 콘솔 상에서 확인
State transition reason Client.UserInitiatedShutdown: User initiated shutdown
State transition reason Client.VolumeLimitExceeded: Volume limit exceeded
• CLI를 통해서 확인:
$ aws ec2 describe-instances --instance-id instance_id
--query 'Reservations[0].Instances[0].StateReason.Message'
17. 유형 4: 인스턴스 접속 이슈
virtual private cloud
Availability Zone
security group
region
사용자
Availability Zone
VPC subnet
1
2 4
Network Access
Control List
Security Group
Instance
Route Table
3
18. 유형 4: 인스턴스 접속 이슈
1. Network Access Control List (ACL)의 Inbound,
Outbound Rule 모두 확인 (Stateless)
2. 인스턴스의 Security Group Rule 확인
3. Route Table을 확인
• 인터넷을 통해서 접속할 경우 VPC 바깥으로 나가는 트래픽
(0.0.0.0/0)은 모두 인터넷 게이트웨이를 향하도록 설정
4. 인스턴스 자체 문제인지 확인
• 인스턴스가 너무 바쁜 것은 아닌지 확인
• Private key 및 OS별 기본 사용자 확인
20. Auto Scaling에서 만날 수 있는 운영 이슈
신규 인스턴스 생성
Auto Scaling group
Scale In/Out
Auto Scaling group
CloudWatch 알람 설정
Auto Scaling group
21. 유형 1: 신규 인스턴스 생성 이슈
• 원인 1. Launch Configure 설정
• Security Group
• EC2 Key Pair
• 해결책
• 새 Launch Configuration 생성
• Auto Scaling Group이 새
Launch Configuration을
이용하도록 변경
Auto Scaling group
New Launch Configuration
22. 유형 1: 신규 인스턴스 생성 이슈
• 원인 2. 각종 Limit 도달
• Instance
• EBS Volume
• Network Interfaces
• 해결책
• Support Center에
Limit Increase 요청
Auto Scaling group
0
10
20
Limit
23. 유형 2: Scale In/Out 이슈
• 원인 1. Auto Scaling Group이 Suspended 되었을 경우
• 해결책 : Suspended Processes를 제거하여 다시 시작
Auto Scaling group
24. 유형 2: Scale In/Out 이슈
• 원인 2. 마지막 Scaling Event로부터 Cooldown 시간이
지나지 않았을 경우
• 해결책 : Cooldown Time이 길지 않은지 확인 후 조정
Auto Scaling group
25. 유형 2: Scale In/Out 이슈
• 원인 3. Lifecycle Hooks를 설정 하였으나, Auto
Scaling에 신호를 보내지 않을 경우
• 해결책 : Complete-lifecycle-action이 제대로
수행되었는지 확인
$ aws autoscaling complete-lifecycle-action
--lifecycle-hook-name my-lifecycle-hook
--auto-scaling-group-name my-asg
--lifecycle-action-result CONTINUE
--lifecycle-action-token
bcd2f1b8-9a78-44d3-8a7a-4dd07d7cf635
26. 유형 2: Scale In/Out 이슈
• 원인 4. Instance Limit에 도달했을 경우
• 해결책
• 필요 없는 인스턴스를 정지
• Support Center에 Limit Increase 요청
27. 0
20
40
60
80
100
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
CPU Utilization (Consecutive Periods : 3)
Value
Threshold
유형 3: CloudWatch Alarm 설정
• CloudWatch Alarm은 Consecutive Period 설정 값만큼
연속으로 Threshold를 넘어서야 Alarm이 울림
• 해결책 : Threshold를 조정
9번째 데이터 지점부터 CPU 부하가 높아졌지만 13번째 데이터 지점에서 Alarm이 울림
28. 0
20
40
60
80
100
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
CPU Utilization (Consecutive Periods : 3)
Value
Threshold
유형 3: CloudWatch Alarm 설정
• CloudWatch Alarm은 Consecutive Period 설정 값만큼
연속으로 Threshold를 넘어서야 Alarm이 울림
• 해결책 : Threshold를 조정
Threshold를 60에서 55로 변경 후 11번째 데이터 지점에서 Alarm이 일찍 울림
30. ELB에서 만날 수 있는 운영 이슈
HTTP 5xx errors Instance Out of Service Health Check Failure
HTTP 502
HTTP 503
HTTP 504
Instance
Out of Service
31. HTTP 502
Bad Gateway
HTTP 504
Gateway Timeout
HTTP 503
Service Unavailable
유형 1: HTTP 5xx errors
Header: @(!*#*^%*$@^&(
or
32. 유형 1-1: HTTP 502 Bad Gateway
• 원인. 백엔드 인스턴스로부터 온 응답을 ELB가 받지 못할
경우 발생
• 해결책
• 인스턴스의 WAS 로그를 참조하여 응답이 제대로 갔는지 확인
• 응답이 정상이었음에도 불구하고 이슈 발생 시
Support Center에 케이스 오픈
Header: @(!*#*^%*$@^&(
33. 유형 1-2: HTTP 503 Service Unavailable
• 원인 1. 인스턴스가 한 대도 등록되어 있지 않을 경우
• 해결책
• 인스턴스 등록
No instance
34. 유형 1-2: HTTP 503 Service Unavailable
• 원인 2. 모든 인스턴스가 Unhealthy 상태일 경우
• 해결책
• Health Check 점검으로 Healthy 인스턴스를 만들어 해결
• Security Group 등 VPC 설정을 점검하여 인스턴스가 ELB와
통신 가능한 상태인지 점검
All Instances are unhealthy.
35. 유형 1-2: HTTP 503 Service Unavailable
• 원인 3. 짧은 시간에 Request가 급격하게 들어오는 경우
• 해결책
• 예상된 피크 트래픽일 경우 Pre-warming 신청
• 일시적으로 ELB의 Scaling 시간이 부족하여 발생할 수 있으며
이 경우 수 분 이내로 해결됨
• 이슈가 지속될 경우 Support Center에 케이스 오픈
36. 유형 1-3: HTTP 504 Gateway Timeout
• 원인 1. 인스턴스의 요청 처리 시간 > ELB Timeout 시
HTTPCode_ELB_5XX 및 Latency metrics 동시 증가
• 해결책
• 인스턴스 CPU Utilization이 높을 경우 새 인스턴스 추가
• 프로그램이 데이터베이스나 외부 API 등 외부에
Dependency가 있을 경우 해당 Dependency 점검
2017-04-20 00:00:00
2017-04-20 00:01:01
Timeout:60s
37. 유형 1-3: HTTP 504 Gateway Timeout
• 원인 2. 인스턴스가 ELB 요청을 닫을 경우 발생
• 해결책
• 백엔드 서버의 Keep-alive를 활성화
• 백엔드 서버의 Keep-alive Timeout을 ELB Timeout보다 높게 설정
38. 유형 2: Instance Out of Service
• 원인 1. Instance is in stopped state
• 해결책
• 인스턴스 시작
Instance is in stopped state.
39. 유형 2: Instance Out of Service
• 원인 2. Instance registration is still in progress
• 해결책
• 인스턴스가 최근에 추가되었을 경우 등록 진행 중이며
짧은 시간 이내로 자동으로 해결
• 이슈가 지속될 경우 Support Center에 케이스 오픈
Instance registration is still in
progress
40. 유형 2: Instance Out of Service
• 원인 3. Instance has failed at least the Unhealthy
Threshold number of health checks consecutively
• 해결책
• Health Check 이슈 해결 방법과 동일하게 해결
Instance has failed at least the
Unhealthy Threshold number of
health checks consecutively.
41. 유형 3: Health Check 이슈
• 원인 1. Health Check Target Page가 200 이외의 코드를
반환할 경우
• 해결책
• ELB는 Health Check Target Page가 non-200 코드를 반환 시
인스턴스를 Unhealthy 처리. 특히 HTTP 302 (Redirect)를
반환하여 Health Check 이슈가 자주 일어남
• Health Check Target이 HTTP 200 코드를 반환하도록 수정
Header: HTTP 302 Redirect
42. 유형 3: Health Check 이슈
• 원인 2. Health Check Timeout
• 해결책
• 백엔드 서버의 Keep-alive를 활성화
• 백엔드 서버의 Keep-alive Timeout을 ELB Timeout보다 높게 설정
• Health Check 페이지의 외부 Dependency (DB 등) 점검
2017-04-20 00:00:00
2017-04-20 00:00:21
Health Check
Timeout:20s
44. AWS Support
• 전 세계의 AWS Support 직원들이 24x7x365 지원
• 4개의 Support Plan 지원
• Basic
• Developer
• Business
• Enterprise
• 한국어 지원 포럼
• 한국어 지원 엔지니어
45. Support Plan
Basic Developer Business Enterprise
고객 서비스 및
커뮤니티
고객 서비스, 설명서, 백서 및 지원 포럼에 연중무휴 24시간 액세스
모범 사례 4개 핵심 Trusted Advisor 검사에 접근 전체 세트 Trusted Advisor 검사에 접근
기술 지원 업무 시간 내
이메일 연락
연중무휴 24시간
이메일, 채팅 및 전화로 연락
연중무휴 24시간
선임 클라우드 엔지니어에게
이메일, 채팅 및 전화로 연락
사례 심각도/
응답 시간*
일반 지침: <24업무 시간**
시스템 손상: <12업무 시간**
일반 지침: <24시간
시스템 손상: <12시간
프로덕션 시스템 손상: <4시간
프로덕션 시스템 중단: <1시간
일반 지침: <24시간
시스템 손상: <12시간
프로덕션 시스템 손상: <4시간
프로덕션 시스템 중단: <1시간
비즈니스 크리티컬 시스템 중단:
<15분
아키텍쳐 지원 일반 지침 사용 사례에 따라 컨텍스트
기반 지침
애플리케이션에 따라 컨설팅
형태의 검토 및 지침
인프라 이벤트 관리 추가 이용료 지불 후 지원 포함
사전 지침 전담 기술 지원 담당자
*AWS에서는 해당하는 시간 이내에 초기 요청에 응답하기 위해 최선을 다하고 있습니다.
**업무 시간은 내 계정 콘솔에 설정된 바와 같이 일반적으로 고객 국가 기준으로 휴일과 주말을 제외한 오전 8시부터 오후 6시까지로 정의됩니다. 여러 시간대를 가진 국가에서는 이 시간이 달라질 수 있습니다.
46. 맺음말
ü 운영을 고려한 튼튼한 아키텍처 설계
ü EC2 / Auto Scaling / 클래식 로드 밸런서 (ELB)에 대한
기본적인 문제 해결 방법 제시
ü 문제가 해결되지 않을 경우 AWS Support에 연락
47. 본 강연이 끝난 후…
Ø Support Center
한국어 포럼 : https://forums.aws.amazon.com/forum.jspa?forumID=139&start=0
기술지원센터 : https://console.aws.amazon.com/support/
AWS 지식 센터 : https://aws.amazon.com/premiumsupport/knowledge-center/
Ø Well-Architected 한글 백서
https://d2908q01vomqb2.cloudfront.net/7b52009b64fd0a2a49e6d8a939753077792b0554/2017/02/02/Well-
Architected_Whitepaper_ko-2016-11.pdf
Ø 문제 해결
http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/ec2-instance-troubleshoot.html
http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/WindowsGuide/troubleshooting-windows-instances.html
http://docs.aws.amazon.com/ko_kr/autoscaling/latest/userguide/CHAP_Troubleshooting.html
http://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/classic/elb-troubleshooting.html
49. https://www.awssummit.kr
AWS Summit 모바일 앱을 통해 지금 세션 평가에
참여하시면, 행사 후 기념품을 드립니다.
#AWSSummitKR 해시태그로 소셜 미디어에
여러분의 행사 소감을 올려주세요.
발표 자료 및 녹화 동영상은 AWS Korea 공식 소셜
채널로 공유될 예정입니다.
여러분의 피드백을 기다립니다!