diff --git a/config/envoyconfig/clusters.go b/config/envoyconfig/clusters.go index 273d075c4..1a04f6bbe 100644 --- a/config/envoyconfig/clusters.go +++ b/config/envoyconfig/clusters.go @@ -142,9 +142,13 @@ func (b *Builder) buildInternalCluster( ) (*envoy_config_cluster_v3.Cluster, error) { cluster := newDefaultEnvoyClusterConfig() cluster.DnsLookupFamily = config.GetEnvoyDNSLookupFamily(cfg.Options.DNSLookupFamily) + // Match the Go standard library default TCP keepalive settings. + const keepaliveTimeSeconds = 15 cluster.UpstreamConnectionOptions = &envoy_config_cluster_v3.UpstreamConnectionOptions{ - // Enable TCP keepalive with OS default settings. - TcpKeepalive: &envoy_config_core_v3.TcpKeepalive{}, + TcpKeepalive: &envoy_config_core_v3.TcpKeepalive{ + KeepaliveTime: wrapperspb.UInt32(keepaliveTimeSeconds), + KeepaliveInterval: wrapperspb.UInt32(keepaliveTimeSeconds), + }, } var endpoints []Endpoint for _, dst := range dsts { diff --git a/config/envoyconfig/testdata/clusters.json b/config/envoyconfig/testdata/clusters.json index f92dc3587..d9b2a82cc 100644 --- a/config/envoyconfig/testdata/clusters.json +++ b/config/envoyconfig/testdata/clusters.json @@ -62,7 +62,10 @@ } }, "upstreamConnectionOptions": { - "tcpKeepalive": {} + "tcpKeepalive": { + "keepaliveInterval": 15, + "keepaliveTime": 15 + } } }, { @@ -110,7 +113,10 @@ } }, "upstreamConnectionOptions": { - "tcpKeepalive": {} + "tcpKeepalive": { + "keepaliveInterval": 15, + "keepaliveTime": 15 + } } }, { @@ -158,7 +164,10 @@ } }, "upstreamConnectionOptions": { - "tcpKeepalive": {} + "tcpKeepalive": { + "keepaliveInterval": 15, + "keepaliveTime": 15 + } } }, { @@ -202,7 +211,10 @@ } }, "upstreamConnectionOptions": { - "tcpKeepalive": {} + "tcpKeepalive": { + "keepaliveInterval": 15, + "keepaliveTime": 15 + } } }, { @@ -246,7 +258,10 @@ } }, "upstreamConnectionOptions": { - "tcpKeepalive": {} + "tcpKeepalive": { + "keepaliveInterval": 15, + "keepaliveTime": 15 + } } }, {