Intro.
결론부터 이야기하면 해당 문제점은 에러가 아니고 정상적인 상황이다.
EB 환경에서 상태 간 전환이 발생할 때 확장 상태 시스템은 이벤트를 생성한다.
1. 문제점
헬스 체크하는 과정에서 ELB가 헬시 하지 않다는 내용이다.
왜 이런 문제가 발생할까?

2. 상태파악
배포 방식을 "추가 배치를 사용한 롤링"을 선택한다면, 이 WARN은 에러가 아니다. 인스턴스가 새롭게 추가되고 기존 인스턴스가 종료되는 과정에서 뜨는 경고 메세지인 것이다. 그래서 이러한 과정을 거치면 아주 정상적으로 서비스가 잘 운영이 된다.
3. 진짜 문제점
github action으로 CI/CD를 EB에서 처리하는 경우 github action이 이러한 상태 변화가 몇 십초 or 몇 분 지속되었을 경우를 에러로 인식하는 것이 문제다.

위에 메세지 처럼 github action이 상태 간 전환을 잘 받아들이지 못한다.
4. 문제 파악 - 추가 배치를 사용한 롤링 옵션으로 배포 유지하고 싶을 때

- 위에 보다 싶이 Recovery wait time이 30초이다. 해당 초를 늘려주면 EB 상태가 Degraded에서 Ok로 돌아올때까지 기다려 줄 수 있다.
- name: Deploy to EB
uses: einaregilsson/beanstalk-deploy@v20
with:
aws_access_key: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws_secret_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
application_name: share-food-server
environment_name: qa-share-food
version_label: ${{ env.REPOSITORY_NAME }}-${{steps.current-time.outputs.formattedTime}}
region: ${{ secrets.AWS_EB_REGION }}
# 추가 배치를 사용한 롤링 옵션으로 recovery 시간을 충분히 주면 상태가 돌아올 때까지 기다릴 수 있다.
wait_for_environment_recovery: 300
deployment_package: deploy/deploy.zip
- 여기서 wait_for_environment_recovery: 300 으로 변경해주면 5분이므로, EB 상태가 Degraded에서 Ok로 충분히 돌아올 수 있다.
5. 문제 파악 - 배포 방식(추가 배치를 사용한 롤링)
1) 문제는 추가 배치를 사용한 롤링 옵션이다.

2) 해결책

이렇게 변경해주면 정상 작동 된다.
ps. 둘 중 하나의 방식을 사용하면 된다.
references
https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/health-enhanced.html
https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/awseb-dg.pdf#health-enhanced
https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/health-enhanced-enable.html
'AWS' 카테고리의 다른 글
| S3 정적 파일 업로드 + CloudFront + Route 53 연동 (0) | 2022.08.11 |
|---|---|
| IAM 계정 설정 (0) | 2022.07.25 |
| .ebextensions + private S3 버킷 접근 설정 (0) | 2022.07.18 |
| [CI/CD] Github Action for a test (0) | 2022.07.13 |
| [CI/CD] Github Prod Repo + Github Action + ECR tag + Dockerrun.aws.json 설정 (0) | 2022.07.12 |