Azure Cosmos DB for PostgreSQL에 대한 연결 문제 해결
적용 대상: Azure Cosmos DB for PostgreSQL(PostgreSQL에 대한 Citus 데이터베이스 확장 기반)
연결 문제는 다음과 같은 여러 가지 이유로 발생할 수 있습니다.
- 방화벽 설정
- 연결 제한 시간
- 잘못된 로그인 정보
- 클러스터의 연결 한도에 도달함
- 서비스 인프라 관련 문제
- 서비스 유지 관리
- 코디네이터 노드가 새 하드웨어로 장애 조치(failover)됨
일반적으로 Azure Cosmos DB for PostgreSQL에 대한 연결 문제는 다음과 같이 분류할 수 있습니다.
- 일시적 오류(단기 또는 일시적)
- 영구적 또는 일시적이지 않은 오류(정기적으로 되풀이되는 오류)
일시적인 오류의 해결
일시적인 오류는 여러 가지 이유로 발생합니다. 가장 일반적인 이유로는 시스템 유지 관리, 하드웨어 또는 소프트웨어 오류, 코디네이터 노드 vCore 업그레이드 등이 있습니다.
클러스터 노드에 고가용성을 사용하도록 설정하면 해당 유형의 문제를 자동으로 완화할 수 있습니다. 그러나 애플리케이션에서 일시적인 연결 끊김에 대비해야 있습니다. 대용량 트랜잭션으로 인해 장기 실행 복구가 발생하는 경우와 같은 다른 이벤트는 완화하는 데 시간이 오래 걸릴 수도 있습니다.
일시적인 연결 문제를 해결하는 단계
- Microsoft Azure 서비스 대시보드에서 애플리케이션이 오류를 보고한 시간 동안 발생한 알려진 중단을 모두 확인합니다.
- Azure Cosmos DB for PostgreSQL과 같은 클라우드 서비스에 연결하는 애플리케이션은 일시적인 오류를 예상하고 정상적으로 대응해야 합니다. 예를 들어 애플리케이션은 사용자에게 애플리케이션 오류로 표시하는 대신 다시 시도 논리를 구현하여 오류를 처리해야 합니다.
- 클러스터가 해당 리소스 한도에 가까워지면 오류가 일시적인 연결 이슈처럼 보일 수 있습니다. 노드 RAM을 늘리거나 작업자 노드를 추가하고 데이터 균형을 다시 조정하면 도움이 될 수 있습니다.
- 연결 문제가 계속되거나 60초 넘게 지속되거나 하루에 두 번 이상 발생하는 경우 Azure 지원 사이트에서 지원 받기를 선택하여 Azure 지원 요청을 제출합니다.
지속적인 오류의 문제 해결
애플리케이션이 영구적으로 Azure Cosmos DB for PostgreSQL에 연결하지 못하는 경우 가장 일반적인 원인은 방화벽 구성 오류 또는 사용자 오류입니다.
- 코디네이터 노드 방화벽 구성: 서버 방화벽이 프록시 서버 및 게이트웨이를 포함하여 클라이언트에서 연결을 허용하도록 구성되어 있는지 확인합니다.
- 클라이언트 방화벽 구성: 클라이언트의 방화벽은 데이터베이스 서버에 연결을 허용해야 합니다. 일부 방화벽의 경우 애플리케이션을 이름으로 허용하는 것은 물론 서버의 IP 주소와 포트도 허용해야 합니다.
- 사용자 오류: 연결 문자열을 다시 확인합니다. 서버 이름과 같은 매개 변수를 잘못 입력했을 수 있습니다. Azure Portal에서 다양한 언어 프레임워크 및 psql의 연결 문자열을 확인할 수 있습니다. 클러스터의 연결 문자열 페이지로 이동합니다. 또한 클러스터에는 데이터베이스가 하나만 있고 미리 정의된 이름은 citus여야 합니다.
지속적인 연결 문제를 해결하는 단계
- 클라이언트 IP 주소를 허용하도록 방화벽 규칙 을 설정합니다. 임시 테스트 용도로만 0.0.0.0을 시작 IP 주소로 사용하고 255.255.255.255를 끝 IP 주소로 사용하여 방화벽 규칙을 설정합니다. 해당 규칙은 모든 IP 주소에 대한 서버를 엽니다. 규칙에서 연결 이슈를 해결하는 경우 해당 규칙을 제거하고 적절하게 제한된 IP 주소 또는 주소 범위에 대한 방화벽 규칙을 만듭니다.
- 클라이언트와 인터넷 사이에 있는 모든 방화벽에서 아웃바운드 연결에 대해 포트 5432(연결 풀링을 사용하는 경우 6432)가 열려 있는지 확인합니다.
- 연결 문자열 및 기타 연결 설정을 확인합니다.
- 대시보드에서 Service Health를 확인합니다.