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