최근 아시아 지역에서 간헐적으로 접속할 때 오류가 발생한다는 보고가 들어왔다.
아시아 지역 외에서는 문제가 없었기에 특정 지역에 한정된 문제라는 것을 알 수 있었습니다. 그러나Health Check결과는 모두 정상 상태로 나왔다"왜 이런 일이 발생했을까?" 생각하면서 여러 가지 가능성을 살펴보았다 만약 Tomcat에 장애가 발생하거나 Tomcat이 종료되었다면, Nginx에서 500 오류가 발생하고 백업 서버로 트래픽이 전환되어 사용자들은 문제를 경험하지 않았을 것이다. 그렇다면 문제는
Nginx있는 걸까?직접 EC2 인스턴스에 접근하여 확인하려 시도했지만 접근할 수 없었다. 모니터링 툴을 통해 특정 시간부터 해당 서버로 API 요청이 흐르지 않고 있다는 것을 발견했다."이거 큰일이군!"이라는 생각과 함께 긴급하게 우선 ALB(Application Load Balancer)에서 해당 EC2 인스턴스를 타겟에서
Deregister했다. 불행 중 다행으로, 사용자들은 정상화되었다는 피드백을 받을 수 있었고 이슈의 원인 및 해결 과정을 기록해보려 한다.
EBS(Amazon Elastic Block Store)는AWS에서 제공하는 고성능 블록 스토리지 서비스로, EC2 인스턴스에 사용되는 블록 스토리지를 제공한다. EBS는 데이터를 지속적으로 보존하며, 네트워크를 통해 EC2 인스턴스에 연결된다. 이를 통해 운영 체제와 애플리케이션이 데이터를 저장하고 액세스할 수 있다. (SSD를 마운트하는 방식으로 생각하면 이하하기 쉬울것 같다)
Stalled I/O란, I/O(입출력) 작업이 예상보다 오랜 시간 동안 완료되지 않고 지연되는 현상을 의미한다. 이 문제가 발생하면, EC2 인스턴스는 EBS 볼륨에 접근할 수 없게 되어 심각한 문제를 초래할 수 있다. (EC2와 EBS간 네트워크 이슈가 생기는 일은 매우 드물지만 일어날 수 있다고 공신문서에 나와 있다...!)
AWS EBS 볼륨 모니터링 공식 문서
EC2 Instance > Storage > Stalled I/O check

Amazon EBS에서 볼륨의 데이터가 잠재적으로 일치하지 않는 것으로 확인하면 데이터 손상을 방지하기 위해 기본적으로 연결된 EC2 인스턴스에서 볼륨으로의 I/O가 비활성화됩니다. (By. AWS 공식 문서)
EC2 인스턴스가 EBS에 접근하지 못하면 심각한 문제가 발생할수 있다. EC2 인스턴스는 부팅 시와 운영 중에 EBS 볼륨에 접근해야 하기 때문에 네트워크가 끊기면 다음과 같은 문제가 발생할 수 있다.
인스턴스를 재시작하여 문제를 해결할 수도 있다. 이는 가장 간단한 해결 방법 중 하나이다.
EC2 Serial Console은 네트워크 연결 없이도 EC2 인스턴스의 콘솔에 직접 접근할 수 있는 기능을 제공한다. 이를 통해 인스턴스의 시스템 로그를 확인하고 문제를 해결할 수 있다
EC2 대시보드 > Connect > EC2 serial console > Connect

위와 같이 EC2로 접근하여 재시작 또는 필요한 조치를 할 수 있다.
EBS는 EC2 인스턴스와 함께 사용되는 고성능 블록 스토리지로, 안정성과 성능을 제공한다. 그러나 아주 드물게 네트워크 문제로 인해 EC2와 EBS 간의 연결이 끊길 수 있으며, 이로 인해 EC2 인스턴스에 접근할 수 없는 상황이 발생할 수 있다. 이 경우, EC2 Serial Console을 통해 직접 접근하여 문제를 해결하거나 인스턴스를 재시작하여 문제를 해결할 수 있다. 아주 드물게 발생한다고 하는데 그게 나한테 일어날줄은 몰랐다. 그래도 원인은 알아냈으니 다행이라고 생각한다.