장애 발생 배경
현재 서비스에서 RDS MySql의 버전을 5.7.x를 사용하고 있습니다. 구성에서 확인할시 지원하는 버전 중 낮은 편에 속했고 데이터베이스 스케일 업 이후 버전업도 고려했던 터라 개발환경을 먼저 8.0.31 로 버전 업하였습니다. 개발 DB에 실험적으로 먼저 진행 후 여파나 문제 상황을 해결하고 상용 환경에도 반영할 예정이었습니다. 그러나 문제가 생겨서 개발 DB에서 작업을 지속할 수 없는 상태가 되었습니다. 따라서 롤백을 하기 위해 구성에서 이전 버전을 선택하려 했지만 하위 버전 선택이 제한되어 직관적으로 롤백을 할 수 없게 되었습니다.
장애 현상
개발 DB에 연결이 되지 않았습니다. 에러 문구를 보아 TLS 버전과 관련있어 보였습니다.
InterfaceError: (mysql.connector.errors.InterfaceError) 2055: Lost connection to MySQL server at '{db 주소}', system error: 1 [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:1091)
장애 해결
선택한 버전에서 현재 사용중인 TLS V1을 지원하지 않기에 연결이 되지 않았습니다. 따라서 mysql-connector의 버전도 올려서 문제가 해소된 것을 확인하였습니다. 다만 개발 DB만을 위한 수정으로 이 내용이 검증, 상용 환경에서 문제 없이 작동해야 한다는 필수 조건이 붙게 되었습니다. 완벽한 해결은 아니었다고 생각합니다.
버전 업 이전에 만들어준 스냅샷을 이용해 새로운 인스턴스를 생성하고 이를 사용중인 개발 DB로 대체할 예정이었습니다. 하지만 서비스 코드 뿐 아니라 다른 인프라들에서도 사용 중이기 때문에 고려할 점이 많아 시도하지 못했습니다.
아쉬운 점
롤백 플랜에 대해 큰 고민 없이 개발 DB라는 이유로 버전 업을 진행한 점이 가장 큰 패착이었습니다. 실제 서비스에 영향을 준 것은 아니지만 특정 업무 환경에 영향을 주었다는 점이 아쉬운 점이었습니다. 따라서 앞으로는 보다 자세한 실행 계획과 롤백 계획을 수립한 후 진행하는 것이 필요하다고 뼈저리게 느끼게 되었습니다.
사실 올린 버전이 가장 최신의 버전으로 TLS V1이 지원되지 않는 경우였는데 낮은 마이너 버전을 사용했다면 운이 좋게 넘어갈 뻔도 했습니다. 사실 운에 기대는 것은 좋지 않지만 결과가 이러니 좀 생각나는 부분 중 하나였습니다.
정리하자면 아래와 같습니다.
- 자세한 실행, 롤백 계획을 수립하지 않은 채 실행하였다.
- 더불어 자료 조사와 현 상태에 대한 조사가 부족했다.
'AWS' 카테고리의 다른 글
[AWS] EBS 용량 변경시 주의 사항 및 파티션 방식 (MBR/GPT) (0) | 2023.03.12 |
---|---|
EC2의 용량을 늘려보자! (No space left on device) (0) | 2023.02.23 |
CodeDeploy에 알림을 추가해보자! (0) | 2023.01.10 |
CodeDeploy가 왜 배포 실패했을까? (0) | 2023.01.07 |
아주 만약에 s3 버킷 내용물이 삭제된다면? (0) | 2022.12.25 |
댓글