본문 바로가기
Final Project

Devops Day 77 (6.23) Final Project_Day 11~14

by Jackykim 2023. 6. 28.

AWS 시스템 및 Terraform 코드 작성하면서 있었던 이슈 작성합니다. 
가장 힘들고 문제있었던 점은 RDS 하고 ECS 하고 연결 하는 것 이 였습니다. 

이슈 1.
1.1 RDS 생성은 하였으나 보안 그룹 설정이 올바르게 되었는지 확신이 없어 다른 팀원이 생성한 EKS RDS 정보를 AWS GUI에서 참고하며 terraform 코드를 수정하였습니다. 그러나 terraform 코드를 수정하는 도중에 너무 많은 수정을 해서 추가적인 오류가 발생하였습니다. EKS RDS는 EC2 보안 그룹을 추가하는 것이 정상적이지만 ECS에서는 이는 불필요하므로 잘못된 설정을 하고 있었습니다. 다른 팀원은 ingress/egress만 설정하고 추후에 설정을 완료하는 것을 추천하였습니다.


1.2 RDS는 생성하였으나 우선적으로 ECS 클러스터에 서비스와 태스크가 생성되었는지를 확인해야 했습니다. RDS와 ECS 간의 연결이 제대로 이루어졌는지 확인하기 위해 ECS 서비스를 통해 확인해야 했지만 작업 순서를 놓쳐 작업량이 증가하였습니다. 따라서, 현재는 Terraform을 사용하여 모든 서비스를 하나씩 적용하고 확인하고 있습니다.

 

이슈 2: 태스크 정의 설정 문제
Terraform 코드에 태스크 정의에 환경 변수들이 누락되어 접근 권한 문제가 발생한 것으로 의심했습니다. 또한, 환경 변수가 잘못되면 ECS와 RDS의 연결이 원활하지 않을 수 있다는 사실을 알고 있습니다. 추가로, 보안 그룹 및 태스크 정의 Terraform 코드에서 허용된 포트는 80으로 설정되어 있었지만, 우리의 백엔드 코드는 4000번 포트로 설정되어 있어 연결이 이루어지지 않았습니다. 포트 번호를 4000으로 추가 및 수정하니 ECS의 퍼블릭 IP 주소에 정상적으로 접속할 수 있었습니다.

 

ECS와 RDS 사이의 연결이 되지 않아 몇 일 동안 문제를 찾고 고민해 보았습니다. 확인할 수 있는 문제는 주로 보안 그룹이었습니다. RDS와 ECS 간에 서로 통신할 수 있는 방법이 없었습니다. 따라서, 3306 포트를 설정하여 서로의 커뮤니케이션이 가능하도록 조치하였습니다.

 

이슈 3: ECR에 이미지 푸시할 때 코드 설정 문제
ECR에 이미지를 푸시할 때 코드에서는 "latest"로 설정되어 있어 이미지가 올바르게 빌드되고 배포되지 않았습니다. 이미지 번호로 코드를 수정하면 문제없이 작동되었습니다. 또 다른 해결 방법으로는 빌드 및 배포하기 전에 GitHub Action에서 "latest" 태그를 사용하는 방법이 있습니다.

이슈 4: Terraform 코드에서 태스크 정의나 RDS에 CloudWatch 및 로그가 없어 진행 상황과 발생하는 문제를 파악할 수 없었습니다. 나중에 AWS 콘솔에서 직접 CloudWatch 및 로그를 추가하여 문제점을 확인할 수 있었습니다. 이후로는 Terraform 코드에 CloudWatch 기능을 추가하였습니다.

 

이슈 5: 태스크 정의와 ALB를 확인했을 때, 계속해서 Unhealthy와 Healthy가 표시되어 문제를 확인하였습니다. 이유는 443번과 80번 포트만 설정되어 있었기 때문입니다. 따라서, 4000번 포트를 추가로 설정하니 두 개의 태스크가 즉시 Healthy로 변경되었습니다.

 

이슈 6: RDS와 ECS를 연결하여 확인하고자 EC2를 추가하려고 했지만 권한 문제로 연결할 수 없었습니다. 다른 팀원은 일반적인 SSH 방법과는 다른 EC2에 직접 접속하는 방법으로 접속이 가능했습니다. 이를 통해 시스템 및 권한 설정에 문제가 있었음을 판단하였습니다.

 

같은 문제들로 인해 여러 날 동안 문제에 직면하고 해결책을 찾기 위해 노력했으나, 문제의 원인을 알 수 없어 Terraform이 아닌 AWS 콘솔에서 시스템을 처음부터 다시 구현하였습니다. 하지만 여전히 같은 문제로 인해 진행이 불가능했습니다. 이후에는 다른 팀원들과 함께 이슈들을 확인하면서 보안 그룹 설정 및 환경 설정과 관련된 문제점을 확인하였고, 이를 통해 RDS와 ECS가 연결되어 있는지를 POSTMAN 및 Route 53 도메인 사이트를 통해 확인할 수 있었습니다.