> 백엔드 개발 > Golang > '서버 서문이 수신되기 전에 연결이 닫힙니다.'로 인해 gRPC 연결이 실패하는 이유는 무엇입니까?

'서버 서문이 수신되기 전에 연결이 닫힙니다.'로 인해 gRPC 연결이 실패하는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-10 11:12:14
원래의
135명이 탐색했습니다.

Why Does My gRPC Connection Fail with

gRPC 오류 문제 해결: "서버 서문 수신 전에 연결이 닫혔습니다."

Docker에 배포된 Dgraph 서버에 gRPC 연결을 설정하고 설명서를 따르면 다음과 같은 문제가 발생할 수 있습니다. 다음 오류:

rpc error: code = Unavailable desc = connection closed before server preface received
로그인 후 복사

이 산발적인 오류는 Dgraph와의 통신을 방해할 수 있습니다. service.

근본 원인

이 오류의 일반적인 원인 중 하나는 서버의 TLS 구성과 클라이언트의 TLS 구성 부족 간의 불일치입니다. TLS가 활성화된 상태로 서버가 실행 중인 경우 클라이언트도 TLS를 사용하여 연결해야 합니다.

해결 방법

이 문제를 해결하려면 클라이언트 측에서 TLS 옵션을 올바르게 구성했는지 확인하세요.

import (
    "crypto/tls"
    "crypto/x509"
    "google.golang.org/grpc/credentials"
)

// Certificates and CAs used for TLS.
var (
    myCertificate = ...
    myCAPool      = ...
)

// DialWithTLS establishes a TLS-enabled gRPC connection.
func DialWithTLS(ctx context.Context, host string) (*grpc.ClientConn, error) {
    tlsConfig := &tls.Config{
        Certificates: []tls.Certificate{myCertificate},
        RootCAs:      myCAPool,
    }

    tlsOpt := grpc.WithTransportCredentials(credentials.NewTLS(tlsConfig))

    return grpc.DialContext(ctx, host, tlsOpt)
}
로그인 후 복사

gRPC 연결 설정 시 DialWithTLS를 사용하세요. 기능:

import (
    "context"
    "google.golang.org/grpc"
)

// NewClientWithTLS establishes a new gRPC client with TLS enabled.
func NewClientWithTLS(host string) (*dgo.Dgraph, error) {
    conn, err := DialWithTLS(context.Background(), host)
    if err != nil {
        return nil, err
    }

    return dgo.NewDgraphClient(api.NewDgraphClient(conn)), nil
}
로그인 후 복사

추가 고려 사항

TLS 잘못된 구성 외에도 일시적인 네트워크 문제로 인해 이 오류가 발생할 수 있습니다.

결론

이 수정 사항은 다음과 같습니다. 서버 서문을 받기 전에 연결이 종료되는 문제. 클라이언트 측에서 TLS 설정을 올바르게 구성하면 Dgraph 서버에 안정적이고 안전한 gRPC 연결을 설정할 수 있습니다.

위 내용은 '서버 서문이 수신되기 전에 연결이 닫힙니다.'로 인해 gRPC 연결이 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿