연결 디버깅

Private Service Connect 오류 문제 해결하기

대상 데이터베이스에 연결할 수 없음: EOF

연결 테스트를 실행하면 [DATABASE] unable to connect to the destination database: EOF 오류 메시지가 반환됩니다.

원인: 서비스 연결이 잘못 구성되었습니다.

시도해 볼 수 있는 조치: 서비스 첨부 Terraform 구성 파일에서 enable_proxy_protocolfalse로 설정되어 있는지 확인합니다. 프록시 프로토콜은 NGINX 및 Apache와 같은 HTTP 서버에서만 지원됩니다.

gcloud를 사용하여 Private Service Connect 설정을 만들면 기본적으로 프록시 프로토콜이 사용 중지됩니다.

연결 시간 초과, 연결 거부됨

연결 테스트 실행에 실패하거나 시간이 초과됩니다. 이는 Private Service Connect 설정 내에서 라우팅이 잘못 구성되어서 발생할 가능성이 큽니다. 이 문제는 여러 가지 이유로 발생할 수 있습니다.

원인: Private Service Connect NAT CIDR 범위가 배스천이 있는 Private Service Connect 서브넷, 특히 배스천 VM nic0 인터페이스에 액세스하도록 허용하는 방화벽 규칙이 누락되었습니다.

시도해 볼 수 있는 조치: 조직 정책이 Private Service Connect 프로듀서 설정의 Terraform 스크립트 예시에서 정의된 psc_sp_in_fw 방화벽 규칙과 같은 내부 방화벽 규칙을 제한하지 않는지 확인합니다.

가능한 원인: 프록시가 다운되었습니다. 제공된 포트에 리스너가 없으므로 연결이 중단됩니다.

시도해 볼 수 있는 작업: 배스천 VM에 SSH 연결을 설정하고 다음 명령어를 사용하여 프록시를 검색해 볼 수 있습니다.

  • netstat -tunalp | grep PORT

명령어에 대한 응답을 분석합니다.

  • 빈 응답이 표시되면 프록시가 다운된 것입니다. 다음 명령어를 실행해 보세요.

    sudo su; cd /를 실행하고 sudo dpkg -s dante-server을 실행하여 Dante 서버가 설치되어 있는지 확인합니다.

    • 프록시가 설치되면 다음 메시지가 표시됩니다.

      Status: install ok installed

    • 프록시가 설치되어 있지 않으면 라우터가 누락되었을 가능성이 큽니다. 라우터를 추가하고 apt-get install dante-server를 실행하여 프록시를 다운로드할 수 있는지 확인합니다.

  • 프록시가 실행 중이고 제공된 포트에서 리슨하는 경우 다음을 실행하여 프록시에 연결해 보세요.

    1. PostgreSQL 클라이언트를 설치합니다.

      sudo apt-get install postgresql-client.

    2. PostgreSQL 데이터베이스에 연결합니다.

      psql -h 127.0.0.1 -p PORT -U DBUSERNAME -W (비밀번호를 입력하라는 메시지가 표시됨)

      다음을 바꿉니다.

      • PORT: 데이터베이스 포트 번호입니다.
      • DBUSERNAME: PostgreSQL 데이터베이스에 연결하는 데 사용되는 사용자 이름입니다.
    3. telnet 클라이언트를 설치합니다.

      sudo apt-get install telnet

    4. telnet 클라이언트에 연결합니다.

      telnet 127.0.0.1 PORT

      PORT를 데이터베이스 포트 번호로 바꿉니다.

    명령어의 결과에 따라 다음과 같이 진행합니다.

    • 명령어로 연결을 열 수 없는 경우 프록시 로그를 살펴보고 근본 원인을 찾으세요. 근본 원인은 PostgreSQL용 AlloyDB 클러스터 설정에 따라 다를 수 있습니다.

    • telnet을 사용하여 연결이 열렸지만 네이티브 클라이언트에서 중단되는 경우 배스천 IP 주소 라우팅에 문제가 있을 수 있습니다. VM의 터미널에 ip route를 입력합니다. 보조 nic (nic1, DB_SUBNETWORK_GATEWAY IP 주소)를 사용하여 PostgreSQL용 AlloyDB 클러스터 비공개 IP 주소로 연결을 라우팅하는 라우팅 규칙을 찾을 수 있는지 확인합니다.

원인: 서비스 연결이 Database Migration Service에서 오는 엔드포인트 연결을 수락하지 않습니다. 서비스 연결에는 허용된 프로젝트 목록이 포함되어 있으며 데이터베이스 마이그레이션 서비스 프로젝트가 목록에 포함되어 있지 않습니다.

시도해 볼 수 있는 조치: 이 문제를 해결하려면 다음 중 하나를 시도해 보세요.

  • Google Cloud 콘솔에서 Private Service Connect로 이동합니다.

    Private Service Connect로 이동

    게시된 서비스 탭에서 서비스 첨부파일의 Database Migration Service 연결을 수락합니다 (대기 중인 경우).

  • 요청하는 프로젝트가 거부된 경우 서비스 연결의 허용 목록에 있는 프로젝트에 추가합니다.

    • Terraform에서 허용 목록에 추가된 프로젝트를 추가하는 방법에 관한 자세한 내용은 Terraform 문서를 참고하세요.

    • gcloud에서 허용 목록에 추가된 프로젝트를 추가하는 방법에 관한 자세한 내용은 gcloud 참조 문서를 참고하세요.

    그래도 문제가 해결되지 않으면 연결 프로필을 다시 만듭니다.

  • Private Service Connect 연결과 연결된 연결 프로필을 삭제하고 다시 만듭니다.