Documentation ¶
Overview ¶
Package grpc provides a Handler and client for agent gRPC connections.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var StatsCounters = []prometheus.CounterDefinition{ { Name: []string{"grpc", "client", "request", "count"}, Help: "Counts the number of gRPC requests made by the client agent to a Consul server.", }, { Name: []string{"grpc", "server", "request", "count"}, Help: "Counts the number of gRPC requests received by the server.", }, { Name: []string{"grpc", "client", "connection", "count"}, Help: "Counts the number of new gRPC connections opened by the client agent to a Consul server.", }, { Name: []string{"grpc", "server", "connection", "count"}, Help: "Counts the number of new gRPC connections received by the server.", }, { Name: []string{"grpc", "server", "stream", "count"}, Help: "Counts the number of new gRPC streams received by the server.", }, }
var StatsGauges = []prometheus.GaugeDefinition{ { Name: []string{"grpc", "server", "connections"}, Help: "Measures the number of active gRPC connections open on the server.", }, { Name: []string{"grpc", "client", "connections"}, Help: "Measures the number of active gRPC connections open from the client agent to any Consul servers.", }, { Name: []string{"grpc", "server", "streams"}, Help: "Measures the number of active gRPC streams handled by the server.", }, }
Functions ¶
This section is empty.
Types ¶
type ALPNWrapper ¶ added in v1.10.2
ALPNWrapper is a function that is used to wrap a non-TLS connection and returns an appropriate TLS connection or error. This taks a datacenter and node name as argument to configure the desired SNI value and the desired next proto for configuring ALPN.
type ClientConnPool ¶
type ClientConnPool struct {
// contains filtered or unexported fields
}
ClientConnPool creates and stores a connection for each datacenter.
func NewClientConnPool ¶
func NewClientConnPool(cfg ClientConnPoolConfig) *ClientConnPool
NewClientConnPool create new GRPC client pool to connect to servers using GRPC over RPC.
func (*ClientConnPool) ClientConn ¶
func (c *ClientConnPool) ClientConn(datacenter string) (*grpc.ClientConn, error)
ClientConn returns a grpc.ClientConn for the datacenter. If there are no existing connections in the pool, a new one will be created, stored in the pool, then returned.
func (*ClientConnPool) ClientConnLeader ¶ added in v1.11.0
func (c *ClientConnPool) ClientConnLeader() (*grpc.ClientConn, error)
TODO: godoc
func (*ClientConnPool) SetGatewayResolver ¶ added in v1.10.2
func (c *ClientConnPool) SetGatewayResolver(gatewayResolver func(string) string)
SetGatewayResolver is only to be called during setup before the pool is used.
type ClientConnPoolConfig ¶ added in v1.10.2
type ClientConnPoolConfig struct { // Servers is a reference for how to figure out how to dial any server. Servers ServerLocator // SrcAddr is the source address for outgoing connections. SrcAddr *net.TCPAddr // TLSWrapper is the specifics of wrapping a socket when doing an TYPE_BYTE+TLS // wrapped RPC request. TLSWrapper TLSWrapper // ALPNWrapper is the specifics of wrapping a socket when doing an ALPN+TLS // wrapped RPC request (typically only for wan federation via mesh // gateways). ALPNWrapper ALPNWrapper // UseTLSForDC is a function to determine if dialing a given datacenter // should use TLS. UseTLSForDC func(dc string) bool // DialingFromServer should be set to true if this connection pool is owned // by a consul server instance. DialingFromServer bool // DialingFromDatacenter is the datacenter of the consul agent using this // pool. DialingFromDatacenter string }
type Handler ¶
type Handler struct {
// contains filtered or unexported fields
}
Handler implements a handler for the rpc server listener, and the agent.Component interface for managing the lifecycle of the grpc.Server.
func NewHandler ¶
NewHandler returns a gRPC server that accepts connections from Handle(conn). The register function will be called with the grpc.Server to register gRPC services with the server.
type NoOpHandler ¶
type NoOpHandler struct {
Logger Logger
}
NoOpHandler implements the same methods as Handler, but performs no handling. It may be used in place of Handler to disable the grpc server.
func (NoOpHandler) Handle ¶
func (h NoOpHandler) Handle(conn net.Conn)
func (NoOpHandler) Run ¶
func (h NoOpHandler) Run() error
func (NoOpHandler) Shutdown ¶
func (h NoOpHandler) Shutdown() error
type ServerLocator ¶
type ServerLocator interface { // ServerForGlobalAddr returns server metadata for a server with the specified globally unique address. ServerForGlobalAddr(globalAddr string) (*metadata.Server, error) // Authority returns the target authority to use to dial the server. This is primarily // needed for testing multiple agents in parallel, because gRPC requires the // resolver to be registered globally. Authority() string }