본문 바로가기

⭐ AWS/AutoScaling

EC2 오토스케일링 시 Docker 컨테이너 자동 실행

수일간의 인터넷 검색과 삽질끝에 아래의 문제들에 대한 답을 찾았다.(스택 오버플로우에도 없더라...ㅠㅠ)

 

1. Auto Scaling 시 EC2 인스턴스에 설치된 Docker Container의 자동 실행

2. AWS Auto Scaling 시 대상그룹에서의 EC2에 설치된 Docker Container Unhealthy 상태 문제

 

해결방법

1. Auto Scaling 시 EC2 인스턴스에 설치된 Docker Container의 자동 실행 문제

→ 실제 사용 명령어 : docker run --restart=always -p 9090:80 webserver_02

AWS EC2 인스턴스에서 오토스케일링 스케일 아웃 시 인스턴스를 자동으로 생성한다. 근데 문제가... 스케일 아웃 시 도커 컨테이너는 자동으로 올라오지 않는 문제가 발생했다. 행여나 그럴것이, 자동실행 옵션도 주지 않고, 그냥 실행만 했으니;;

Docker는 자동으로 올라올줄 알았어... 구글이 만들었으니 자동으로 실행되 되는줄...;;

허나 자동으로 올라오지 않아서 /ect/systemd/system/안에 systemctl의 서비스도 등록해보고 스택 오버플로우에도 찾아보고~ 다 했는데 문제는 진짜 의외로 간단했다...

—restart=always 요거 옵션 하나만 추가하면 됐었다... 음 문제해결

 

2. AWS Auto Scaling 시 대상그룹에서의 EC2에 설치된 Docker Container Unhealthy 상태 문제

이것도 생각해보면 간단한 문제인데... 삽질을 오랬동안 했다. 오토스케일링을 적용하면서 발생한 문제인데, 오토 스케일링 발생 시 대상그룹에서 Docker Container가 설치된 인스턴스가 계속 Unhealthy 상태가 되는 것이다.

논리적으로는 문제가 없어보였다. Docker Container가 자동으로 생성이 안됐었나 하고 보니, 자동으로 생성이되고 실행까지 아주 잘 하고 있었다.

→ 이상없이 실행되고 있다.

문제가 뭘까? 고민하던중 의외로 정말 간단한 문제인데 등잔밑이 어둡다고하나... 기본적인 문제를 생각하지 못하고 있었었다. 바로 시작 템플릿에서의 보안그룹의 설정 이었다.

생각을 해보면 오토스케일링 후 도커 컨테이너가 아무리 잘 실행 되었다고 해도, 포트가 전부 막혀있으면 통신이 안되서 모두 상태체크 시 Unhealthy 상태가 됐던 것이다.

→ 시작 템플릿의 보안그룹을 도커 컨테이너가 설치된 보안그룹과 동일하게 설정해주면 아주 정상적으로 상태체크를 한다.

→ 요 이름없는 인스턴스들이 바로 오토스케일링으로 생성된 것들이다.

→ 모두 정상적으로 오토스케일링 된 것을 볼 수 있다.

결론!

2가지만 체크하자.

1. docker run --restart=always -p 9090:80 webserver_02 → (--restart=always 옵션 꼭 주기)

2. 시작 템플릿 보안그룹을 대상그룹의 보안그룹과 일치 시키기, 말이 좀 어려운데 음 시작 인스턴스의 보안그룹을 기존에 있던 인스턴스의 보안그룹과 동일해야 포트 통신을 하는 서비스가 정상적으로 동작하는 개념으로 이해하길 바람.

-끝-

'⭐ AWS > AutoScaling' 카테고리의 다른 글

Auto-Scaling 그룹을 생성해 보자.  (0) 2021.06.10