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 중국어 웹사이트의 기타 관련 기사를 참조하세요!